BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage Articles Java InfoQ Trends Report - July 2019

Java InfoQ Trends Report - July 2019

This item in japanese

Bookmarks

Key Takeaways

  • The soon to be launched Java 13 (non-LTS) and the recently released Java 12 (non-LTS) have been added to the innovator stage of adoption within our Java and JVM trends graph.
  • Java 11 (LTS release) has moved to early adopter (EA), and Java 8 -- which was marked as end-of-life for commercial use in January 2019 -- has moved to late majority (LM).
  • Non-HotSpot JVM are seeing increased adoption, with OpenJ9 moving to EA, and the addition of Graal to our adoption graph. We believe that the increasing adoption and importance of cloud computing is driving organisations to utilise Java Runtime Environments (JREs) that embrace “cloud-native” principles such as a fast start-up time and a low memory footprint.
  • Graal in itself may not be overly interesting to regular developers, but the ability to compile Java application to native binaries, in combination with the support of polyglot languages, is ensuring that we keep a close watch on this project.
  • There has been a shuffle of Java microservice frameworks, with Spring Boot and Spring Cloud moving into late majority, as these are trusted choices for creating Java microservices within the enterprise. Helidon has joined Microprofile within EA, and we believe that vert.x will not progress past the EA phase, due to it’s relatively niche appeal.
     

This article provides a summary of how the InfoQ editorial team currently see adoption of technology and emerging trends within the Java space, which focuses not just on Java the language but also on related languages like Kotlin and Scala, the Java Virtual Machine (JVM), and Java-based frameworks and utilities. We discuss trends in core Java, such as the adoption of Java 11 and 12, and also the evolution of web-based frameworks like Spring Boot and MicroProfile.

This report aims to assist technical leaders in making mid-to-long term technology investment decisions, and also help individual developers in choosing where to invest their valuable time and resources for learning and skill development. This is our first published Java trends report, although the topic has received ample coverage since InfoQ launched in 2006, and we have been tracking Java and JVM trends internally for many years.

Both InfoQ and QCon focus on topics that we believe fall into the “innovator, early adopter, and early majority stages”. What we try to do is identify ideas that fit into what Geoffrey Moore referred to as the early market, where “the customer base is made up of technology enthusiasts and visionaries who are looking to get ahead of either an opportunity or a looming problem”. We are also on the lookout for ideas that are likely to “cross the chasm” to broader adoption. It is perhaps worth saying, in this context, that a technology’s exact position on the adoption curve can vary. As an example, Java 11 may be widely adopted at this point amongst San Francisco Bay Area companies but may be less widely adopted elsewhere.

Notable changes since our internal 2018 Java trends report was reduced include the addition of Java 13 (a non-LTS release) within the innovator stage of adoption. This has caused a cascading effect of moving Java versions along the adoption curve, with Java 11 (an LTS release) moving to early adopter (EA), and Java 8 (which is now officially tagged as end-of-life for commercial support from Oracle) moving to late majority (LM).

We are seeing increased adoption of non-HotSpot JVMs, and we believe OpenJ9 is now within the early adopter stage, and we have also introduced Graal to the graph. We believe that the increasing adoption of cloud technologies within all types of organisation is driving the requirements for JREs that embrace associated “cloud-native” principles such as fast start-up times and a low memory footprint. Graal in itself may not be overly interesting, but the ability to compile Java application to native binaries, in combination with the support of polyglot languages, is ensuring that we keep a close watch on this project.

There has been a shuffle of Java microservice frameworks, with Spring Boot and Spring Cloud moving into late majority. It’s worth remembering that this means that the rate of uptake is slowing (due to market saturation), and not that developers are moving away from the framework. Helidon has joined MicroProfile within EA, and we believe that vert.x will not progress past the EA phase, due to the relatively niche appeal.

For context, here is what our internal topic graph looked like for the second half of 2018.  The 2019 version is at the top of the article.

Java 2018

The following is a lightly-edited and aggregated summary of the corresponding internal email conversation between several of the InfoQ Java editors, which provides for more context for our recommended positioning on the adoption graph.

Daniel Bryant, Independent Tech Consultant, Product Architect at Datawire, and InfoQ News Manager:

So, it’s time to update the Java trends graph! I'm keen to explore if all of the topics in our internal 2018 tracker are located in the correct adoption phase, and also identify any topics to be removed or added.

For a starter for ten, I would suggest changing in innovator:

  • Java 11 -> Java 12/13
  • Move OpenJ9 to early adopter (EA)
  • Add Adopting Modularisation
  • Add Quarkus

In EA:

  • Move Spock to late adopter (LA)
  • Move microservice frameworks to LA, with the exception of Lagom and MicroProfile?
  • Add Helidon

I'm happy to see the late adoption and laggard phases remain the same.

Erik Costlow, Software Architect, focused on security and Java:

Here's my take:

  • Move Java 8 to Laggards. It was released in 2014 and Oracle ended public support.
  • LTS Java (JDK11) is still early-adopter, I think
  • non-LTS (JDK 13?) is Innovator, rotating whichever is current.
  • Graal is not key in itself; people are really wanting two things:
    • Statically compiled native Java applications (native_image)
    • Polyglot Java (e.g. Ruby Truffle)
    • There is an outstanding issue of if Graal native_image is Java, or if other vendors can use the same closed-world assumption for static compilation. The issue is that native_image does not pass the TCK. The key question is are other JVM vendors permitted to do this or what would happen if they did?
  • Graal and OpenJ9 should just become non-HotSpot JVM since we have Excelsior, Azul, Liberica, Corretto, Alibaba Dragon, AdoptOpenJDK, RedHat, and so on.
  • Node on the JVM is dead.
  • Move Testing Frameworks into Early Majority
  • Move Spring Boot into Late Majority, or I see this a lot and it's a safe choice.
  • Add "Migrating Java EE to Jakarta EE" as Innovators. This will be interesting and I hope it picks up.

Right now there are too many Java distributions and releases. I would like to see an Innovator talk about managing this at scale, or how people can actually do this to operate between teams, systems, and other things where some applications or services change and others don't. If an application is native-compiled, who becomes responsible for patching that "JRE" and what does that mean?

Dustin Schultz, Lead Software Engineer, Pluralsight Author, and technology evangelist:

+1 on all your suggestions for innovator (technically Quarkus is vert.x and MicroProfile, but I agree that it’s innovator.)

Personally, I don’t think Spock has ever (or will ever) make it past EA. I haven’t seen tons of adoption.

I’d remove all alternate microservices frameworks except Vertx from EA ... potentially could leave Lagom. Not sure that either will make it past this though.

It may be worth moving Groovy to late majority since its pretty flat and will probably decline.

Charles Humble, Editor in Chief at InfoQ:

Agree with most of this. “Adopting Modularisation” is interesting. I’m sure the OSGI folks would have something to say about having it in innovator, but in truth it is probably correct.

I think we should move Clojure to late majority. It’s still used, of course, but I sense its use is in decline, and it was always quite niche.

I would remove Ceylon. It never got much traction, and I don’t think moving to Eclipse has helped it much; there’s very little activity on the project as far as I can see - roughly 10 commits in the last 6 months.

With testing frameworks that picture looks quite stable to me at this point. Should we drop it? I’d roughly rank in order: Junit, TestNG/Cucumber, and finally, Spock in terms of use/adoption, but I don’t think it’s changing much?

SmartBear recently acquired Cucumber which might give it a boost, but even so, I’m inclined to drop tracking these.

Does node on the JVM get much interest? I’d remove this I think.

I would be tempted to move Kotlin to Early Majority. It seems to be the JVM language that I hear the most about these days, thanks mainly to its popularity for Android development I think, and I would say it has crossed the chasm, although I would guess it lags someway behind something like Groovy, or, say, Swift or Go.

I think Scala can stay in late Majority - use is declining I would say, but very slowly.

I’m not quite sure how to handle the Java version situation. My reading is that the non-LTS releases have pretty limited adoption and maybe all live in innovator, but that’s kind of weird when some of them are also EOL. Still, in terms of graphing it, I guess Java 8 is still late majority, Java 11 in EA and Java 13 in innovator?

Ben Evans, Principal Engineer & JVM Technologies Architect at New Relic, Inc.:

Agree completely about non-LTS releases of Java. The data from production deployments that I see has a stable and rising 5+% of Java 11 deployments so that feels like EA to me.

Definitely remove Ceylon - it never got enough traction and its lunch was basically eaten by Kotlin.

Java 8 should stay in a majority column - it still has significant amounts of new services being written in it, and there are still major libraries (e.g. Cassandra) that are not compatible with *any* post-8 version. We haven't yet seen a major library to drop Java 8 support yet (I believe ElasticSearch will be the first).

About the Authors

Ben Evans is a co-founder of jClarity, a JVM performance optimization company. He is an organizer for the LJC (London's JUG) and a member of the JCP Executive Committee, helping define standards for the Java ecosystem. Ben is a Java Champion; 3-time JavaOne Rockstar Speaker; author of "The Well-Grounded Java Developer", the new edition of "Java in a Nutshell" and "Optimizing Java" He is a regular speaker on the Java platform, performance, architecture, concurrency, startups and related topics. Ben is sometimes available for speaking, teaching, writing and consultancy engagements - please contact for details.

Erik Costlow is a software security expert with extensive Java experience. He manages developer relations for Contrast Security and public Community Edition. Contrast weaves sensors into applications, giving them the ability to detect security threats based on how the application uses its data. Erik was the principal product manager in Oracle focused on security of Java 8, joining at the height of hacks and departing after a two-year absence of zero-day vulnerabilities. During that time, he learned the details of Java at both a corporate/commercial and community level. He also assisted Turbonomic's product management team to achieve $100M annual revenue in data center/cloud performance automation. Erik also lead product management for Fortify static code analyzer, a tool that helps developers find and fix vulnerabilities in custom source code. Erik has also published several developer courses through Packt Publishing on data analysis, statistics, and cryptography.

Dustin Schultz is a Lead Software Engineer, a Pluralsight Author, and a technology evangelist at heart. He holds a Bachelors and a Masters in Computer Science and has been developing software for over 15 years. Dustin loves all things tech, and you can often find him geeking out about the latest technology. He also loves to learn and has always wanted to know how everything works, so much that when he was little, his mom bought him a book on, "how things work" because she got tired of all his questions.

Charles Humble took over as editor-in-chief at InfoQ.com in March 2014, guiding our content creation including news, articles, books, video presentations and interviews. Prior to taking on the full-time role at InfoQ, Charles led our Java coverage, and was CTO for PRPi Consulting, a remuneration research firm that was acquired by PwC in July 2012. For PRPi he had overall responsibility for the development of all the custom software used within the company. He has worked in enterprise software for around 20 years as a developer, architect and development manager. In his spare time he writes music as 1/3 of London-based ambient techno group Twofish, whose debut album came out in February 2014 after 14 years of messing about with expensive toys, and spends as much time as he can with his wife and young family.

Daniel Bryant works as an Independent Technical Consultant and Product Architect at Datawire. His technical expertise focuses on 'DevOps' tooling, cloud/container platforms, and microservice implementations. Daniel is a Java Champion, and contributes to several open source projects. He also writes for InfoQ, O'Reilly, and TheNewStack, and regularly presents at international conferences such as OSCON, QCon and JavaOne. In his copious amounts of free time he enjoys running, reading and traveling.

 

Rate this Article

Adoption
Style

BT