Americas

  • United States
sandra_henrystocker
Unix Dweeb

How Java has stood the test of time

Analysis
Dec 11, 20184 mins
Enterprise ApplicationsLinuxOpen Source

Java has survived for more than two decades and continues to be one of the top programming languages in use today. What accounts for the language’s success, and how has it changed to accommodate more modern technology?

Java’s rise to power

Java initially appeared in 1995, evolving from a 1991 innovation called “Oak.” It was apparently the right time for engineers looking to grow distributed systems. Some of the more popular languages back then — C, C++, and even Cobol for some efforts — involved steep learning curves. Java’s multi-threading, allowing the concurrent execution of two or more parts of a program, ended the struggle to get multi-tasking working.

Java quickly became the de facto language for mission-critical systems. Since that time, new languages have come and gone, but Java has remained entrenched and hard to replace. In fact, Java has stood as one of the top two computing languages practically since its initial appearance, as this Top Programming Languages article suggests.

It was James Gosling at Sun Microsystems, considered the “father” of Java, who came up with the idea for the language. He worked at Sun until Sun was acquired by Oracle in 2010. In the transference of power, Java became an Oracle product, but it hasn’t remained static. Continued innovation have allowed it to remain the most popular programming language. In addition, the Java community has had time to establish superior tools for writing, maintaining, and debugging code.

The appeal of bytecode and portability

Java implementations typically use a two-step compilation process. In other words, the source code is turned into bytecode by the Java compiler. The bytecode is then executed by the Java Virtual Machine (JVM). JVMs today use a technique called Just-in-Time (JIT) compilation to produce native instructions that the system’s CPU can execute. This promotes the “write once, run anywhere” (WORA) approach that Sun espoused in Java’s early days.

Why compilation matters

The flexibility of bytecode provides a real boon to portability. Instead of compiling applications for every platform, the same code is distributed to every system and the JVM in residence manages it. The problem comes in when small footprint devices don’t deal well with the overhead of interpretation that is required.

In addition, the Java machine has grown considerably and is far too monolithic for small footprint applications that need to react quickly. As a result, we are seeing offshoots that involve significantly less overhead such as Avian (a lightweight virtual machine with a subset of Java’s features) and Excelsior JET (a complete Java Virtual Machine implementation enhanced with an ahead-of-time compiler) that provide optimized native executables that sacrifice portability for performance. Both cloud and Internet of Things (IoT) applications benefit.

Shifting directions

Other innovations in the Java world include GraalVM and SubstrateVM.

GraalVM is a new just-in-time compiler for the JVM and works with other languages, as well as Java (e.g., JavaScript, Python, and Ruby). GraalVM can run in the context of OpenJDK to make Java applications run even faster with a new just-in-time compilation technology. It includes a new high-performance Java compiler called Graal that can be used with HotSpot VM or for an ahead-of-time setup with SubstrateVM.

SubstrateVM greatly improves startup time and makes short-lived applications run faster. It’s a framework that allows ahead-of-time (AOT) compilation of Java applications into executable images or shared objects (ELF-64 or 64-bit Mach-O).

Open vs. proprietary

Oracle announced last year that the technical differences between JDK and OpenJDK would go away. The differences between the two today is largely cosmetic.

Java is still free. Rumors of its imminent death arose a few years back, but OpenJDK has not lost any momentum.

What roles do Oracle and Red Hat play?

When Oracle announced it would no longer supply free binary downloads for JDK releases or write bug patches for OpenJDK after a six-month period, Java users were initially concerned. But the transition of support has been working well. Red Hat takes over when Oracle backs off. The passing of the baton seems to be smooth and reliable. When Oracle stops providing support, Red Hat takes over.

The key to Java’s continued success

While Oracle and Red Hat continue to provide a gap-free approach to supporting OpenJDK, Java’s earliest developers and these two companies can claim only part of the credit for Java’s eminence. As Red Hat’s Mark Little says, 50 percent of the credit for Java’s continued success goes to the developer community.

sandra_henrystocker
Unix Dweeb

Sandra Henry-Stocker has been administering Unix systems for more than 30 years. She describes herself as "USL" (Unix as a second language) but remembers enough English to write books and buy groceries. She lives in the mountains in Virginia where, when not working with or writing about Unix, she's chasing the bears away from her bird feeders.

The opinions expressed in this blog are those of Sandra Henry-Stocker and do not necessarily represent those of IDG Communications, Inc., its parent, subsidiary or affiliated companies.