Java: To Learn or Not to Learn?

Traditionally, autumn is the time when millions of people around the world are starting their studies at universities, colleges, and other educational institutions. And what to learn is a very frequent question for many students. For those who are planning to be programmers one of the subjects can be Java. But is Java worth learning now?

If I told you that Java would die in 10 years, how would you react? Maybe like in this video:


But before discussing why Java might die and whether to learn it now, let me recall briefly the Java development history.

Who Was Born to Fly Would Not Crawl

  • In early 90’s a so called Green Team group of Sun Microsystems engineers made no doubt that the future in computing would be the hookup of digital consumer devices and computers. And after several years of well tuned work James Gosling and his team announced the emerging of Java.
  • In comparison with existing programming languages the key feature of Java was its portability: the ability to run programs written in Java under any operating system, so-called WORA principle – “Write Once, Run Anywhere”, what made Java a real breakthrough in computing.
  • In just one year on the JavaOne developer conference 160+ businesses displayed Java applications, products and services.
  • In 1997 more than 400 000 developers worked in Java and it has already become programming language #2 in the world.
  • In 1999 the Sun released J2SE, J2EE, and J2ME.
  • In 2000 Apple decided to bundle Java 2 Standard Edition with every version of its new Mac Os X operating system.
  • In 2003 Java showed how to access a computing session securely from a remote server.
  • In 2006 it became open source, available under GNU General Public Licence.
  • 2008 – Blu-Ray discs powered by Java technology.
  • 2009 Oracle acquired Sun.

Actually the document referenced above ends with 2011, but for the majority of Java programmers the acquisition of Sun Microsystems by Oracle was shocking news. Many were afraid of Java stagnation, as being not a priority branch of Oracle and concerned about Java support. After the acquisition several worthy Java-persons resigned from Oracle: James Gosling, the creator of Java; Bryan Cantrill, the co-creator of DTrace; Jonathan Schwartz, Sun’s CEO; Simon Phipps, Sun’s Chief Open Source Officer; and Tim Bray, Sun’s Director of Web Technologies.

If we check the history of the Java development, we’ll see that the new versions were released every 2 years up to 2006. But then there was a pause for 5 years till 2011. And the long-expected new release faced a lot of security drawbacks and didn’t include the awaited lambda support, jigsaw, and some other features (openjdk.java.net/projects/jdk7/features/#deferred)

Of course, not everyone predicted doom and gloom then. At Oracle they claimed that “Java is changing, Java is evolving, Java is improving.”

Words vs. Reality: Measuring Java Popularity

There’s a number of reputable resources where one can find respective data (redmonk.com, tiobe.com, lang-index.sourceforge.net, etc). Currently Java holds top 5 positions with C, Objective C, C++, and PHP, see, for example, tiobe.com/index.php/content/paperinfo/tpci/index.html (2013, August):

Java and Java development popularity

Java has been widely used in the client-server web application development, ERP and BI systems, home security systems, desktop games, network programming, just to name a few. Android OS introduced a new pool for Java programmers. That breathed a new life into Java, and it still remains a sought-after technology.

But if it is so popular, where is this anxiety about the future of Java coming from? Why someone is already speculating about an alternate programming language to replace Java?

Why Some Consider Java Is Dead?

From one of the forums: “What is killing Java is that it takes so long to evolve.”

There are a lot of criticism about Java though, in particular, on its

  • Language syntax and semantics
  • Floating point arithmetic
  • Performance
  • Security

But the main reclamation to Java is security vulnerability and the lack of some modern managed platform features.

You can read about Java problems In more detail at en.wikipedia.org/wiki/Criticism_of_Java or www.cs.arizona.edu/projects/sumatra/hallofshame/. I’d only like to list some quotations about Java:

Using Java for serious jobs is like trying to take the skin off a rice pudding wearing boxing gloves. — Tel Hudson

If Java had true garbage collection, most programs would delete themselves upon execution. — Robert Sewell

Arguing that Java is better than C++ is like arguing that grasshoppers taste better than tree bark. — Thant Tessman

Java is the most distressing thing to happen to computing since MS-DOS. — Alan Kay

Today Java apparently faces far more competition than it did 10-15 years ago. For example, such scripting programming languages as Ruby, JavaScript, or PHP are very popular in cross-platform web and application development now. Another example is Qt, an effective cross-platform framework. Of course, don’t forget about .NET and C#, Microsoft’s answer to Java. As a result, businesses today can use not only Java but a number of alternatives to fill the bill.

Do You Remember COBOL? What About FORTRAN?

“Java is a new COBOL” (Anonymous)

FORTRAN or COBOL - The future for Java?

Photo credit

Common Business Oriented Language was invented by Grace Hopper, “the mother of the COBOL language”, in 1959. In 2002 it was released the object oriented version of COBOL. One time big stakes were put on this language, but now it is not even in the top 20 most popular programming languages. Though programs written in it are still in use in the governmental organizations and commercial enterprises.

Of course, it’s hard to compare COBOL and Java as they developed and matured in different conditions. But one day Java could resign its leading positions on the enterprise market, leaving a lot of applications that need support and development and that are quite difficult and/or expensive to rewrite in other programming languages.

Another interesting parallel is FORTRAN. Many of contemporary programmers even don’t know what is all about but very possible that, when they call a mathematical or engineering function in their favorite language, they in fact call a piece of code that was initially written in FORTRAN. Many leading mathematical organizations all over the world worked to develop those libraries. Yes, FORTRAN has a lot of limitations but even now it’s one of the most effective languages for the mathematical computations. And in combination with C/C++ (which is used to develop UI and low-level functionality) FORTRAN is still very powerful, at least for such complex tasks as parallel and multi-core calculations.

So, maybe the future of Java development would be in a quiet, unhurried technical support of the created programs? Or Java would overcome its difficulties but would be popular only for some quite specific applications? So many questions…

The Core Java Problem

However, these all analogues with other languages are not completely correct. The point is that Java is much more than a programming language. And its problems are much more than about security or too slow development. The core problem is that before and after 2009 Java was built under absolutely different business models.

Sun Microsystems - Where Java came from

Photo credit

The power of Java was in its openness and support from Sun Microsystems. Sun was among those few companies which advocated an approach that, in its essence, was very close to the open source concept. No wonder that in 2006 Java became available under GNU licence. In 1995, when ideas of proprietary software were very strong and dominated, Java was as a breath of fresh air and freedom. As opposed to some modern developers communities which are created first of all with promotional goals in mind, the community of Java developers was absolutely real and true. This mix – the financial, marketing, and managerial power of Sun Microsystems and enthusiasm and proficiency of Java community – was extremely productive and effective. That is why so many people were disappointed and strongly concerned about the future of Java when Oracle acquired Sun. And this is one of the reasons why some top managers of former Sun left Oracle.

However, Google’s business model has some features that resemble Sun. Android OS is based on the open source model and gives developers a lot of opportunities for further development and improvement. This is a new chance for Java.

Conclusion

It’s clear that Java just can’t be turned off. It is behind a lot of applications that we use every day at work and at home.

Moreover,

  • There is a big number of Java professionals. It is significantly harder to find a good Scala or Ruby developer than a Java one.
  • Mature infrastructure: There is not much choice of solid and scalable IDEs, application servers and other tools for newcomer technologies.
  • Maintainability and development scalability of the newer platforms are still a big question.

So, Java cannot just vanish. But answering from the bottom of your heart, would you learn Java now? Which programming language will you recommend to young developers to stake on?

Some Answers and Comments

Discussion about the future of Java development

Photo credit

We’ve asked some programmers from different IT companies to comment this article. Here are their answers.

Alexey, Android team lead at Ciklum:

“I have an odd impression about this article. From one side the topic is appalling, from the other the argumentation is rather weak. In the bottom line, I, being a Java engineer for about 10 years, am absolutely not horrified and not going to change anything. First of all I don’t see any rival, that could be a worthy counterpart yet. So the problem exists but it need not to be solved so far.

My personal feeling about Java:

  • It is easily mastered ( especially if one has an experience in C-like languages)
  • It has a huge base of code libraries
  • Enormous community
  • A lot of documentation and articles

Java cons:

  • It develops slower than we’d like it to develop
  • Eats a lot of memory
  • Desktop java applications suffer on poor latency and look sluggish to users”

Anton Naumov, Java Team Lead at X1 Group, 10+ years in Java development:

Anton Naumov, 10+ years in Java development

“The article is really uprising some hot and burning questions regarding the feature of Java.

Whither goest thou? I think that each first Java-developer asked himself this question during the past 4 years. The opinions are contradictory as always. Some have made Oracle a grave-digger of Java, others think that only big money/bucks and huge corporation can maintain and develop Java’s infrastructure. The truth is somewhere nearby. Of course the merger of Sun and Oracle could not but influence the tactics and strategy of Java development. Of course this influence was both somewhat positive and negative. The takeaway is odd. But the oddity is nohow connected to the merge. Let’s sort out:

“The Java development slowed down, best minds quit.”
It is the truth, but not all. Immediately after the merger of Sun in 2009 Oracle closed about 20 (!) Open Source projects, that had been developed in Sun Labs. The fate of those projects is very different, but it’s not the point now. In my honest opinion Sun was too involved in non-profit projects, and that became an implicit cause of corporation wreckage. Of course nobody would like abrupt redundancy cutdown so they caused an avalanche of layoffs and even demarches. Of course it influenced greatly on language development.

“If Java has real Garbage Collector…”
On the post-premiere press conference of “Django Unchained” Quentin Tarantino was asked:
   - Quentin, admit, that you haven’t yet filmed anything better than “Pulp Fiction”?
- And who did? (© from Facebook)

In contemporary world there’s no better garbage collector than that realized in JVM. And it is a real fact. That is why many of the fancy new programming languages are actually a sort of syntactic sugar for the Java bytecode running on JVM. This is true about Kotlin, Scala, Jython, JRuby, Closure, etc.

Yet JVM is the best virtual machine. So all that fuss about garbage, memory and application size are rather funny in the world where RW memory peanuts, room/place on HDD and even SDD is more than accesible/available. And it is absurd to read about desktop applications when real competitors are cloud providers.

“There is a variety of alternative solutions”
But it is the part of the story. “Alternative” solutions are not perfectly alternative. PHP is still single-threaded; Ruby/Python – are still lacking speed; Scala is JVM-based, etc. Every available alternative is just a palliative. And experience of Twitter proves this thesis.

Resume
   - Who’s this bike?
- It’s not bike, it’s a chopper, babe!
- Who’s this chopper?
- Zed’s
- Who’s Zed?
- Zed dead, honey, Zed dead (© Pulp Fiction)

The statement about Java’s death is not just incorrect but ludicrous. And this is not just because of the biggest part of the enterprise world works on JVM. It is because of on the basis of legacy solutions of technic stack of the last 10-12 years banks and ERP systems, portals and internal software of huge corporations are still working. And all this software need to be maintained, modernized and enhanced. 12 years ago the question “Has Java any future?” was really timely. Now to rewrite all infrastructure of the most world corporations software… it is not even a question.

That is why the language and Java programmers were, are and will be in demand for a long time from now.

And regarding “Would you learn Java now?”, I would rather ask “Do you need job right now?” Then the answer will be somewhat other.

It is hard for me to understand the policy of Oracle regarding the terms of Java releases. Yet no single public promise, given multiple times was not realized. The deadlines are postponed and feature releases are split up. Иногда это происходит внезапно. This causes the rumors about Java\s death or funerals.

Yes, the syntaxis is stale. Yes, there are many problems with PR and release schedule. Yes, there were a lot of blatant dismissals and staff reductions.

Does it mean death for Java as a programming language? Of course not.
Will Java become a new COBOL? Not in the nearest 10-20 years.
Will students learn Java? Or will there be a mass deflux in other languages? Of course not, because students need jobs not only in a risky startup but in reliable corporations, too.”

Vladimir Trishin, 14+ years of .NET development:

“Java and DotNet are now the only programming languages of enterprise level. Albeit all attempts PHP still doesn’t reach the level of outstanding enterprise solutions (though it does nicely for small and middle projects).

Over and above there’s no point which language is better Java or DotNet — I consider both have commensurate possibilities. Customers from the USA prefer DotNet, and the Western Europe prefers Java.

I think this situation will last for several years more.”

Sergii Rudchenko, 8+ years of C++ development, 4+ of Android/iOS Java development:

“I believe we should clearly differentiate the Java platform from the Java language. The Java virtual machine seems to be the most advanced software of this class. It is not actually tied to any particular programming language, there are lots of them available for use with JVM. The Java language is just an official one.

Regarding the Java language – I often get sick of Java verbosity and lack of several modern programming language features (the most wanted ones for me are lambdas and collection literals). Things getting even worse on the Android platform where Java 5 is used, we don’t even get the Java 7 feature breadcrumbs. Hopefully there are promising alternatives appearing like JetBrains Kotlin which is positioned as a “better Java” with minimal overhead and good IDE support.

I agree the Java language becomes modern COBOL and there is nothing bad about this. Some applications need stability over innovations. Java will stay with us and will remain a well-known, proven technology for a long time.”

Ivan Yankovoy, independent Internet professional:

“Java rasped its niche long ago and it won’t go anywhere. Even if they stop releasing updates and new versions, technology will live for a long time from now and will hold top 5. Should students learn Java? I don’t know. I’d suggest to everyone to start from C++, and only after it to try several more languages. Nowadays programmers have vast possibilities so first of all he should understand what programing he wants to do : to develop for web, to develop instruments for other developers, to develop desktop or mobile applications, to develop drivers for different devices or, maybe, to work in game industry, etc. And according to his preferences the programmer should choose the programming language. First choose the domain, then – the language.”

Andrew Shalimov, Acceptic:

“I disagree. I think Java is great due to the variety of side libraries and frameworks (JBoss, Hibernate, RichFaces, Seam, just to name a few). Its openness caused the emergence of an army of well supported add-ins. And this factor didn’t disappear and its influence didn’t decrease.

Only the cross-platformity of Java mentioned in the article gives it the right to live for a long time as other languages don’t have this feature at all. And if you still need C (C++), Java has a beautiful mechanism JNI allowing to use Java libraries written in C and C++.”

* * *

Java development: To learn or not to learn

What is your answer? Share it in the comments.

About the Author

Valerie Rudchenko

, marketing & content manager at Acceptic: “I am honored to be part of the great and creative team of Acceptic’s pros. I like them for being technically savvy and emotionally rich. For me is also a great opportunity for professional growth.”

 

Java: To Learn or Not to Learn?
Rating: 3.9 stars out of 5 (based on 9 DZone user ratings)

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>