Hacker News new | ask | show | jobs
by Teef 5324 days ago
Java is entrenched for the same reason the Cobal on mainframes it won the enterprise mindshare battle. By in large this has more to do with how these types of business function than anything else. Business work best if they have predictable cost based on revenue. So for custom software they need X amount of work then the business can hire Y developers. If a factory needs to make X more widgets it can hire Y more factory workers. There is a lot of evidence to point that software does not fit this pattern however this gets withing a few managers up the chain. Startups and valley companies handle this better because they focus on this at the core. I will make some points about the Java / JVM that I have found working with it for the last 14 years:

* The JVM is fast compared to VBScript type languages and slow compared to language that use C libraries (Python). There are benchmarks about how JVM is very fast at crunching numbers however in practice I have written very little code that is math I tend to use a library (math libraries written in C/Fortran). Most applications are moving bits around and are thus IO bound and so languages that can quickly be modified to use better caching or more complex data access algorithms will perform better. Enterprise web apps that use Java and are fast are the exception not the rule.

* JVM is a memory hog. Now this could be blamed on all the dependencies but even writing a very simple JSON web service is going to cost you a lot of memory. This makes compilation slow and development slow.

* Dependency management is a mess. Maven is helpful but is exceptionally slow with just a few dependencies.

* Multithreaded Java has never been as robust or fast as multiprocess applications I have see run in other languages. I have seen robust multiprocess Java applications but they tended to run per node because of memory usage and performance. I would say I am above average developer and have written and rewritten a good amount of thread code and the more I do the more I am convinced it is a horrible concurrency model for non super human developers.

PHP may make some inroads over time since it has a good base of people that can be hired. However I see it mostly to be used as an outsourcing tool when a project need to get done quickly. This is just my experience over the last 14 years so YMMV.