JAX London Blog

JAX London Blog

JAX London, 09-12 October 2017
The Conference for JAVA & Software Innovation

Aug 18, 2017

Java will stay on the throne

Source: Shutterstock

In this interview, Bruno Borges maintains that Java is still solid, with plenty of high-profile frameworks that can deliver the same developer experience (quick development/deployment) that Node.js delivers but keeping the stability and maintainability that Node.js projects provide.

Some people seem to believe that Node.js might have a chance at overtaking Java in the near future. Can Java really be dethroned? Why/why not?

There are many indicators showing that Node.js is a great platform for quick development/deployment, but the code base itself only gets harder and harder to maintain, even for microservices-based architecture. If there is a platform that was overtaken by Node.js, I’d say it was Ruby on Rails.

Java is still solid, with plenty of high-profile frameworks that can deliver the same developer experience (quick development/deployment) that Node.js delivers but keeping the stability and maintainability that Node.js projects provide. Not to mention all the great tooling support, debugging, etc. So no, I don’t think Java can be dethroned by Node.js as a development platform on the long run. Why? Because people told us that Ruby on Rails would do that to Java, like, years ago. And it didn’t. But hey, there’s still a lot of great things on Ruby, Node.js, and other platforms and programming languages, that can add value to many development teams.

 

This year, Stanford’s famous introductory course for programming dropped Java in favor of JavaScript. What does this say about the relevance and popularity of Java?

I learned how to program by writing Excel macros. It wasn’t even VB. Then advanced to writing more complex scripts for mIRC. Do you remember mIRC? It was the most famous IRC client for Windows. Remember IRC? The 90’s version of Slack. Well, things have changed for sure. Logo was another programming language that got some traction, at least in Latin America in a few universities as a language to teach basic programming logic.

What I am trying to say perhaps is that to learn software programming, students need something that quickly provides feedback, output, etc, with as little friction as possible. Javascript is a great programming language for that. One can write server-side (Node.js) or client-side (any browser) and quickly have fun with it. But at some point, when these developers hit the workforce, they will have to know other more serious languages, of course depending on which area they invest. If they are going to work as sysadmins, then perhaps C, C++, Go, and shell scripting is needed. For anything corporate, business web applications, ASP.NET and Java are great options. For mobile apps, Swift is becoming mainstream in the iOS ecosystem, and so forth. 

Conclusion? The relevance of Java and its popularity, and any other programming language, really depends on what use cases that language can take with solid foundation. Java has that foundation. And even if students are learning programming logic with Javascript, one day they might as well drop the “script”.

I don’t think Java can be dethroned by Node.js as a development platform on the long run.

 

What did you think of the fact that Java 9 was delayed to September? Do you agree with the JCP Executive Committee’s decision not to approve the Public Review Ballot for JSR 376?

I believe the JCP EC achieved the best outcome possible. The final result was the expected consensus between everyone involved and, in the end, everyone who invests in Java won. Java 9 is an important step toward a Java platform that is friendly to modern practices of software architecture (microservices), and software delivery (containers).

The modularization of the platform will help Java developers to really benefit from a cloud native software development approach. Now we can get a much smaller JVM for tiny microservices. I remember a tweet from Mark Reinhold saying that the minimum JRE 9 is 15 MB only. That’s a huge improvement!

The relevance of Java and its popularity, and any other programming language, really depends on what use cases that language can take with solid foundation.

 

Georges Saab, chairperson of the OpenJDK governing board and vice president of development for the Java Platform Group at Oracle told JAXenter in early June that many developers will probably get started on JDK 9 without modules. How do you feel about the modular ecosystem?

I tried JDK 9 EA for the first time like, a week ago, and by the way, I encourage all Java developers to test it and see if their applications continue to work fine. Guess what? My applications worked just fine. And I made no changes to them! I totally agree with Georges: many developers will simply upgrade and use Java 9 without thinking about modules.  

 

 

What is the most important misconception about Java 9?

For real, it is the one that developers would have to rewrite their programs and organize their packages as modules. No one is required to make changes!

The modularization of the platform will help Java developers to really benefit from a cloud native software development approach.

 

What would you like to see in Java 10?

I actually have two ERs filled on OpenJDK’s JIRA that I’d like to see implemented.

One is JDK-8149423, about having a fingerprint of source code in the bytecode, so IDEs could validate whether a source code opened in the editor is really the one being debugged. Did it ever happen to you — debugging a line and seeing the breakpoint jump over to an empty line? Yeah, I hate that. Because source code is not the one in the JVM memory.

The other one is minor: an enhancement to the JAR tool to restore file permissions (JDK-8149423). Anyways, there are lots of proposals for Java 10, and they are all great, but these two are my ideas… 🙂

Behind the Tracks

Software Architecture & Design
Software innovation & more
Microservices
Architecture structure & more
Agile & Communication
Methodologies & more
DevOps & Continuous Delivery
Delivery Pipelines, Testing & more
Big Data & Machine Learning
Saving, processing & more