Channels ▼
RSS

JVM Languages

If Java Is Dying, It Sure Looks Awfully Healthy


A recurring prejudice in the forums where the cool kids hang out (Hacker News, Reddit, etc.) is against Java, the language. The oft-repeated sentiments are that Java is verbose and fading in popularity. While I accept the first descriptor, I can find little evidence to support the latter.

Java certainly can be verbose. Until a year and a half ago, when Java 7 came out, a simple task such as writing to a file required a lengthy multi-step process, laden with "ceremony." In response to this pervasive wordiness, there sprang up several scripting languages, which were purpose-designed to spare developers from long syntactical passages to communicate a simple action: NetRexx, Groovy, Scala, and others. I'm a fan of Groovy and use it in my own projects, but mostly for the additional capabilities it provides (optional typing, closures, method injection, metaprogramming, and so on) rather than its concision.

Even with the advent of Java 7, some developers legitimately point to long class and method names, such as MethodExpressionValueChangeListener as being tiresome to type and difficult to remember. However, I think it's well-nigh impossible to develop a language and libraries that make up the primary platform for enterprise computing without have occasionally long, descriptive names such as this. Personally, I prefer long and descriptive to short and opaque, such as strstr() in the C standard library. Concision is not always a blessing. Wordiness notwithstanding, Java could certainly reduce the amount of ceremony it needs for many tasks.

But when it comes to Java being in some kind of long-term decline, I see little supporting evidence. The recent JavaOne show, that annual jamboree of Java coders, was clearly larger and better attended than it has been in either of the last two years. Vendors on the exhibiting floor with whom I spoke were unanimous (truly not a single exception) in saying that traffic, leads, and inquiries were up significantly over last year, which itself was better than the year before. Normally, when technologies start their ultimate decline, tradeshows are the first to reflect the disintegrating community: Vendors don't want to pay to be at a show with shrinking attendance and developers who are not required to attend start spending their travel budget on other more relevant events. Invariably, there comes a time when a tradeshow/conference feels like a tomb — the sure sign that the final death spiral is imminent.

Technically, the language continues to advance. As I mentioned, Java 7 was an important release both at the language and JVM levels, and Java 8, which is expected in March, looks equally promising. Features for Java 9 have already been announced and are targeted for 2016. Unlike Sun at the end of its custodianship of Java, Oracle has stuck to its goal of issuing a new major release of Java every 24–30 months. Java 8 will add closures (that is, lambda expressions). Closures reduce code, diminish the need for anonymous inner classes, and facilitate functional-like coding. Greater modularity (which will be complete in Java 9) will help efficient management of artifacts, as will several enhancements that simplify syntax in that release.

JavaFX continues to advance and is significantly easier to program for than Swing. This attention to the UX is an opportunity for growth that might well develop more than presently expected. Oracle is acutely aware of Java's role on small devices. (According to the company, some 3-billion handheld devices run Java today.) It has integrated the former JavaME with the Java SE edition and it is actively developing Java for the upcoming wave of small implementations known as the Internet of Things (IoT). As Eric Bruno's blog post on the IoT explains, an entire project to monitor attendance of classes at JavaOne, from the cameras to the back-end real-time analytics,was written in Java. Not many platforms and languages offer a range so wide they can run on small devices and support massive enterprise systems.

When you add in the Android ecosystem, whose native development language is Java, it becomes very difficult to see how a language so widely used in so many areas — server, Web, desktop, mobile devices — is in some kind of decline.

The good health of the ecosystem is even more evident if we look at the JVM. This, too, has continued to advance with each major release of the language. The addition of the new bytecodes, including invokedynamic, in Java 7 demonstrated how well the JVM works. When the JVM implementation of Ruby, JRuby, added native support for this instruction, its performance zoomed past the C-based Ruby VM, which for years has been the Ruby reference platform. As JRuby's performance continues to pull ahead, I fully expect it to become the reference implementation. Certainly, it will become the vehicle by which most organization first try out Ruby.

I attended the recent SpringOne 2GX conference by the No Fluff Just Stuff folks, and it was evident how active (even if quiet) the Groovy community is. VMware/Pivotal continues to rely on Groovy and Grails and both the language and framework benefit from constant investment. I'll avoid going through the other major JVM languages, but simply point out that the most popular Lisp implementation today is Clojure, which runs on the JVM — and was unknown three years ago.

On GitHub, which is the mecca for hip projects these days, Java was in the #3 slot both last year and this year as the language of choice for projects. (Its position there below JavaScript and Ruby is somewhat historical: gitHub was originally a primarily Ruby repository.) On the controversial Tiobe index, Java retains its overall #2 place, behind C. (C and Java have gone back and forth for the top two spots since 2002). And on Ohloh, the biggest portal to stats on the open-source community, Java retains the same percentage of total commits that it has enjoyed for the last seven years.

So, what I'm seeing is a language that is under constant refinement and development, with a large and very active community, which enjoys a platform that is widely used for new languages. None of this looks to me like a language in decline.

— Andrew Binstock
Editor in Chief
alb@drdobbs.com
Twitter: platypusguy

Follow-up Discussion

1000 Responses to Java Is Not Dying


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 

Comments:

ubm_techweb_disqus_sso_-02a65a22c35ad5b6b7eea21c385fd910
2013-10-16T08:40:31

I, and many of my embedded programming peers, program in C. We have done for years. Firmware design is just as possible in C as it is in Java or Python. What's the big rush for Java to die? Does someone win a prize if it does?


Permalink
ubm_techweb_disqus_sso_-9833251ed247c245b120f607457504a9
2013-10-15T22:02:15

I'd like to see the same article posted with 'java' replaced with 'C++'.


Permalink
ubm_techweb_disqus_sso_-2501ca74907c059f7652710276d69965
2013-10-11T08:45:55

Good article thanks for that. I'm currently a C++ programmer thinking about switching to Java and there are about literally 10 times more jobs being advertised for Java than C++ in Sydney at the moment.

These stats seem to back you up: http://www.tiobe.com/index.php...


Permalink
ubm_techweb_disqus_sso_-b8d55b7aeee8ce82bc999595ca443fd3
2013-10-11T00:58:26

No doubt, LLVM is coming on strong and may well be the better answer, but that doesn't seem to have slowed interest in building languages on the JVM. Also, companies tend towards favoring software that has paid support so that they have "one throat to choke" to get things fixed. Quite often the business drives technology decisions more than the technologists. :-/


Permalink
ubm_techweb_disqus_sso_-03f7cfc46738ae7a778b5405aec93d12
2013-10-10T22:48:01
would contend that the explosion of languages that run on the JVM is definitely thriving.


LLVM is the new kid on the block. JVM was chosen for its JITter to improve performance of otherwise slower interpreters. LLVM can do this better, while at the same time does not force end customers of the download Oracle's Java Adware.


Permalink
AndrewBinstock
2013-10-10T20:55:05

"Would you care to place a bet on JRuby becoming the 'reference implementation' in, say, the next 5 years?"
I would. Let me be clear about what I mean. I think that most sites that adopt Ruby will do so by adopting JRuby. So, reference platform, in my sense, is the platform on which most people use Ruby. Whether Matz makes language changes there or on the current reference platform is not what I have in mind or care to bet on. If that fits your definition, then yes, I'll bet the price of a beer. And if you're anywhere on the peninsula in the Bay Area on or after Oct 10, 2018 and you won the bet, I will fulfill the obligation in person. Otherwise, I'll have to fulfill it remotely. Cheers!


Permalink
ubm_techweb_disqus_sso_-b8d55b7aeee8ce82bc999595ca443fd3
2013-10-10T18:19:27

Having heard the same thing about COBOL, C, etc., I tend to write it off as another invalid meme. Regardless, I tend to think of Java (the language) as a separate from Java (the platform, i.e., JVM), and would contend that the explosion of languages that run on the JVM is definitely thriving.

One of the issues that I've had with Java (the language) is, as you note, its verbosity. While supporters claim that this characteristic makes the code self-documenting (which is another fallacy in many cases), it also introduces mental friction due to the time and effort required to type long names (even for rapid touch typists). A case of "Too Long; Didn't Read" in action for a lot of people. The naming conventions (or ceremony as you put it) seem to be a contrived workaround to account for the appearance that most coders are not terribly good at properly commenting the code or their code check-ins.

It is also quite common to try to judge the popularity of a language by the amount of noise surrounding it. In general, the "cool kids" are early adopters and take advantage of the numerous social media outlets to crow about the superiority of the latest cool new language. However, most business will not change their development languages based on that sentiment. In addition, most businesses are painfully slow to adopt new technologies, especially in business critical applications and systems.

Other folks will note their distrust of Oracle, and I concede that at some point I suspect Oracle will start charging some fee for its JVM (Larry doesn't do free). However, one does have to wonder whether it is the enterprise/business people speaking (who generally welcome a large corporation's ownership for the support contracts and SLAs) or the developers (OSS or otherwise) who are voicing that concern. In any case, it may be somewhat irrelevant.

To summarize, I agree that neither Java (the language) nor Java (the platform) are dying, and like COBOL, will likely be around for the foreseeable future due to the costs associated with migrating working production applications and systems to a new language just because it has become the language du jour.


Permalink
ubm_techweb_disqus_sso_-69585774ecc5f79aa515c2bb4ad0c457
2013-10-10T14:16:28

IMHO, Java has killed SUN, and it will kill oracle next. The .net CLR and Csharp is ruining MS. They insert a unnecessary layer between the innovator (the developer) and the machine; in the name of simplifying things or cross platforming things, neither which are real competitive advantages for the innovator. The innovator uses what he gets the most bang( performance, elegance in UX) for the buck(time) out of: java is a jack of all trades and a master of none.


Permalink
ubm_techweb_disqus_sso_-0cd02431100cced55cb6ba2793570183
2013-10-10T05:43:47

Easy.

On iOS all SDK supported languages have native code implementations.

Starting with WP 8, all supported languages have native code implementations, even .NET gets compiled to native code when uploaded to the Windows Store.

In Android, Java is frozen in Java 6, and the JIT hasn't been improved since Android 2.3. Leaving native code as the only way to improve performance.

Native code is the only way to write portable code across mobile platforms, in the use cases where performance matters. For the others there are HTML hybrid applications.

Andrei Alexandrescu mentioned at one Going Native talk, that Facebook even measures requests per watt, and native code has a big role bringing it down.

The new SQL Server 2013 now compiles stored procedures to native code instead of byte code.

More examples can be provided, if you wish.


Permalink
ubm_techweb_disqus_sso_-fabaf40b9c7fb028af1d39af16bf35f5
2013-10-10T05:31:22

I think you hit on a key point here. The article uses the phrase "language of choice" to refer to the most-used programming languages on GitHub -- but nobody asked these programmers if it was their choice to use Java.

In every case I've used Java in the past 10 years, it was because I needed it to fix or interface with some existing Java code that the business was already using. For all the programmers involved, it was merely the language of necessity.

Businesses have a "language of choice". It's usually whatever they're already using, or what the managers read about in the trade press. That doesn't make it the "language of choice" of the individuals who have to use it. And neither one of these is necessarily the same as what you get by looking at GitHub or Tiobe statistics.

In other words, just because a language like Java or Cobol has a big market demand doesn't mean it's popular, as it sounds like you're well aware. :-)


Permalink
ubm_techweb_disqus_sso_-fabaf40b9c7fb028af1d39af16bf35f5
2013-10-10T05:19:56

What we have here is a failure to communicate. The word "popularity" does not mean "used a lot". It means "well-liked".

All of the evidence you've presented is in support of your claim that Java is frequently used. Nobody is disputing this. Hundreds of millions of people wait in line at the DMV every year, too. That does not make it "popular". That means it's required by some external force.

(There are various reasons for it in Java's case, but I don't think anyone would deny that marketing has been a big piece of it. For the past 15 years, even managers who know nothing about programming knew they needed something called "Java".)

Something which is much-used but unpopular is exactly the sort of thing that is liable to go away even more quickly than it arrived. When people are given the option to renew their license plate tabs online, for example, they immediately stop going to the DMV for that.

Another word which you're misappropriating: "prejudice". It's highly unlikely that the technical people on Hacker News criticizing Java have not used it. It would be prejudice if they said they disliked it without using it, but almost all of the search results (at what I assume your broken link was meant to point to) include actual Java source code examples. Sentiment, yes. Prejudice, no.

P.S., Would you care to place a bet on JRuby becoming the "reference implementation" in, say, the next 5 years? Based on what Matz has said, and on the creation of a language specification, I think it's very unlikely that the reference implementation will change in the near future -- and if it does change, I think it's exceptionally unlikely to be to anything other than Rubinius.


Permalink
ubm_techweb_disqus_sso_-e073501ea4ce299ddaeeb767ac267d82
2013-10-10T05:14:41

Interesting article. My focus area is COBOL, which, like
Java, has also suffered from the perception that it is a dying language. The emphasis there is perception, because as you point out with Java, COBOL also is still very much alive and well. That said, one of the
current challenges we're facing with COBOL these days is a skills shortage. With baby boomers retiring, the new hires entering the workforce are simply not prepared or trained in COBOL development, largely due to the
perception around this vital technology. Universities, certainly play a crucial part here also, but student interest and demand drive much of what we
see in today’s Universities. My understanding is that the skills gap is also an issue with Java, despite the language's continued relevance.

To combat this, more university programs must be put in place to improve training in these language areas, particularly as these technologies are critical for meeting today's market needs. Micro Focus' Academic
Program, an initiative we've enacted with the development and academic community to help students learn traditional development skills, is
designed to do just that. We hope it will help prepare the next generation of developers for the demands of the market, and we believe steps like these are
critical to meeting the demands of today’s business organizations, whether their language of choice is Java, COBOL or otherwise.

-Ed Airey, Product Marketing Director, Micro Focus


Permalink
AndrewBinstock
2013-10-10T03:50:38

"...the growing trend of going back to native code..." I previously discussed this claim. As I said then, there is no evidence of this happening. Can you point to any numbers to support your thesis? Or is just anecdotal and what you see in your piece of the market?


Permalink
AndrewBinstock
2013-10-10T03:49:30

"The fact your writing this article acknowledges that Java's time is up." Really?

"Java in the cloud isn't really happening" Evidence? GAE, AWS, Heroku, and many others have Java customers. The Obama campaign ran huge Java installations in the cloud.

While I don't disagree with JavaScript and mobile being important, they're not the only story and, as the figures accurately demonstrate, their growth has not diminished Java's role.


Permalink
ubm_techweb_disqus_sso_-1b1ccaa73d1f4c9b27e68868a0b9df6a
2013-10-09T20:23:47

The fact your writing this article acknowledges that Java's time is up. Many developers don't trust Oracle, Java in the cloud isn't really happening and Java on mobile device is limited to Android. If your going to invest in yourself, you may want to peak at Node.js and express and/or Ruby on Rails. Also check out client side frameworks such as Backbone.js, Ember or AngularJS. Don't forget Mobile first, responsive design CSS frameworks such as Bootstrap and Foundation. Lots of good stuff that can really improve productivity. At least that my take...


Permalink
ubm_techweb_disqus_sso_-0cd02431100cced55cb6ba2793570183
2013-10-09T09:00:32

Yes, Java is dying in the desktop, mobile and embedded space, only the server side is left.

JavaFX is coming too late to the game. Most developers doing desktop development are doing WPF when targeting only Windows, GTK/C or Qt/C++ when targeting multi-platform.

You mention Android, but since the Oracle suit happened, Google hasn't updated the Java support, only Android specific libraries. This means Java developers targeting Android are forced to use Java 6 language features.

This situation will only get worse with Java 8 release.

Having taken Google's side when the suit happened, nowadays I think Oracle was actually right in doing it.

As for the embedded space, Sun burned the developers with the Write Once Debug Everywhere nightmare that was J2ME.

Despite what Oracle and a few partners may say, no one cares that much about J2ME nowadays.

With the rise of Arduino and similar platforms, young developers are learning again C and C++. More powerful platforms like the Raspberry PI already have communities playing around with Python, Go, D and Rust.

Plus we have the growing trend of going back to native code, to better control energy utilization, cache lines and such, while Oracle shows no signs of moving away from a JVM model.


Permalink
ubm_techweb_disqus_sso_-d7a60af6edb9e9baf5e9c4402898f81f
2013-10-09T06:26:13

Java dying, no, not yet at least, in decline however, sure and for good reasons. As you showed with github, and as for example the ecmascript 5 standard and version 3 of python show, scripting languages are now fully mature general purpose development languages that come with modern language features that Java mostly, despite of promises for for example lambda's, has failed to deliver.
Hell, even the infamously slow C++ standardization process has given lambda's to C++ a few years back while Java is still struggling to deliver. Things like that leave Java is a rather tight spot. Pressure from the non resource intensive side with scripting languages that are modernizing faster than Java, and pressure from the resource intensive side where C++11 did embrace modernization issues like lambda support while at the same time it has addressed most productivity issues that made Java slowly win ground on C++ for years. So unless Oracle finds a way to speed up Java its language development process, the process of eating up C++ market-share seems to have halted, while the process of modern scripting languages eating up overall market share seems to show no signs of halting. It takes time for adaptation of newer technology. But when you look at language features and language evolution speed its pretty clear that at this moment in time Java behind both scripting languages and the long-time thought to be dying C++, and worse there are signs (EcmaScript 6, C++14) that the gap will grow even bigger soon. If this continues, there will surely be a point where Java programmers realize they are in with the COBOL crowd now and need to start learning some other language or be stuck in the niche where Java remains dominant.


Permalink

Video