Posts

Java Developer Survey: Trends and Practices in Java Development

Oct 31, 2024
Alex Belokrylov
21.2

Executive summary 

BellSoft recently conducted the Java Developer Survey to explore the key challenges and trends shaping the Java development landscape today. Unlike other Java surveys, this initiative aimed to highlight often-overlooked concerns, focusing on the gap between IT priorities and business needs, understanding real-world usage of new tools and Java features, and identifying emerging industry trends. The survey, conducted by the BellSoft Research Team, gathered insights from over 300 Devoxx Belgium attendees, offering a fresh perspective on what developers encounter in production environments.

Source: 2024 BellSoft Java Developer Survey 2024 Report Key Findings BELIEVE THAT THE PERFORMANCE OF JAVA APPLICATIONS IN THEIR COMPANY CAN BE IMPROVED 73% AGREE THAT BUSINESS MANAGERS OFTEN UNDERVALUE JAVA’S POTENTIAL TO REDUCE CLOUD COSTS 58% DO NOT REGULARLY UPDATE THEIR JDK "GREEN JAVA" HAS BECOME AN IMPORTANT FOCUS FOR USE AI TOOLS FOR CODE WRITING 10% 18% 74%

Part 1. Performance Issues of Java 11 and Older Versions

Despite the release of newer Java versions, Java 8 and 11 continue to dominate production environments. According to various sources (New Relic’s 2024 State of the Java Ecosystem or JetBrains’s 2023 Dev Ecosystem Report), 29-50% of respondents continue to use Java 8, while 32-38% rely on Java 11. In our survey, two-thirds of respondents admitted to still running applications on Java 11 or earlier versions, which is quite staggering.

We asked respondents why they are not migrating to newer versions of Java and how they address performance issues. Here’s what we discovered:

Fact 1: Migrating to Newer Java Versions Is Not a Business Priority

When asked why migration is not yet done, 18% cited third-party library dependencies as a primary obstacle. However, the broader trend reveals a disconnect between technical and business priorities.

For 21% of respondents, migration is not pursued because businesses do not see it as an urgent need. Another 17% indicated that their teams lack the time and resources for testing and migration, which is also often allocated by the business managers, product and team leads.

If you have a Java application running on JDK 11 or older, what factors have prevented the migration to newer Java versions? 18% 17% 13% 21% 32% Dependency on third-party libraries that don't support newer versions Lack of time or resources for testing and migration Complexity of the migration process It’s not a priority for business at the moment We don’t have any applications built on JDK 11 or older 0% 10% 20% 30% 40%

Business leaders may not see the immediate value in upgrading to new versions of Java, missing potential cost-saving opportunities and leaving companies reliant on older, less efficient and sometimes less secure technology.

We were surprised to find that those who do not have applications running on Java 11 or older represent a minority — just over 30%. This finding does not align with the trend we observe in Liberica JDK downloads.

Fact 2: Additional Resources Are Spent on Enhancing Performance on Java Versions 11 and Older

While some are preparing for future migrations, almost a quarter (23%) of respondents allocate additional budget to improve the performance of applications running on Java 11 and older:

  • 5% have hired external consultants to optimize JVM settings
  • 9% have internal dedicated performance teams working to improve system efficiency
  • Another 9% resort to scaling infrastructure to maintain performance levels

Meanwhile, 19% of respondents are taking no action, missing potential opportunities for cost-saving and optimizing resource utilization .

If you have a Java application running on JDK 11 or older, how do you enhance their performance to meet new requirements? 4.90% 9.15% 19.28% 9.48% 18.63% 38.56% Involve external consultant to tune JVM settings Dedicated Performance team handles it Preparing to migrate to new version of Java Scaling Infrastructure It’s not a priority for business at the moment We don’t have apps that run on Java 11 or older 0.00% 10.00% 20.00% 30.00% 40.00%

Older applications could become more cost-efficient by either reducing resource consumption or handling increased workloads. This could be achieved by migrating to newer Java versions or implementing specialized JDKs like Liberica Performance Edition, which are designed to boost performance without extensive labor costs. Businesses that invest in these strategies stand to gain in both operational efficiency and cost savings.

Part 2. Security and Performance 

At BellSoft, security and performance are the two pillars of our development philosophy. While it's generally assumed that all organizations regularly update their applications and optimize performance, we wanted to verify how these practices are truly applied in production environments. 

Fact 3: 10% Are Not Updating Their JDK Regularly, Leaving Applications Vulnerable to Security Threats

Contrary to expectations, our survey revealed that only 65% of respondents update their applications regularly:

  • 10% update their applications with every JDK release, regardless of whether it's an LTS version
  • 46% rely on LTS releases and ensure regular updates with each CPU/PSU release
  • 9% only apply CPU/PSU updates and migrate to newer Java versions when necessary

While keeping software up to date is universally recognized as critical for security, 10% of respondents admitted they only update their JDK when critical issues arise. Additionally, 23% reported that their update policies depend on the specific service being used.

How frequently does your company update the JDK? 10.13% 46.08% 9.15% 11.44% 23.20% We update with every JDK release (regardless of whether it’s an LTS version or not) We use only LTS releases and regularly update with each CPU/PSU release We only apply CPU/PSU releases and migrate to newer Java versions as needed We update only when critical issues arise (e.g., system failures or bug fixes) Depends on the service. Some are updated regularly, some are rarely updated 0.00% 10.00% 20.00% 30.00% 40.00% 50.00%

Failing to regularly update the JDK poses a significant security risk, leaving applications vulnerable to attacks. While updates can occasionally introduce bugs, applying Critical Patch Updates (CPU) and Patch Set Updates (PSU) is essential for maintaining security and system integrity.

CPUs contain security patches and critical bug fixes, while PSUs include all CPU fixes along with additional non-critical fixes and enhancements. Since CPUs include fewer changes, they can be integrated into the project without disrupting the application running in production.     

For those using outdated versions like Java 6 and 7, it’s crucial to migrate to newer versions (Java 8 or later) or get the extended support from vendors like BellSoft to receive regular updates and maintain security. 

Those still running Java 5 or earlier have no choice but to migrate, and BellSoft engineers specialize in assisting companies with these kinds of migrations.

Fact 4: Delays in Releasing Security Updates and New Versions Are Key Factors in Switching JDK Providers 

Our survey also found that 25% of respondents would consider switching their OpenJDK provider if there were delays in releasing security updates or new Java versions.

The top reason for changing JDK providers, however, was licensing costs and restrictions, cited by 33% of respondents. Other key factors included:

  • Lack of support for necessary platforms or architectures
  • Absence of desired features (e.g., CRaC, GraalVM)
  • Poor performance (19%) and vendor lock-in (16%)

Interestingly, fewer than 10% of respondents said that the lack of JRE binaries or inadequate support and lack of service-level agreements (SLA) would lead them to change providers. 

Additionally, 37% of respondents stated that they are not allowed to choose their stack due to company policy.

What factors would make you consider switching from your current JDK vendor? 21.90% No support for necessary platforms or architectures 26.80% Delays in releasing security updates and new versions 19.93% Lack of certain features (CRaC, GraalVM, Leyden etc) 33.01% Licensing costs and restrictions 7.52% Lack of JRE binaries 37.58% I cannot choose the stack due to company policies 9.80% No support and SLA 18.95% Poor Performance 16.67% Vendor lock-in 0.00% 10.00% 20.00% 30.00% 40.00%

Fact 5: 73% Believe the Performance of Java Applications in Their Company Can Be Improved

Although many assume that production applications are already optimized for performance, only 15% of respondents said that they’re satisfied with the current performance of their Java workloads. 

A more significant portion (39%) is actively working on improving performance, while a staggering 34% said it is not a priority for their company. 

This highlights a disconnect between technical teams and operational priorities of business, where performance optimization is often undervalued.

Do you believe the performance of Java applications in your company can be improved? 38.89% 33.66% 15.03% 12.42% Yes, and we’re actively working on improving it Yes, but it’s not currently a priority for the company No, we are satisfied with the current level of performance I’m unsure about the performance of our Java applications 0.00% 10.00% 20.00% 30.00% 40.00%

Fact 6: 58% Agree That Business Managers Often Undervalue Java’s Potential to Reduce Cloud Costs

A majority of respondents (58%) agreed that business managers often overlook Java’s ability to reduce cloud costs, whether through optimization or better resource management.

Do you agree that business managers often undervalue Java’s potential to cut the cloud costs (e.g., through optimizations, better resource management, etc.)? 20% 38% 35% 5% 2% Strongly Agree Agree Neutral Disagree Strongly Disagree 0% 10% 20% 30% 40%

At BellSoft, we see Java as a key driver in reducing cloud expenses. Generally, Java applications are better suited for horizontal scaling, which involves adding more nodes to a cluster to handle increased workloads, as opposed to vertical scaling, where more power (e.g., upgrading CPUs) is added to existing machines.

Ideally, resources are calculated based on peak performance data. However, Java applications often experience slow startup and warm-up times, consuming more resources initially than they do later. This makes scaling inefficient and costly, as engineers must allocate more resources than necessary to meet growing demand.This challenge can be addressed in several ways:

These solutions enable predictable scaling, boost resource efficiency, and enhance response times. They also reduce the risk of system crashes during peak periods, like Black Friday. In other words, optimized Java applications can handle requests faster, more efficiently, and with fewer resources, lowering costs and potentially increasing business margins. 

Not only can new features drive business margins, but optimizing existing Java workloads can significantly reduce costs and improve operational efficiency. 

Fact 7: Green Java Is Becoming a Key Focus for 18% of Respondents

Green programming in Java refers to the practice of developing software that uses less power, is more sustainable, and has a reduced environmental impact. We’re pleased to see that nearly two-thirds of respondents recognize this as an emerging trend within their companies to varying degrees:

  • 18% stated that Green Java has become an important focus
  • 25% mentioned that it’s a topic of discussion
  • Another 25% indicated growing awareness of Green Java

This shift toward environmentally responsible development highlights the increasing role of sustainability in software practices.

Is the topic of "Green Java" (energy-efficient Java applications) becoming a trend in your company? 18% 25% 25% 31% Yes, it’s becoming an important focus Somewhat, but not a major topic yet Complexity of the migration process Not really, but there is some awareness 0% 10% 20% 30% 40%

Fact 8: The Most Popular Java Features in Production

Since Java 8, the language has evolved significantly, introducing features that make the development process easier and improve Java’s efficiency. So, which features are most commonly used in production?

The leading positions are taken by the language features facilitating the development and maintenance of Java code. They are followed closely by Virtual Threads that enable better resource utilization and at the same time, help to avoid using asynchronous programming models.

  1. Records (55%) lead the way as the most popular feature
  2. Pattern Matching (53%) follows closely
  3. var and Enhanced Switch Expressions tied for third place in popularity
  4. Virtual Threads (introduced in JDK 21) have quickly gained traction, becoming a top 5 feature

Which of the following new Java features are you currently using or planning to use in production? 53% Pattern Matching (e.g., instanceof improvements) 38% Virtual Threads (Project Loom) 55% Records 30% Sealed Classes 42% var 13% Structured concurrency 5% Foreign Function & Memory API (Project Panama) 41% Enhanced Switch Expression 17% New Garbage Collectors (e.g., ZGC, Shenandoah) 5% JFR event streaming 0% 20% 40% 60%

Usage of these features varies:

  • 37% of respondents use only one feature in production
  • 11% use two features
  • 12% use three features
  • 16% use four features
  • 24% utilize five or more features in production environments

This diversity in feature adoption shows how Java's evolving toolkit is being integrated into real-world applications, driving both efficiency and innovation.

Part 3. AI’s role in Java development 

Artificial Intelligence (AI) is a hot topic, and we aimed to gauge the adoption rate of AI tools in Java development.

Fact 9: 74% of Developers Use AI Tools for Code Writing

AI assistance is becoming mainstream, with 74% of developers now leveraging AI tools for writing code. Only 26% of respondents do not use AI for coding, while a small percentage (0.33%) reported that they are not allowed to use AI for code writing in their companies.

The most popular AI tools among developers are ChatGPT and GitHub Copilot. These are followed by tools like Idea AI Assistant and OpenAI API.

If you use AI in code development, which AI tools do you use? 40.85% ChatGPT 11.11% OpenAI API 16.01% Idea AI Assistant 4.58% AI code Pilot 0.33% Sourcegraph Cody 31.37% GitHub Copilot 0.33% Cursor 3.92% Tabnine 0.33% Ollama 25.82% I don’t use AI in code development 0.33% Amazon Q 1.96% Claude 0.33% Gemini 0.65% Jetbrains full line completion 0.33% We arenot allowed to use AI 0.00% 10.00% 20.00% 30.00% 50.00% 40.00%

Among those using AI tools:

  • 60% rely on a single AI tool
  • 31% use two AI tools
  • 9% utilize three or more AI tools in their development process

Fact 10: Over Half of Those Using AI Frameworks for Engineering Opt for Spring AI

Spring AI, launched earlier this year, has quickly become the leading AI framework in the Java ecosystem. Although only 34% of respondents currently use an AI framework, most of them have chosen Spring AI. This tool tackles the core challenge of AI integration: connecting enterprise data and APIs with AI models.

Large Language Models (LLMs) and AI tools are new technologies that integrate seamlessly with the existing Java frameworks. This allows developers to enhance development workflows and business logic without stepping outside of the Java platform. In return, the Java platform benefits from the stability and support of the frameworks and JDK distributions, with Liberica JDK, in particular, recommended by Spring.

If you use an application framework for AI engineering, which ones do you use? 22.5% 4.2% 3.6% 3.6% 0.3% 2.3% 0.3% 0.7% 66.0% 0.3% 0.3% 0.3% Spring AI Deeplearning4j (DL4J) Deep Java Library (DJL) Apache Spark MLlib Ollama FlinkML QUARKUS LangChain4j I don’t use AI frameworks Jetbrians nushell Python frameworks 0.0% 20.0% 40.0% 60.0% 80.0%

Research Method 

This year’s report reflects the evolving industry landscape by focusing on three key areas: the performance challenges associated with Java 11 and earlier versions, security and performance concerns, and the growing influence of AI in application development. 

The survey, distributed at Devoxx Belgium in October 2024, collected 308 completed responses, reflecting a comprehensive view of the current state of Java development.

Devoxx is the largest Java community conference series in the world, hosting events across Belgium, France, the UK, Poland, Ukraine, Morocco, and Greece. The Devoxx Belgium 2024 conference anticipated over 3,200 attendees from 45 countries, underscoring its significance in the Java community

How many times have you attended Devoxx Belgium? 44% 29% 15% 8% 4% This will be my first time 2-3 times 4-6 times 7-9 times 10+ times 0% 10% 20% 30% 40% 50%

 

Subcribe to our newsletter

figure

Read the industry news, receive solutions to your problems, and find the ways to save money.

Further reading