We are in 2019 and while it has often been given for moribund, or even qualified as new COBOL by some, the Java programming language still remains the uncontested leader of programming languages in the enterprise world.
Created in 1995 by James Gosling and Patrick Naughton, the Java programming language has since been a fantastic success that has never been denied. The acquisition by Oracle in 2009 will have raised some doubts about its future, but recent decisions by Larry Ellison’s company to shorten the time between each major version of Java are a step in the right direction. Indeed, they will make it possible to revitalize the JDK and to offer new functionalities at a much faster pace.
In addition, the latest major versions of Java have enabled significant advances for the language and the platform as a whole, with for example the introduction of Lambdas and Streams in Java 8 or the modularization of the JDK with the long-awaited Jigsaw project, which will finally have been launched in Java 9. While version 13 of the JDK is expected in September 2019, it can be said that Java has made enormous progress in keeping up to date with competitors with syntaxes often cited as more modern.
Despite all the progress made by engineers working on the JDK, both in terms of language and JVM, a number of persistent myths remain within Java and its platform. In this article, I suggest you come back to the 5 biggest and try to debunk them!
1. Java is dead
From 1995 to 2006, the Java language evolved at a relatively fast pace with a new major version every 2 years. The introduction of Generics in Java 5 was a real language shift in 2004. Version 6 of the JDK was released in 2006 with one of the relatively minor modifications. The language will then stagnate for several years. The community is struggling to agree on the most appropriate evolutions for the future of Java. In addition, Oracle’s acquisition of Sun in 2009 does not help the case.
Many doubts then arise about the future of Java. Some even bet on his death under Oracle’s leadership. Java 7 is finally released in 2011 but with limited features compared to what was expected. Thus, the Jigsaw modularization project was postponed due to the community’s difficulties in finding a solution that was satisfactory to all. For many, Java is then on the way to becoming the new COBOL. It will take another 3 years to see the release of Java 8 with (finally) the integration of major new features for developers. Lambdas and Streams are a real revolution paving the way for functional programming in Java. A breath of fresh air for a Java language that was criticized on all sides in the face of more recent languages with more powerful syntaxes.
Nevertheless, the absence of the JDK modularization project within Java 8 once again disappoints developers. However, it was only a postponed part since the Jigsaw project and the modularization of the JDK are finally integrated into Java with version 9 released in September 2017.
Aware of this major issue for the future of Java, Oracle decided to change its focus from Java 10 released in March 2018. Starting with Java 10, Oracle will release a new major version of the JDK every 6 months. The goal is to release more often new features that make the language evolve in order to make it more dynamic for the community and to prevent some developers from considering that Java is a dead language.
It is finally a success in my opinion because 18 months after this implementation of its new policy, Oracle is about to release Java 13 in September 2019. So I think that this little demonstration proves that Java is nowhere near a dead language and that the comparisons qualifying it as COBOL again are far from adequate.
2. Java is slow
Among the persistent myths about the Java language is the fact that Java would be slow. However, this myth is based on some truth since the first versions of Java were indeed slower than compiled languages such as C or C++. In order to keep its promise “Write Once, Run anywhere”, the Java platform had to make some concessions and its virtual machine, the famous JVM, added a layer of software. In fact, performance could suffer in some specific cases.
In addition to this problem of additional software layer, some implementations of the JVM were really slow in the beginning. Nevertheless, this myth has lived on and C or C++ aficionados must face the facts: the JVM is now fast. I would even say that it is ultra fast! In addition, hardware has progressed so much since the early years of Java that the addition of an additional software layer, such as JVM, has no real impact on performance for the vast majority of enterprise applications.
Finally, the JVM Just-In-Time (JIT) compiler is a pure marvel that greatly improves the performance of Java applications. The level of performance achieved by the JVM is such today that it serves as an execution platform for a large number of Kotlin, Groovy and Scala languages. So, we are no longer only talking about the Java language but also about the Java ecosystem.
The next time someone tells you that Java is slow, don’t waste your time looking for benchmarks to compare with C or C++ but just answer them that this myth has lived and that it’s time for your interlocutor to get up to date.
3. Java has become a paid service
In 2018, Oracle announced in a somewhat confusing way that the JDK would now be charged for professional uses in production. Obviously, the confusion has led some to argue that Java has become a paid service! However, this is not the case. It’s another new myth to debunk.
In reality, Oracle now distributes two builds of the JDK:
- Oracle JDK
- Oracle OpenJDK
Oracle JDK is a free development and testing environment but you have to pay to use it in production. It comes with long-term support from Oracle. On the other hand, Oracle OpenJDK is free for any environment.
Thus, Java remains free as long as you use Oracle OpenJDK. In addition, there are other implementations of the JDK that you can choose to use, which ensures that Java is free in the long term. For example, you can use the JDK builds proposed by the AdoptOpenJDK community. More recently, Amazon has just made its own JDK builds available under the name Amazon Corretto with completely free long-term support.
In short, Java remains free and it is still a myth that has no reason to exist.
4. Java can’t leak memory
In Java, the memory is managed by a Garbage Collector. Thus, unlike languages such as C or C++, the developer does not have to deal with memory management himself. All this is intended to abstract the developer from this work in order to limit memory leaks. Based on this assumption, many people think that it is not possible to have memory leaks in Java.
It is still a myth that needs to be debunked. Indeed, by never releasing references on objects and variables that are no longer useful, the developer will prevent the Garbage Collector from doing its work properly. This will lead to a slower application and memory problems. In addition, memory leaks are possible if input/output resources are not released or when using native codes via JNI in bad ways for example.
In any case, it is important to be aware that a managed memory language like Java does not mean that the developer should not design programs that take into account memory management issues. The developer must take this into account, even if the way of reasoning is not the same as with compiled languages such as C or C++.
In any case, everything remains a matter of common sense.
5. Java is the only language you need to learn
Java remains the most widely used language in companies. In addition, Android’s fabulous success in the mobile world makes it perfectly usable to build mobile applications. The Java EE framework allows you to create Web applications with the Java language always. On the client side, Java is also in the spotlight with Swing or Java FX. This is despite the fact that Swing is still aging and Oracle support for Java FX seems quite light now.
Java allows you to do almost anything. For some, it may therefore seem that Java is sufficient and is the only programming language to learn. It would be a serious mistake to believe that! Indeed, the fact that Java allows you to do everything does not mean that it is the best solution in all cases. Thus, each programming language has its advantages and disadvantages depending on the type of applications to be implemented and the target domain.
In fact, as a developer, you must always be open to new languages and technologies. Don’t close yourself off on a technology. In addition, everything goes very fast in IT. Thus, you must never lose your ability to learn new languages. This will allow you to have an even more successful career.
This last persistent myth around Java is therefore once again to be forgotten: Java allows everything to be done but it is not necessarily the best solution in all cases. As a programmer, your role is to be pragmatic!
Java remains the most widely used programming language and in fact the leader that all competitors want to dislodge from its pedestal. As such, the myths about Java are therefore persistent. In this article, I presented you the 5 greatest myths while showing you why they were false.
In conclusion, never forget that Java is here to stay, but that you must always be pragmatic when choosing a technology for a computer project.