The Most Common Problems With Java Ecosystem

DZone 's Guide to

The Most Common Problems With Java Ecosystem

While Java is undoubtedly popular, its verbosity, the inability to put out new versions on time, and dependency management are often-cited concerns with the ecosystem.

· Java Zone ·
Free Resource

To gather insights on the state of the Java ecosystem today, we spoke to nine executives who are familiar with the ecosystem. We asked these experienced Java professionals "What are the most common problems with the Java ecosystem today?" Here's what they told us:

  • The pace at which things move. Java 8 was delayed a couple of years. Adoption is slow. The perception is that it’s hard to innovate with Java. Java 9 has already been delayed a couple of times. Java developers are seen as “bottom feeders.” People look at others for innovation. The language is verbose relative to Kotlin, Groovy, and Scala. There are greater opportunities for errors.
  • When building large systems, dependency management can affect many languages. As an ecosystem grows, we have Maven Central and MPM, yet fundamental dependency models have flaws. This is destined to occur with all languages that scale.
  • Java has been around. Existing applications are running newer versions and frameworks. Agencies and contractors are careful to select mature frameworks for front-end development and service side. The front end has been taken over by JavaScript and React. Java is best in the mid-tier managing business services. Adopt mature open source frameworks to build out apps.
  • Delivering things on time. We’re using an early access version of Java 9. We don’t say we support Java 9 yet because it’s still a moving target.
  • The way Java 8 and 9 come out with delays, it feels like a waterfall process. The release process is not very transparent. It’s still up in the air whether Oracle is good for Java. Regardless, the Java community will carry it forward. The perception is that the platform is slow and doesn’t scale. Access to native platform functionality will improve in Java 9. For large applications on complex platforms with third-party dependencies, you can still get into “JLL hell.” This has gotten better over time. The intersection between commerce and community needs to get better and more transparent. At some point, it may be necessary to separate the JDK and the JVM.
  • Less cool. Wordy language that requires a lot of glue code to bring everything together. This adds weight and slows down the application.
  • The Java ecosystem is so rich that it can be difficult to know everything that’s available and the best solution. There are three or four solutions to every problem. Unfortunately, developers will incorporate an open source solution and never go back and see if it needs to be updated. People are not updating libraries, and this leads to massive vulnerabilities. Developers don’t know it’s a problem, and it can be costlier to update a library than to just build something without the security vulnerabilities.
  • It can be difficult to get started. We need more mentors to help developers to see the best way to navigate the ecosystem. 
  • Dependencies are a double-edged sword. You must manage them so they don’t collide with someone else’s environment. Need to know how to manage assemblies. Java is executing all at once in a class loader.

What do you consider to be the most common problems with the Java ecosystem?

And in case you're wondering, here's who we talked to:

  • Kehinde Ogunde, Developer, Andela
  • Eric Shapiro, co-founder and Chief Executive Officer, ArcTouch
  • Prem Chandrasekaran, V.P. of Software Engineering, Barclaycard
  • Rajiv Kadayam, Senior Director of Technology Strategy, eGlobalTech
  • Anders Wallgren, CTO, Electric Cloud
  • Ray Augé, Senior Software Architect, Liferay
  • Wayne Citrin, CTO, JNBridge
  • Kunal Anand, CTO, Prevoty
  • Tim Jarrett, Director of Product Management, Veracode
dependency management, java, java adoption, java ecosystem

Opinions expressed by DZone contributors are their own.

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

{{ parent.tldr }}

{{ parent.urlSource.name }}