3 ms·
> Java, Kotlin, Ceylon, Scala, OCaml-Java Other than java, none of those languages are widely used. It seems business have an adversity to languages that are n
by notzorbo3 11y ago
> Java, Kotlin, Ceylon, Scala, OCaml-Java
Other than java, none of those languages are widely used. It seems business have an adversity to languages that are not "popular". So however much I'd like to write in Scala, our customers are not going to approve that.
> JRuby, Jython
Again, fringe languages. Python and ruby are great because of the large amount of packages available. Are those gonna run on Jython or jruby? It's hard to find out, so writing a project in Jruby or jython is a huge risk for me as a developer. ("Sorry, sqlalchemy contains C code").
> Deployment is simple
Hardly. Java is almost an OS in itself. It basically reinvents everything. Scheduling, memory management, logging, monitoring, init systems, etc. I've found that java apps require constant fiddling with settings. Other languages... just run.
> There is a lot of high-quality open source libraries.
True, but that's just as true for many other languages.
> greater memory usage
The JVM doesn't actually use up all that much more memory than, say, a Python program. Basic "hello world" in Python running on Cherrypy already takes up 800mb. The bigger problem is the JVM's rather static memory allocation.
> What are the technical and the nontechnical reasons behind this?
A little background: my experience with Java / the JVM is purely from a systems adminstration point of view. I don't develop in Java or for the JVM.
The reason for me is the obfuscated nature of java projects. It's all very... enterprisey. Hundreds of XML configuration files, toggles switches and knobs to tweak everywhere. I strongly believe in KISS, and Java/JVM is about as far away from KISS as you can get. I'm pretty sure it's great if you're following old-school waterfall "design upfront, then implement" projects like many big companies do (which I don't think is wrong at all). But when it comes to bootstrapping a project: no thanks.
- codeduck 11y agoA small nitpick, but: > Hundreds of XML configuration files is a byproduct of the frameworks, not the JVM itself. Enterprise Java swallowed the XML kool-aid in a big and horrible way.
- davelnewton 11y ago(And if there are hundreds that you actually need to pay attention to, you probably did something wrong. Even in its heyday, XML proliferation like that is unusual and suspect.)
- davelnewton 11y agoJava's memory/object allocation/instantiation is quite good.
- nickjj 11y agoNot really sure about the JVM's tuned memory usage but for web applications, you likely won't come near 800MB with Python. For example a Flask project that I worked on had about 30 top level packages, and the entire web server used 55MB of RAM running with 1 gunicorn worker.
- notzorbo3 11y agoIt's Cherrypy that sucks up memory like there's no tomorrow. Not sure why. Thing is, you can run the JVM on a lot less than the default settings. JVM isn't nearly as memory hungry as people think. It's just all the enterprise crap you get with frameworks such as jboss makes it bloated. But the same thing is true for Python. Try running OpenERP on anything less than 10gb.