Live data from Hacker News

Ask HN: Why do big companies tend to only build with Java?

news.ycombinator.com

51–57 of 57 posts

Re: Ask HN: Why do big companies tend to only build with Java?

#51
Many many reasons:

* Compatibility with installed base of existing code - Java is so prevalent on the server side that this is often a critical requirement

* Performance - The JVM is an amazing platform with excellent JIT compilation, very efficient garbage collection, great for concurrency etc.

* Huge library ecosystem, second to none. Most of the ecosystem is open source and if you choose your libraries and frameworks appropriately (i.e. anything but J2EE!) then you can be pretty much as agile as any other language.

* Major corporate backing (IBM, Oracle, Google, Red Hat). There's enough diversity in the supplier ecosystem that you don't need to worry about vendor lock-in too much (e.g. competing app servers).

* Java is more open and cross platform than the only credible alternative (.Net) - From a CIO perspective .Net is effectively vendor lock-in to a Microsoft stack.

* Great availability of "good enough" developers. There are also plenty of rockstars in the Java world if you look hard enough.

* Maintainable code. Java's relatively simple and concise syntax actually makes it quite easy to maintain with the medium-skill developers that most corporates have.

* It's not Java per se., but the innovation happening in the new JVM languages (especially Scala and Clojure) actually puts the JVM pretty right at the cutting edge of language development.

Note that a lot of the above reasons make Java a good choice for startup companies too, especially if you pick one of the new languages and go for "Java the platform" rather than "Java the language".

Re: Ask HN: Why do big companies tend to only build with Java?

#52
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.

Re: Ask HN: Why do big companies tend to only build with Java?

#53
post #29
post #15

Most of these answers don't seem to be written by anyone actually involved in "enterprise" development. Here are our simple reasons: * The JVM is fast. * The JVM can take proper advantage of multiple cores directly (no GIL). * The JVM is efficient compared to other runtimes. * Java is type-safe. * There's a library for everything , and libraries are generally well-documented, unit-tested, and provide stable releases…

I'm excitedly curious about when this bullet point has come up as a selling point for the JVM in "enterprise" development: * There are a number of alternative languages to choose from that can interoperate on the JVM (Scala, Clojure, JRuby, ...)

Not all JVM languages are created equal (JRuby and to a lesser extent Clojure) are no way near Java in terms of performance on the JVM

Re: Ask HN: Why do big companies tend to only build with Java?

#54
post #10

Statically typed languages are favoured when you're working on a team with 40 other developers and you want the idiotic changes being made 5 desks over to break before they check in, not after you've pulled their changes. Autocomplete also makes life staggeringly easier, as do strong refactoring tools. Not having to deal with memory management is also a big plus. When you put those requirements together you end up wi…

On the other hand, maybe you wouldn't need 40 developers on the project if you weren't building it in Java...

Obviously, every Java project with hundreds of thousands lines of code can be written by 2 developers in Ruby in a weekend ;)

Re: Ask HN: Why do big companies tend to only build with Java?

#55
post #29

Earlier quoted context omitted.

I'm excitedly curious about when this bullet point has come up as a selling point for the JVM in "enterprise" development: * There are a number of alternative languages to choose from that can interoperate on the JVM (Scala, Clojure, JRuby, ...)

Not all JVM languages are created equal (JRuby and to a lesser extent Clojure) are no way near Java in terms of performance on the JVM

Kawa Scheme is near Java: http://per.bothner.com/blog/2010/Kawa-in-shootout/

Re: Ask HN: Why do big companies tend to only build with Java?

#56

You can do rapid development with Java--it's less a condemnation of the technology and more the process that happens in big companies. I've worked on contract in large and small companies, and the amount of paperwork to go through in large companies is ASTOUNDING. For example, we once had to get a test account created in the test domain (not even production). It took 23 emails, 4 IT requests, and 6 hours to complete-…

The last time I played with Java server technologies, I found the edit debug redeploy cycle to be ridiculously long. What is the start of the art nowadays?

Re: Ask HN: Why do big companies tend to only build with Java?

#57

1) Corporations don't understand IT. To them it's a cost center, not an enabler. So to minimize costs they must find developers that are (a) easily replaceable (b) cheap to hire 2) Sun did a great job marketing Java in the late 90s and early 2000s. So corporate managers felt safe adopting Java; it was the "in" thing. And as kls said, corporations have a lot of inertia. Why break something when it's working? (It's due…

    Corporations don't understand IT
I wouldn't be so dismissive. The people are pretty smart and switched on. Their choices are driven by different priorities though.
Post reply on HN