days
0
4
hours
1
1
minutes
1
0
seconds
5
8
search
Interview series with Java influencers — Part 1

No swan song for Java: 11 influencers weigh in on its reputation, rivals and adoption

Gabriela Motroc
Java

© Shutterstock / ALEX S

What’s cooking in the Java world? Plenty, actually. Java 9 is coming in September, Jigsaw has finally its approval and our Java influencers are offering us some valuable insight into the future of this programming languages. In this 3-part interview series, we shed some light on where Java is headed to and what language is a worthy opponent.

Java’s not going anywhere

Twenty-two years after its release, Java is still developers’ darling. If this programming language is dying, it’s safe to say that death becomes it — it has died and resurrected more times than we can count and it’s still on its feet. We’ll be seeing a lot more of Java in September when Java 9 is released.

Java’s been around for a long time now, and has had time to establish superior tools for writing, maintaining and debugging code. For example, various development environments like Eclipse or NetBeans have made it easy to write Java. They can even be used to program and write code in emerging Java-based languages.

Why do we see, time and again, articles announcing its imminent death? As Mark Twain might have said, the reports of Java’s death are greatly exaggerated.

Dr. Wayne Citrin, CTO and co-founder of JNBridge, LLC

The power list

Who has the most influence on Twitter? The JAX team has trawled thousands of tech accounts to find 20 Twitter profiles that belong in every Java developer’s Twitter stream. If you want to hear what they have to say about Java 9, what they want to see in Java 10 and what they think of Java’s opponents, you’re in luck!

See the list here.

In this 3-part interview series, 11 Java influencers weigh in on Java’s popularity, talk about the modular ecosystem and reveal what’s on their wish list for Java 10.

In the first part of this interview series, we invited our Java influencers to talk about the possibility that Node.js might overtake Java and comment on Stanford’s decision to teach its famous introductory course in Javascript instead of Java.

asap

11 answers: Some people seem to believe that Node.js might have a chance at overtaking Java in the near future. Can Java really be dethroned?

Meet the Influencers

Markus Eisele is the Head of Developer Advocacy at Lightbend and a Java Champion.

Mario Fusco is a senior software engineer at Red Hat working on Drools, the JBoss rule engine and a Java Champion.

Marcus Biel is a Software Craftsman, JCP member and CleanCode Evangelist.

Lukas Eder is the founder and head of R&D at Data Geekery GmbH, the company behind jOOQ and a Java Champion.

Trisha Gee is a Developer Advocate at JetBrains, a key member of the London Java Community and a Java Champion.

Vlad Mihalcea is CEO at Hypersistence and author of High-Performance Java Persistence.

Jake Wharton is an Android Engineer at Square Inc.

Thorsten Heller is CEO at greenbird Integration Technology providing Grid Intelligence Platform Metercloud

Baruch Sadogursky is the Developer Advocate of JFrog.

Quentin Adam is the CEO of Clever Cloud.

Bruno Borges is Oracle’s ‎Principal Product Manager responsible for Developer Engagement on Oracle Cloud Platform, Java, and related technologies for application development.

Markus Eisele: The one thing that the JavaScript revolution clearly shows is that our world will continue to be polyglot and diverse. Going forward, we won’t have the luxury of just learning a single language and relying on platforms and industry standards to be the default when it comes to application development.

Java as a language still has the advantage of being broadly known and taught. Another part is also shifting very quickly: centralized infrastructures are dying and full stack Java applications with server-side rendering are following quickly. The number one language for front-ends is JavaScript these days. There’s also Go in cloud environments and container-land. This list will expand while Java will keep its dominance for a little longer.

Some companies are adopting Node.js because right now there are many more Javascript developers and they are also generally cheaper.

Mario Fusco: Why Node.js is attracting so many people is really beyond my understanding. We are in the era of multicore CPU, even my smartphone has eight cores, and do we really want to run on our servers a single threaded framework? In a typical Node.js application running on an 8-core machine, it often happens that one core is always at 100% of its utilization while the other seven are practically idle.

If developers like the event-loop pattern implemented by Node.js, there are many other Java framework providing the same thing in a more robust and sane way. The only understandable reason why I think some companies are adopting Node.js is that right now there are more Javascript developers and they are also generally cheaper.

I saw a similar trend with inverted roles a decade ago. There were many Java programmers who were required to perform web-side development and they didn’t want to use (or learn) Javascript. For this reason, we had a few frameworks like GWT allowing to do web development in Java. GWT isn’t that bad but doesn’t scale very well and definitively doesn’t allow to create website with millions of concurrent users. Node.js is the GWT counterpart on the server-side and indeed suffers from similar problems.

My opinion is that we should always use the right tool for the job at hand. Javascript is ok (even if not ideal) for web development, but for the backend, I can think of tons of better alternatives.

Marcus Biel: To me, this a comparison really doesn’t matter, it’s a comparison of apple and pears. Java is best suited for complex (multithreaded) business systems, Node.js is great for real-time web applications.

Ask a Java developer and he or she will favor Java, ask a Node.js developer, and they will favor Node.js. There is room for both.

SEE ALSO: Java is alive and well, thank you, and is just as relevant as ever

Lukas Eder: The only people who claim this are the vendors behind Node.js. We cannot say anything about Java’s long-term future (next 20 years) but if “near future” means the next 2-3 years, Java isn’t going to be dethroned by anyone.

Java is still very popular and the upcoming improvements in project Valhalla, Graal and Truffle, and many others will ensure that Java will keep up with the state of the art.

Trisha Gee: I think we’re trying to compare oranges to apples here. Java is a fantastic server-side language, heavily used by enterprises for many reasons, including rock-solid backwards compatibility; cross-platform support (in terms of operating systems); and the very large pool of Java developers (from junior to extremely experienced) that are available to hire.

Node.js is also used in the enterprise environment as well, but not for the same types of applications — we see it much more in startups, used for rapid prototyping and nimble application development (in organizations of all sizes).  I personally believe that given the enormous numbers of problems that are/can be solved with technology, there’s plenty of space for both languages, as well as many other languages and frameworks.

Node.js lacks the maturity of many battle tested frameworks you have in Java.

Vlad Mihalcea: I don’t think so. Node.js is very good for rapid prototyping but it lacks the maturity of many battle tested frameworks you have in Java.

Jake Wharton: The JavaScript community has been backing their way into a lot of the things that make Java really dominant: static typing, stronger tooling, and a breadth and depth of the library ecosystem. While I think this is a step in the right direction, there’s still a lot of work to be done in all three areas to truly supplant Java in the long-term.

Thorsten Heller: Yes and no. I’m convinced that Java might be dethroned or at least challenged in the near future but I won’t bet on Node.js. If I would have to, I’d put some money on Kotlin. Its simplicity, lean syntax, functional approach – just some of the features – will boost its popularity. And maybe boost cleaner code? In general, I’m sure the near future will nevertheless be more heterogeneous: the best fitting programming language for a given task.

For me, Java is more of a platform than a language.

Baruch Sadogursky: Java is to JavaScript as ham is to hamster. There are many programming languages and they don’t necessarily compete with each other. JavaScript is an amazing front-end language and a true king of the browser, but JavaScript on the server side in general (and Node.js in particular), while being an interesting experiment, won’t replace a proper back-end oriented language such as Java.

Quentin Adam: I do not think there is any chance this will happen. Node and Java are very different tools for different usage. Node and the tooling suite is now helping a lot to make web front a real ecosystem with great build tools, and some small server part.

But Java has a very powerful ecosystem and large codebases, the possibility to replace all with Node is very slim. In some areas, like Big Data (Hadoop ecosystem or Kafka) the JVM is the primary choice for the platform quality itself, and there is now way Node can power Hadoop in the future. We will see more and more projects using Node and Java together. Node will be often front facing to users, but it will not replace Java everywhere.

Bruno Borges: 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?

Markus Eisele: With Java being the number one programming language in the enterprise, it leads to a vibrant ecosystem of tools, standards and methodologies. It isn’t the most concise or most beautiful language, but it can be scaled to large teams and we learned to ensure a decent quality. The front-end development has mostly switched to JavaScript already and I think that the visual parts of applications have always been the entry point into programming.

To me, it is a natural progression and doesn’t necessarily tell a story about relevance or popularity of Java. More about its usability and learning curve.

SEE ALSO: Java is on a slippery slope, Tiobe index shows

Mario Fusco: I saw this and I was surprised, not because they dropped Java but because they chose Javascript. Java is probably not a good language from a didactic point of view but for sure Javascript is much worse on this aspect because it tempts (and sometimes requires) any sort of bad hacks instead of making the developer think in a clear way.

I believe that a university shouldn’t choose a programming language because it is trendy and widely adopted in the industry, but because it teaches you something and improves your reasoning skills. Alan Perils once said: “A language that doesn’t affect the way you think about programming is not worth knowing”. Unfortunately, I think that both Java and Javascript can be listed in this category. We learn them more for business reasons than because we enjoy using them. In my opinion, a language like Smalltalk for what regards the Object Oriented Programming and one like Haskell to cover the functional aspects, not to mention a modern Lisp-esque language like Clojure, would all have been better choices.

Java is probably not a good language from a didactic point of view but for sure Javascript is much worse on this aspect.

Marcus Biel: To me, the first question is: What does this say about Stanford? Stanford believes that learning Java is bad as a first programming language. That’s all this says, and it’s okay if they think that.

Lukas Eder: Absolutely nothing. When I studied computer science at EPFL (where the Scala language was created), my programming courses included funky languages like Ada, VSDL, PL/SQL, SQL, Java, XSLT, Scala, Prolog, C++. If I had studied today, I’m sure JavaScript would have been part of the curriculum as well.

I do hope that we, as an industry, including university faculties, realize that individual languages do not matter in the big picture. Each language has its place and reason for being and Java has been the most popular for a variety of reasons. Individual universities are not going to change that, and why should they?

Trisha Gee: Again, this is a case of using the right tool for the job. JavaScript is arguably easier to teach to beginners — it is lower-ceremony, much less boilerplate, and you can use tools like a REPL to get fast feedback.  Although Java 9 will have a REPL, overall Java has quite a lot of ceremony (setting up your environment, classpaths, an IDE or editor) plus more boilerplate for typing, all of which gets in the way of learning programming.  It’s understandable that anyone teaching coding would want something lightweight and easy to get started.

Java is still being taught at Stanford for more advanced courses, which shows it’s still relevant and important to learn. In particular, some of the things which may at first seem to get in the way, like static typing, a stricter structure (in terms of classes etc) may seem more useful to a developer once they get the hang of how basic coding works.

Vlad Mihalcea: Although it might help them for teaching reasons since you don’t need to compile code and can run all examples from the browser, I don’t think that this move will affect Java’s popularity.

Jake Wharton: I don’t think this reflects badly on Java but instead positively on JavaScript. It’s a language which is much more forgiving than Java in its dynamic typing and primitives which also doesn’t require a compilation step to execute. Programming introduction should focus on fundamentals like critical thinking and problem solving and for that you don’t need the benefits Java affords.

Thorsten Heller: The first steps might be easier with Javascript, so I’d assume that’s Stanford’s motivation for dropping Java. Getting people even faster up and running and giving them quickly some moments of success. Nevertheless, Java as a platform with different programming language such as Java itself, Kotlin, Scala, etc. won’t drop in relevance or popularity. The Java platform is and will be the enterprise platform of the future.

Baruch Sadogursky: Universities are usually years behind the industry trends in adopting programming languages for their courses. At Stanford, Java was adopted in 2002, five years after it was introduced and 2-3 years after it already became extremely popular. So, Stanford just catching up on Javascript popularity among younger developers trend we see for a number of years now in surveys like StackOverflow and GitHub stats.

Quentin Adam: It’s more the popularity of JavaScript. For a beginner, JavaScript will be the good choice to get good UI fast and simple. Java will be learned after if people need it.

Bruno Borges: 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”.

The second part of the interview series is all about Java 9: we dissect the JCP Executive Committee’s decision not to approve the Public Review Ballot for JSR 376 [Reconsideration Ballot has been approved] and we talk about the modular ecosystem. 

If you’d like to meet the top Java movers and shakers, join us in London in October.

asap

Author
Gabriela Motroc
Gabriela Motroc is an online editor for JAXenter.com. Before working at S&S Media she studied International Communication Management at The Hague University of Applied Sciences.

Comments
comments powered by Disqus