Over the past few weeks there have been a number of posts on DZone debating whether Java is dead or not - it's as if this becomes a seasonal debate. I was quite pleased to see the latest results from the TIOBE Programming Community Index, which gives some credible metrics to those of you who tend to believe that Java is far from dead.
Just as it was this time last year, Java remains on top with over 19% while C remains in second place about 2.5% behind. An interesting trend that I noticed here was that the amount that Java slipped since 2008 is the amount that C has gained. I suppose it's no surprise that both these languages are at the top of the list - they're fundamental to a lot of development over the past 10 years.
I'm not surprised to see Java continuing to do so well on this list, and here I will outline my reasons for it's prominence in the index.
The Virtual Machine
With the possibility to run other languages on top of the JVM itself,
developers get the best of both worlds - Scripting, and plain old
Java. This ensures that the Java platform continues to have a future in
the changing development landscape, with support for popular scripting
languages such as JRuby, Jython, Groovy and Scala.
Community
One of the things that has always struck me abotu Java is the
helpfulness and sheer size of it's developer community. It's the same
for a lot of other languages of course, but it's comforting that when
you hit a problem you can just do a search on Google and you'll find
the answer to your problems.
A Rich History
Java appeared on the software development scene at the perfect time,
and from there it gained a continued momentum. Even though these days
there's a shift in focus to other languages and DSLs, the rich history
of Java, from Swing to JavaEE to JavaME means that it will always have
it's place. There is a huge amount of libraries, frameworks and
utilities that mean development is sometimes as easy as putting the
pieces together. And because there is so much experience with Java,
developers have the choice of extemely useful IDEs such as Netbeans,
Eclipse and IntelliJ. The investment that companies and the community
at large have made into Java puts it ahead of other language options.
Take all these factors into account and it's no surprise that companies and developers rely so much on Java, and why this isn't likely to change anytime soon.









Comments
Andrew McVeigh replied on Wed, 2009/10/14 - 6:35am
Erik Post replied on Wed, 2009/10/14 - 6:41am
Good points, though I don't think anyone's seriously contesting java's current relevance, or that of the JVM. On the oher hand, I think most of us would agree that Java is falling behind on the language front, compared to C# for example. Pointing at the figures does not change this fact, just ask any COBOL programmer. Furthermore, things like Ruby on Rails don't exactly warrant the lack of innovation in Java-the-language either, if you ask me.
James Sugrue replied on Wed, 2009/10/14 - 6:48am
in response to:
Andrew McVeigh
James Sugrue replied on Wed, 2009/10/14 - 6:50am
in response to:
Erik Post
Thanks for the comment. I might be the only one here who thinks so, but I'm not sure if Java is really falling behind on the language front. I've yet to see a problem that I couldn't solve with Java as it is, and with the libraries available. I'm definitely missing the examples and cases here that highlight what people need that Java doesn't have - and would appreciate it if anyone could give examples.
Simon Martinelli replied on Wed, 2009/10/14 - 7:10am
Ricky Clarkson replied on Wed, 2009/10/14 - 7:13am
What makes you think Scala is a scripting language?
Java the language is dead, the VM continues to innovate. What reason is there to start a new project in Java?
Chris Kent replied on Wed, 2009/10/14 - 8:24am
in response to:
James Sugrue
It's not that Java can't solve problems, it's that other languages can solve them more easily, with less code or more elegantly. After all, you could probably solve most problems with COBOL too. I solve problems with Java every day but I could solve them with much less boilerplate if I were using Scala and had closures, a more powerful type system. Or with metaprogramming if I were using Ruby. Or macros if I were using Clojure. And I'm sure there are equally compelling arguments for Groovy, Python and probably C# too.
I think Paul Graham's Blub Paradox explains why so many Java progammers don't see the need for language changes.
http://www.paulgraham.com/avg.html
Stability in a programming language is a good thing, particularly when it's so widely used. But too much stability leads to stagnation and unfortunately I think that's where Java is heading because of Sun's lack of courage and design-by-committee approach.
Andrew Arrigoni replied on Wed, 2009/10/14 - 8:30am
in response to:
Ricky Clarkson
@Ricky Clarkson
A large, existing developer base. Sure, Java doesn't have a lot of the new syntactical sugar that Groovy does and it doesn't have the programming paradigm that Scala does. Yet, when management looks at the eco-system, they will see lots and lots of Java developers and only so many Scala developers.
Of course, myself, I find myself trying to move towards Groovy as the fun factor of Closures has gripped me tightly. :)
Kevin Daly replied on Wed, 2009/10/14 - 8:51am
People seem to forget that Java is a platform as much as it is a language. I think that the ecosystem around the JVM is fine, Java / Scala / Groovy / JRuby etc etc. The Java relevance question is somewhat silly, as well as all the people crying that "Java is falling behind C#".
I think that the solution to all this angst is to leave the Java programming language mostly alone and those that want the productivity of the newer features can use Groovy or Scala. With Netbeans, you can mix and match Groovy and Java with complete transparancy, so use Groovy when you want all of the newer language features.
Shaw Gar replied on Wed, 2009/10/14 - 10:30am
Java is very popular in products industry. I don't mean just the products we see built with in Java ecosystem. Let's take the example of data warehouse. I have seen few products built up on Java, because of its strengths such as standard Data Access technology, stable JVM, and can run on a any platform. I have seen UI built using both Swing as well as Eclipse.
If we take large applications that typically have to interact with disparate data sources, then Java is probably the only sensible choice you can make today.
However, if we reach the area of data driven web application, that is where Java begins to loose the advantages. You need speed, and quick solution with changing requirements. Frameworks like Spring and Hibernate have reduced that pain, but still it's way more complicated than what I can build with .NET.
In the realm of day to day web applications, tools that are not built with an aim of say 5 + years life span, scenario's that don't necessarily require considerations of enterprise integration etc, that's where Java starts looking increasingly irrelevant.
I think Java will continue to be language of choice in product, enterprise needs and steadily loose out in typical web application segments.
One must note that Stability, performance come at the cost of something. In this case we are paying for lack of features in the language. But, still Java solves a lot of other problems in the problem domain it is most sought compared to any other competing implementations.
JeffS replied on Wed, 2009/10/14 - 11:20am
"Java the language is dead"
hmmm ....
When I do job searches on Dice, Monster, Indeed, and the like, I see endless listings of "Java", and almost zero on Scala, Groovy, JRuby, etc.
Sorry, but the proof is in the pudding.
The people who say "Java (the language) is dead" are those that have Closures/lamdas/functional/delegates/dynamic typing ... envy. These people think they need those things, otherwise they can't get their work done. While those things are nice, they're not the be all to end all. I personally like those things in C#, but in practice, not many .Net devs seem to fully use things like lamdas or delegates or Linq. Anyway, you can't under estimate the value of stability, extensibility, and maintainability, that Java's relatively conservative nature brings about. The real world proves this over and over again.
Edgar Sánchez replied on Wed, 2009/10/14 - 11:47am
in response to:
James Sugrue
John J. Franey replied on Wed, 2009/10/14 - 12:11pm
The matter of debate isn't whether java is dead or relevant. Under debate is the meaning of 'dead' and 'relevant' as they might apply to a programming language. I see above several distinct interpretations of 'dead' and 'relevant'. How foolish it is for programmers, developers and architects to opinionate using such ambiguous terms. Aren't we usually much more precise? Even my comment is a time-waster.
Guido Amabili replied on Wed, 2009/10/14 - 12:27pm
in response to:
Ricky Clarkson
Why not use java and use what instead ?
I like the tools I can use to write java code (NetBeans, the best IDE ever made)
Guido
Shaw Gar replied on Wed, 2009/10/14 - 12:34pm
in response to:
Guido Amabili
Guido Amabili replied on Wed, 2009/10/14 - 1:29pm
in response to:
Shaw Gar
C'mon, that's not fanboyism, it's simply called truth ;-)
Guido
Mark Haniford replied on Wed, 2009/10/14 - 3:41pm
Alexander Shirkov replied on Thu, 2009/10/15 - 2:34am
in response to:
Mark Haniford
Good luck in refactoring with notepad (; Of course, it's "oldschool", but counterproductive.
BTW Java is not dead - that's fact. Go and make job search and you'll see, that it's very fresh and shiny. Sun already mentioned, why they don't want to introduce closures and all these dynamic bells&whistles. I like groovy, but it's not for realtime applications. Performance of most dynamic languages is very poor. Java is not only web - there's very thick layer of middleware applications, which never sees light of browser. Don't transfer your wishes to reality. Long live Java!
Shaw Gar replied on Thu, 2009/10/15 - 4:48am
in response to:
Mark Haniford
Jeroen Wenting replied on Thu, 2009/10/15 - 6:12am
I'veen using Java professionally since 1997 and even before that there were consistent rumbles that "Java is dead" in trade press and on bulletin boards and websites. Usually the intigators are fans of some other language taking a hit from Java and wanting to undermine its acceptance, or (ever more) people who want their favourite feature from some other language included in Java "to save it" (especially true since Sun has shown a high level of willingness to do such things over the last several years).
In my experience Java is far from that. It may not be growing much in acceptance, but given its position as the market leader and almost automatic tool of choice for enterprise applications that's hardly surprising, there's very little it can grow because it already is everywhere that counts. In fact, what is surprising is that even over a decade (14 years now almost) after its launch nothing has managed to seriously challenge it. PHP has been mentioned but is hardly a contender. Its main market is as a competitor to Perl and VB/ASP for small to medium sized applications. Ruby and Python are nice for rapid scripting, but again can't replace a real programming environment and are more useful for writing launchers and small command line tools. Scala is a fringe player for some fanatical Java haters stuck in a Java environmnent and those whose interest is purely academic. Nothing else is even worth mentioning.
Guido Amabili replied on Thu, 2009/10/15 - 8:44am
in response to:
Shaw Gar
Totally agree, but I prefer the Mac version of Notepad.
Back to the topic of the post...
Guuido
Mark Haniford replied on Thu, 2009/10/15 - 11:03am
in response to:
Jeroen Wenting
PHP has been mentioned but is hardly a contender. Its main market is as a competitor to Perl and VB/ASP for small to medium sized applications
Unfortunately, it's a contender and dominating for everything except that top 1% large-scale enterprise apps.
Armin Ehrenreich replied on Thu, 2009/10/15 - 11:27am
Mark Haniford replied on Fri, 2009/10/16 - 8:17pm
Not quite a functional language with advanced features! So maybe it is not about having as many features from other languages as possible but about being a clear and simple language with code that is easy to maintain by many people.
PHP is far from being clear. But being dynamic sets it apart from Java in that (1) it's a bit more simple when the web crowd doesn't have to think about types as much and (2) you can do dynamic things like create dynamic function calls.
Rainer Eschen replied on Sat, 2009/10/17 - 1:12am
The success of PHP is based on the lack of Java support by the ISPs over the last decade. Even today a simple Tomcat environment is not the rule.
Nevertheless, PHP 5 and above show that they can compete with Java. Typo3, Magento, WordPress, etc. show that the 80% rule already works. The Typo3 guys are working on a framework that is comparable to Spring DI. So, it is a matter of time when we have the 90% rule.
If you have a look at the change in enterprise development with Spring in the center, so that a simple Tomcat can still rock, we can expect PHP and Java will converge. Java gets simpler and let us produce faster results, PHP gets more rock-solid. Both already have in common that the quality of architecture and design are the most important part for the result.
A lot of PHP projects are still fast hacks, but this does not prove that PHP is worser than Java. I wouldn't choose Java in every case these days. Java still needs a longtime project investment to be worth the efforts.