Is Java reaching the end of its life?

What does the future of Java look like? Many users see Java as stuck in a quagmire, while others go so far as to say Java is dead. Is it really so?

Java, one of the long-dominant platforms for building enterprise solutions, has been steadily evolving since its first release in 1996, with a new major version coming every one to two years. However, Java 7 has been stuck in a quagmire for four years, with the Java community struggling to refine the implementations of two of its sub-projects, Project Jigsaw and Project Lambda. However when the Java Specification Requests for Java 7 have finally been approved for release, Projects Jigsaw and Lambda were delayed until Java 8. This news has disappointed many in the community, as these two features were seen as the major draw of Java 7.

Many users see Java continuing to languish. Still the innovation needed to keep Java relevant will come from broader Java ecosystem, and not from Oracle or the Java Community Process that governs changes to Java.

The Java ecosystem, driven by the open source community, has always compensated for Java’s inadequacies.

And more and more often the community turns to new programming language paradigms, as it is uncertain whether the Java programming languages will be able to innovate fast enough to keep that attention of developers seeking the next challenge.

Java is traditionally viewed as just a programming language, but it is more than that. Java consists of three parts: the programming language, the virtual machine and the class libraries. The community has long been porting existing languages and creating new languages that run on the JVM. In fact there are over 200 programming languages that can be used to write code that runs on a Java Virtual Machine.

The beauty in using a programming language other than Java on the JVM is the most languages have interoperability. This means that you could take a new service being built in your system, write it in some other language, and still have it call an existing pure Java service or component.

The idea of using a specific programming language to achieve a particular task should not seem foreign to developers. Web application developers have to be fluent in at least five programming languages in order to build a modern Web application – HTML for the Web content, CSS for styling and the layout of this content, Javascript if you want a rich user interface, SQL if your application is to be data-driven and, lastly, the programming language and platform you have selected for the middle-tier business logic.

This model makes perfect sense. CSS is good at defining the look and feel of a Web page, but you wouldn’t write business logic with it. SQL is great for accessing and updating relational data, but it is not good at generating a user interface. So why shouldn’t this paradigm apply to the programming languages with which we choose to build our core logic? Shouldn’t we be choosing a language that solves the problem best and not trying to force the one we know into the solution?

Another huge advantage of the polyglot JVM is that when you begin to weave these various languages together to write a single application. By taking advantages of the characteristics of various JVM languages, you can target languages for various features or layers in your architecture.

The most common argument against using dynamic languages running in the JVM is that they are slow. Although this might be true, they are getting faster all the time, and a major performance gain is expected in Java 7 with the Invoke Dynamic JSR.

Clearly, this approach is not without added complexity and there are various recommended approaches in the industry on how to evolve your application architecture into a polyglot nature.

Java remains the premiere platform for building enterprise applications based on not only its solid foundation, but its language innovations that will allow developers to build faster, scalable systems quickly. By taking advantage of the flexibility that Java has always provided and adding a polyglot and poly-paradigm approach to software development, development teams can innovate inside an existing infrastructure with little or no changes to their infrastructure, making the sales pitch to management all the easier.

Java has evolved and will continue to evolve, with this changing landscape due to the flexible nature of the java platform. This is the advantage that makes Java relevant now and will keep it relevant for years to come.

So does it still make sense to build new-generation Web applications on Java? The answer is yes, fortunately, due to the rise in popularity of polyglot programming and the innovations it brings to the Java platform. Do you personally agree with this?