Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

The Most Important Element of the Java Ecosystem

DZone's Guide to

The Most Important Element of the Java Ecosystem

The Java Virtual Machine has been and remains the most important element of the Java ecosystem. Java's long history of community support has kept adoption high as well.

· Java Zone ·
Free Resource

Java-based (JDBC) data connectivity to SaaS, NoSQL, and Big Data. Download Now.

To gather insights on the current and future state of the Java ecosystem, we talked to executives from 14 companies. We began by asking, "What do you consider to be the most important elements of the Java ecosystem?" Here's what the respondents told us:

JVM

  • The JVM is the most critical element followed by the vastness of the libraries and the completeness of the toolchains. The well-roundedness makes it so usable. 
  • The JVM is the foundation of the ecosystem. It provides fundamental VM support as well as for Scala and Kotlin. The interoperability of languages is guaranteed by the JVM. This is the Java ecosystems’ second biggest advantage. The set of libraries can play with each other in a nice, predictable way. 
  • The JVM is a nice platform – fast and runs code everywhere. Open versus others like .Net. Has Maven and Gradle that will work with any operating system.

Maturity

  • 1) The simplicity of the language, which enables the language to be used in so many diverse ways. 2) The stability of the language: because the language evolves slowly, the code you see today when you look at the Internet is very similar to the code in previous years. This enables developers looking for solutions to figure them out easily. 3) The maturity of the ecosystem, which enables a developer to find support to whatever they need, no matter how historical or cutting edge the things they need are. 4)The robustness of the IDEs: Java IDEs are the most advanced IDEs today. 5) The JVM, which enables languages other than Java to flourish. 
  • The maturity level is very high. A lot of frameworks, libraries, and IDEs that makes my life and job easier.

Openness

  • First and foremost, the fact that the language is open source while championed by a large company is critical. I think the fact that Java is moving to an annual release cycle will make it much more agile and responsive to modern software concerns. The JVM is a critical resource. Other languages will come and go (Rust?) but the JVM is what makes Java so important in the enterprise. It takes years to make a platform that can be managed at scale in the enterprise. 
  • Java benefits greatly from an incredibly vibrant and extensive Open Source Software ecosystem.  The OSS community has continued to enrich Java in numerous ways.  There is almost no average enterprise application challenge that has not been met by the Java OSS community.  Plus, even as we see continued evolution in new architecture styles and patterns (e.g. microservices, cloud-native, 12 Factor, FaaS), often driven by the rise of the Cloud, Java’s OSS community continues to innovate at an amazingly rapid clip. 
  • The openness and the will to open source. A lot of the most important parts, such as e.g. the JavaEE-specifications or the Spring Framework, are open sourced. Being bred from Java SE which is also available through the OpenJDK this is in the DNA of Java.

Compatibility

  • Support that enables developers to build once and run everywhere. Libraries, open source tools. 

  • High performance. Consistency. Compatibility evolution with reference implementation, specification, and test compatibility kit (TCK). If you use APIs the software will work in new releases. Move from release to release with very few changes. It allows our customers to write software that will last. Things don’t break. Well specified virtual machines (VMs) and APIs. Independent implementation makes for a great ecosystem. Able to drive innovation because you know where the compatibility issues are. As enterprises invest in known compatible implementation where they are. The language will be specified. Powerful design. Good implementation from vendors.
  • The language is universal.

Other

  • The community. No one participant is more important than the community. We need more than one player to participate. We really value developer feedback. We also have corporate contributors and users along with the Apache and Eclipse Foundations and the 400 Java User Groups around the world. 75% of the JCP is made up of individual Java developers. There are 12 million Java developers. 
  • The community, the open JDK, Spring, and Java EE now Jakarta EE serving as the foundation for Spring.
  • The reason we originally picked Java was twofold – it is extremely stable and also very good for massively multithreaded processing. Because we run MMOs, Java lets our servers efficiently run many thousands of concurrent threads which enables thousands of players to interact and chat together in one shared world.

Here’s who we spoke to:

Respondents:

  • Gil Tayar, Senior Architect and Evangelist, Applitools
  • Frans van Buul, Commercial Developer, Evangelist, AxonIQ
  • Carlos Sanches, Software Engineer, CloudBees
  • Jeff Williams, Co-founder and CTO, Contrast Security
  • Doug Pearson, CTO, FlowPlay
  • John Duimovich, Distinguished Engineer and Java CTO, IBM
  • Brian Pontarelli, CEO, Inversoft
  • Wayne Citrin, CTO, JNBridge
  • Ray Augé, Sr. Software Architect, Liferay
  • Matt Raible, Java Champion and Developer Advocate, Okta
  • Heather VanCura, Chair of the Java Community Process Program, Oracle
  • Burr Sutter, Director Developer Experience, Red Hat
  • Ola Petersson, Software Consultant, Squeed
  • Roman Shoposhnik, Co-founder, V.P. Product and Strategy, Zededa
  • Connect any Java based application to your SaaS data.  Over 100+ Java-based data source connectors.

    Topics:
    java ,jvm ,maturity ,backward compatibility ,openness

    Opinions expressed by DZone contributors are their own.

    {{ parent.title || parent.header.title}}

    {{ parent.tldr }}

    {{ parent.urlSource.name }}