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.
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.
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… 🙂