Ask HN: Why does Java continue to dominate?
22 comments
Because world is different than bubble of HN/Lobsters/Silicon Valley ;)
Exactly this. It would seem from reading tech websites and blogs that Java is dead. However there is an extensive industry of people writing and maintaining Java applications.
You won't hear of some new sexy startup using Java, but there are companies who quietly go into business either using Java for their product or providing services with Java applications.
You won't hear of some new sexy startup using Java, but there are companies who quietly go into business either using Java for their product or providing services with Java applications.
Java is just finally recovering from the 2008 recession. Look at this graph[0] instead. You can see that Java is very slowly going down before 2008 but generally flat, then suddenly in 2008 it loses pace extremely quickly, only to then recover as the economy recovers.
Java is about as enterprisey as programming languages comes. When a recession hits a lot of organisations tighten their belts, and a lot of programming projects get put into "maintenance mode" for a few years (with programmers and managers often being laid off).
After the economy improves companies start paying for new feature development again, fix bugs that had been ignored, and in some cases migrate TO Java from something worse (You'd be surprised how old some large well-known corporation's internal software is, we're talking 1980s mainframe age).
We won't REALLY know if Java is gaining or losing pace for a few more years (assuming there isn't another recession due to Chinese-related market issues).
[0] http://www.tiobe.com/index.php/content/paperinfo/tpci/Java.h...
Java is about as enterprisey as programming languages comes. When a recession hits a lot of organisations tighten their belts, and a lot of programming projects get put into "maintenance mode" for a few years (with programmers and managers often being laid off).
After the economy improves companies start paying for new feature development again, fix bugs that had been ignored, and in some cases migrate TO Java from something worse (You'd be surprised how old some large well-known corporation's internal software is, we're talking 1980s mainframe age).
We won't REALLY know if Java is gaining or losing pace for a few more years (assuming there isn't another recession due to Chinese-related market issues).
[0] http://www.tiobe.com/index.php/content/paperinfo/tpci/Java.h...
Or it could be "Java" in "Java Virtual Machine".
Same question could have been asked about COBOL some years ago, and to a lesser extent still can be, I guess.
Basically, at least partly, this other answer by tumdum_ explains it:
https://news.ycombinator.com/user?id=tumdum_
To clarify a bit: Even if newer languages / other technologies have merits (and of course they sometimes / often do), enterprises who have invested a good amount on getting apps built using older technologies (which may well have been current / popular at the time) may have no good justification to pay the cost [1] redesign and rewrite apps just to move to newer tech. ROI, CYA, etc.
[1] That cost is not only of design and writing but also prior research and evaluation, and subsequent deployment and training, etc.
Basically, at least partly, this other answer by tumdum_ explains it:
https://news.ycombinator.com/user?id=tumdum_
To clarify a bit: Even if newer languages / other technologies have merits (and of course they sometimes / often do), enterprises who have invested a good amount on getting apps built using older technologies (which may well have been current / popular at the time) may have no good justification to pay the cost [1] redesign and rewrite apps just to move to newer tech. ROI, CYA, etc.
[1] That cost is not only of design and writing but also prior research and evaluation, and subsequent deployment and training, etc.
I'll never understand why people hate on Java. Writing in Java is nice and easy, debugging is easy and getting support online is easy.
1) It's very verbose. You pretty much NEED an IDE
2)Eclipse. I gave up on java a few years ago when it took 5 minutes for the IDE to open up and then would freeze up every few minutes. This was about 5 years ago now and I was using a laptop, so it's probably not an issue anymore but the memory lasts
2)Eclipse. I gave up on java a few years ago when it took 5 minutes for the IDE to open up and then would freeze up every few minutes. This was about 5 years ago now and I was using a laptop, so it's probably not an issue anymore but the memory lasts
Personally, I don't find it that verbose. It is more verbose than other languages but it all just makes sense.
I agree, older version of Eclipse on bad hardware is truly awful. Thankfully I am using a better machine now.
I agree, older version of Eclipse on bad hardware is truly awful. Thankfully I am using a better machine now.
Java was pretty terrible in the EJB 2.0, Java 1.4 era. I guess the current sentiment is at least partially a remnant from that era.
Lots of reasons:
1) Everyone knows it or has touched it. Walk down a street filled with developers and you'll run into many who know or have worked with Java.
2) Apache. Apache. Apache. The saying goes No one ever got fired for using Java / no one ever got fired for using apache. Most major apache projects and libraries are Java/JVM based and the Java interface provides the best way to interact with them. Don't underestimate the pull from Apache on language choice.
3) Libraries - people have spent millions of man hours developing libraries for Java/JVM languages that aren't replicated elsewhere. Odds are pretty good if you're looking for an open source library that does X someone wrote it for the JVM.
4) Legacy Systems. Java is the new COBOL. There are billions of lines of Java code in existence chugging away around the world. It's more expensive to overhaul and replace an entire code base than it is to find or train developers to work on it.
5) People are riffing on top of the JVM. Rather than fight it, all the new hot languages like Clojure, Scala, Groovy, etc. are building on top of the JVM and taking advantage of what it gives you under the hood and the fact that the JVM has a wide install base. This reduces the likelihood Java will die in many capacities since it's being pushed into a more key infrastructure role rather than outright replaced.
Edit: fixed spelling
1) Everyone knows it or has touched it. Walk down a street filled with developers and you'll run into many who know or have worked with Java.
2) Apache. Apache. Apache. The saying goes No one ever got fired for using Java / no one ever got fired for using apache. Most major apache projects and libraries are Java/JVM based and the Java interface provides the best way to interact with them. Don't underestimate the pull from Apache on language choice.
3) Libraries - people have spent millions of man hours developing libraries for Java/JVM languages that aren't replicated elsewhere. Odds are pretty good if you're looking for an open source library that does X someone wrote it for the JVM.
4) Legacy Systems. Java is the new COBOL. There are billions of lines of Java code in existence chugging away around the world. It's more expensive to overhaul and replace an entire code base than it is to find or train developers to work on it.
5) People are riffing on top of the JVM. Rather than fight it, all the new hot languages like Clojure, Scala, Groovy, etc. are building on top of the JVM and taking advantage of what it gives you under the hood and the fact that the JVM has a wide install base. This reduces the likelihood Java will die in many capacities since it's being pushed into a more key infrastructure role rather than outright replaced.
Edit: fixed spelling
Because it works for what people are doing. No need to be the coolest kid of the block.
Because choosing Java will almost never be a mistake, even if it isn't the most ideal language. The JVM(s) are fast(ish). So much open source code to grab and get productive on. Almost any developer you hire can be effective with it immediately, even if they've never used it before. Also, Android.
I've got only ever done one project in my career with it, and I found myself feeling "meh" about it, but I never hated it.
I've got only ever done one project in my career with it, and I found myself feeling "meh" about it, but I never hated it.
Enterprise has made a big investment in Java. Once you build out a significant code base in a language, you are less likely to throw it all out.
Also in the Enterprise space, Oracle is a dominant database, and they have made some strong features for Java when it comes to the Oracle database. Having these features and someone you can call for support is good business and good risk protection for larger companies.
Also in the Enterprise space, Oracle is a dominant database, and they have made some strong features for Java when it comes to the Oracle database. Having these features and someone you can call for support is good business and good risk protection for larger companies.
I guess hearing the tech press, various blogs, etc. it seemed like many Java shops were jumping ship to the greener pastures of languages like Clojure, Kotlin, etc. Actual practice, apparently doesn't always follow the aforementioned sources. :)
They are. Kind of. You are just underestimating the scale of Java.
There are millions of Java devs. If 1% of them move to a better JVM language that's 10,000+ programmers who have moved. That is a lot of developers jumping ship.
In addition, by jumping ship they really mean starting new development in another language... They aren't rewriting their millions of lines of Java code. So they still maintain this code and as such would still be flagged as Java programmers.
There are millions of Java devs. If 1% of them move to a better JVM language that's 10,000+ programmers who have moved. That is a lot of developers jumping ship.
In addition, by jumping ship they really mean starting new development in another language... They aren't rewriting their millions of lines of Java code. So they still maintain this code and as such would still be flagged as Java programmers.
Wouldn't the rise of Android have something to do with this?
The TIOBE rankings aren't to be trusted. Just click on Groovy to see its history graph - it went from #82 to #17 in a mere 12 months.
The last time Groovy made the top 20, it hit #18 in Oct 2013, but 3 months later (Jan 2014), had dropped back out of the top 50 (#32 in Nov, #46 in Dec). TIOBE said the following month "The data is produced by one of the sites that we track is interpreted incorrectly by our algorithms. After we fixed this bug, Groovy lost much of its ratings." [1] Just before that fix happened, interviews with the current Apache spokesperson for Groovy (Guillaume Laforge) promoting Groovy's top 20 position were published in 5 online rags (www.infoworld.com, www.eweek.com, cacm.acm.org, jaxenter.com, and glaforge.appspot.com), and all of them quickly appeared in Google's top 30 search results for "groovy programming" and remained there for 6 to 18 months afterwards. I'm guessing the same feedback effect was engineered again before the end of last month (Jan 2016), and Groovy will again start losing its new top 20 ranking.
This rapid rise then fall also happened with Groovy in December 2010. Groovy began a sudden rise from outside the top 50 when Groovy tech lead Jochen Theodorou "volunteered" his services to Tiobe in late 2010 to help them improve their algorithms. Than in April 2011, Groovy fell from #25 to #65 on Tiobe in a single month after they increased the number of search engines they monitor.
These fleeting peaks for Groovy in the TIOBE rankings (#25 in Apr 2011, #18 in Oct 2013, #17 in Jan 2016) between its usual ranking of somewhere between #51 and #100 (e.g. #82 only 12 months ago) are a bad thing for Groovy because of damage to its reputation as a solid language suitable for long-term IT solutions. Such ranking volatility gives off the stench of search engine optimization, a smoke-and-mirrors marketing tactic intended to benefit a single stake-holder, probably the person who privately owns the groovy-lang.org DNS domain.
[1] http://www.infoworld.com/t/application-development/c-pulls-a...
The last time Groovy made the top 20, it hit #18 in Oct 2013, but 3 months later (Jan 2014), had dropped back out of the top 50 (#32 in Nov, #46 in Dec). TIOBE said the following month "The data is produced by one of the sites that we track is interpreted incorrectly by our algorithms. After we fixed this bug, Groovy lost much of its ratings." [1] Just before that fix happened, interviews with the current Apache spokesperson for Groovy (Guillaume Laforge) promoting Groovy's top 20 position were published in 5 online rags (www.infoworld.com, www.eweek.com, cacm.acm.org, jaxenter.com, and glaforge.appspot.com), and all of them quickly appeared in Google's top 30 search results for "groovy programming" and remained there for 6 to 18 months afterwards. I'm guessing the same feedback effect was engineered again before the end of last month (Jan 2016), and Groovy will again start losing its new top 20 ranking.
This rapid rise then fall also happened with Groovy in December 2010. Groovy began a sudden rise from outside the top 50 when Groovy tech lead Jochen Theodorou "volunteered" his services to Tiobe in late 2010 to help them improve their algorithms. Than in April 2011, Groovy fell from #25 to #65 on Tiobe in a single month after they increased the number of search engines they monitor.
These fleeting peaks for Groovy in the TIOBE rankings (#25 in Apr 2011, #18 in Oct 2013, #17 in Jan 2016) between its usual ranking of somewhere between #51 and #100 (e.g. #82 only 12 months ago) are a bad thing for Groovy because of damage to its reputation as a solid language suitable for long-term IT solutions. Such ranking volatility gives off the stench of search engine optimization, a smoke-and-mirrors marketing tactic intended to benefit a single stake-holder, probably the person who privately owns the groovy-lang.org DNS domain.
[1] http://www.infoworld.com/t/application-development/c-pulls-a...
Do you have an alternative ranking you prefer?
Keep in mind that many of these jvm languages allow you to use java code. So many of these languages are using the newer language and java so it won't drop off and instead should continue to increase
Never ever use or trust TIOBE
[1] http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Edit: correct spelling