At that time, web technologies were emerging and Java had applets and Swing within them. You could do pixel perfect positioning or flexible positioning (GridBagLayout) in applets, which is something HTML could not offer at that time. On the backend, one could pick from a range of remoting options to scale your code. Your binary would run on almost any platform conceived. The underlying language that enabled all of this, Java itself, was designed from ground up to be modern, flexible, well written and really innovative. Memory management was handled by the Garbage collector. It was a dream come true! Java soon became the leader of the pack.
There was always more to Java than Java itself
I continued my journey in Java and started understanding the eco-system. It soon started diverging from Sun Microsystems and many companies and individuals were lending a helping hand. Everybody wanted on the boat with Java:
- IBM was producing Visual Age and then funded Eclipse — a long standing leader in the IDE segment of Java;
- Apache foundation hosted a plethora of frameworks that were critical for Java development: Turbine, Torque, Velocity, Tapestry, Struts and many others;
- SpringSource emerged with their offering of the Spring framework and all connected resources (Spring Security, Spring Data, …) — now being by far the most popular framework for Java development;
- Many other individuals and companies were contributing innovative ideas or just plain usable components: Hibernate, MyBatis, Maven, Gradle, Vaadin;
- Apache and JBoss provided application servers that took over as overall leaders for running JSE or JEE solutions. Tomcat is used at more than 42% of production environments, according to a research from 2016;
- Companies such as CloudBees provide the build/integrate/deploy tools. Jenkins is being used at 60% of today’s projects.
You get the picture, although this list could easily continue a long way. The Java programmer’s body of knowledge consists of much more than the Java language. Or to be honest, Java is just a small bit of the knowledge and an even smaller bit of your project workspace. This remained a fact throughout Java’s history. Truth is — the Java ecosystem was always a crowd-sourced effort and never a truly centrally managed effort.
Who really governs Java?
Currently, Java TM is owned by the Oracle corporation ever since Oracle bought Sun Microsystems in 2010. This is what happened in the Java world in these 6 years:
- Java EE (the governed, not crowd-sourced Java framework) soon became pretty much extinct;
- Java applets are no longer relevant and are very soon going to be completely deprecated from the web browsers;
- Java barely fought a battle for the desktop environment. Efforts such as JavaFX were too little too late. Microsoft is still leading this area and will probably benefit even more from the Xamarin acquisition.
Still, Java ecosystem is stronger than ever (in absolute terms), thanks in most part to the non-governing parties. Number one reason for this is Google’s choice of Java as the programming environment for the most popular OS of today — Android OS. Spring, now part of Dell, is also helping Java stay strong by producing top quality frameworks for rapid development.
But most importantly, the Java community in large is the leading community in bringing new principles and practices to the software development world. Almost every new concept introduced to software programming in general — originates in the Java ecosystem: Continuous integration, Continuos delivery, Microservices. The crowd is helping keep Java on top!
Oracle is really just owning the Java trademark and is not really governing its future. This may be a good or a bad thing for Java. On the downside, some of the more monolithic environments are gaining strength (Go lang, .Net env) from their focused work. On the bright side, Java’s democracy seems to still be giving birth to innovative trends (CI, CD).
And the language itself?
In the last few years, we have seen many new languages arise on the JVM. Some of them are considered by many to be a better alternative to Java in terms of pure language quality. Voices are being raised in favor of Scala, Groovy, Kotlin — to name just a few. Although these are still far from critical mass adoption, they have all the tools required to replace Java in a short amount of time:
- They can use most of the tools and frameworks available on Java
- They can run on the same application servers
- They run on the same virtual machine
Arrival of languages like these was the last missing link in making the Java language even less relevant in the JVM ecosystem. They allow for a swift migration from Java, without loosing all the benefits of the ecosystem. At the same time, Oracle is not doing itself and Java a favor by pushing back the releases of project Jigsaw.
What happens next?
We are at a crossroad for Java as a language and the JVM ecosystem. What happens next?
When looking at the trends it is safe to stay that JVM and its surroundings are going to be leading the software development world for many years to come. Languages that build up a mass like this, never really decline (look at C at the charts above). JVM ecosystem still delivers the best tools to to the job of enterprise software development.
But what exactly is this future going to look like? Some of these things happening would strongly influence the future in different ways:
- Oracle sells Java to a more focused vendor, such as RedHat or IBM. Things could brighten up for the language itself and we could get a more focused governing process
- Android drops Java in favor of Go. This could be very disruptive and bring FUD to the ecosystem. Languages such as Scala could emerge and the ecosystem would be hurt
- Dell stops funding Spring, but refuses to sell. This would probably be the most damaging thing for the future of the JVM world. Without Spring, JVM world is really in trouble
- Dell sells Pivotal (Spring) to a more focused vendor, such as IBM or RedHat. This vendor would then de facto take over the Java governing process and could promote an alternative language such as Scala to completely break the ecosystem from Oracle
- Oracle focuses more on the language and the frameworks, finding a business model for it.
My guess is that the JVM world is going to remain crowd-sourced and very vibrant, no matter what happens. It is in the nature of the ecosystem and people in it are motivated by this model. Whether Java as a language is going to be a critical part of it, still remains to be seen.