Since 2001, Java’s lowest position in the Tiobe rating has been #2.
In 2019, Java is the 5th most popular coding language in the world, according to StackOverflow Developer Survey.
Apart from numbers: as I’m writing these lines, my laptop suggests me to update Java, which I need for a bunch of programs such as text processors and scientific packages.
Working with such a widespread language may require a lot of specific skills. Here at CV Compiler, we tried to figure out what skills exactly Java devs need to excel in their careers in 2019.
Continuing our series of articles, we processed 300 vacancies for Java developers from such websites as AngelList, StackOverflow, LinkedIn, etc. The vacancies were from companies of different sizes and different fields of activity. Here is the outcome — the rating of the skills, which were mentioned the most frequently.
In 2018, Java EE was renamed to Jakarta EE, as it’s now developed under the aegis of Eclipse Foundation. However, the old term is still frequently met in the job specs, so we decided to include it on the chart instead of a new title.
Note: this data refers more to the market demand than to the industry insights. The chart reflects the preferences of the employers, not the developers themselves. For industry insights, turn to such surveys as The State of Developer Ecosystem Survey by JetBrains.
Here are some other key takeaways from our research about the current and upcoming trends in Java development.
Among those Java back-end frameworks, not mentioned in the chart,
Apache Struts(33) was the most popular one. However, I’d recommend learning this framework only if your (future) employer is definitely using it, (for example, to maintain the old applications). The latest version of Struts was released 5 years ago, but the same is not true of Spring, which is constantly trying to keep up with the newest Java updates. Moreover, Spring MVC is only a part of the complex solution, which can take care of many aspects of your application, (such as testing or data access).
Big data is not the most popular use of Java, but from our research, it seems that it’s going to gain momentum in the nearest future. According to IBM, 90% of all data were created in the past two years, therefore we definitely need powerful and stable solutions to process all this information. I reckon Java is the one. Perhaps, it will even share the Data Science market with Python one day :)
As for now, some employers already want candidates to be familiar with such data-related solutions as Apache Kafka (49), Hadoop (27), Azure (23), and Spark (21). By the way, the term Big Data itself was mentioned 33 times across the vacancies we analyzed, which is quite eloquent.
As we were analyzing vacancies for Java devs only, none of the JVM languages was mentioned frequently enough to get to our chart. However, they still were met in some of the job specs, and the most popular one was Scala (33). If you’re not familiar with Scala yet, you might want to learn more about it in 2019, (especially if you’re working with data).
Java is considered by many seasoned devs the best language for microservices development. So, we weren’t wondered to see the terms Microservices and Spring Boot quite close to the top of our chart. Developers love microservices, too: better microservices support is the main community priority for Jakarta EE in 2019.
I guess expanding your knowledge about this software development technique is a must in 2019. By the way, you might also want to learn more about service meshes. Although the term Istio (7) was mentioned not so frequently, as was Kubernetes (18), similar orchestration technologies are definitely going to become more popular with the growing popularity of microservice apps.
Finally, if talking about NoSQL databases, here is what employers prefer: Cassandra (41) and MongoDB (33). As for web servers, Tomcat (35) and Apache (35) were the leaders.
Here is what experts say about the upcoming Java trends.
In the close future, we’re likely to see the increased interest in Quarkus and associated technologies, running on the GraalVM. For example, it might be Vert.x, as Java responds to the container revolution.
The relatively low popularity of Spring Boot compared to “classic” Spring surprised me. On the other hand, I was pleasantly surprised by Java EE’s second place. JPA (Java Persistence API), one of the Java EE APIs, being listed as a standalone item, together with strong demand concerning SQL skills, indicate continuing interests in relational databases.
Strong demand for Maven skills matches my real world experience: Maven is one of the leading build tools. Apache Kafka is currently very popular on conferences, but it is not applicable as general architecture for all projects, which explains its relatively low demand.
I would also expect interests in Google Cloud and Azure skills to raise —both clouds are already heavily used in projects. A Java EE developer, and so experienced in JPA, SQL, JMS (Kafka is also a JMS implementation), JAX-RS (REST), Maven (default in Java EE), Git (de-facto standard) is in the best possible position on the market in May 2019.
Today, Spring Framework and microservice architecture are de-facto standards in the Java World. But the ever-evolving industry requires software engineers to develop new skills in addition to mastering existing ones. Service mesh and service proxy are changing the way microservices are developed, so employers are looking for engineers who are hands-on with Istio, Linkerd2 or Envoy. With more and more companies moving towards public and hybrid cloud computing, it’s important to have an experience in Amazon AWS, Google Cloud Platform or Microsoft Azure.
Reactive programming is still on the rise in the Java Universe. Even though I don’t expect it to completely replace more traditional imperative approach, engineers with expertise in reactive programming are in high demand. It worths investing in exploring what is reactive programming and how it changes the state of the Java ecosystem. Gain some experience with reactive frameworks (Project Reactor, RxJava, Spring WebFlux, etc) and learn what differentiates reactive programming from building reactive systems.
On the data storage side, NoSQL and polyglot persistence are must-have skills for engineers today, but global systems are raising the need for a new class of database management solutions. Strongly consistent Google Spanner is an example of a production-ready NewSQL database provided as a service. While it’s hard to predict the popularity of NewSQL storage solutions themselves, the future is about highly-distributed software, so it’s essential to understand principles behind consistent systems, especially consensus protocols.
This rating of skills sounds reasonable to me for an enterprise Java project. However, I don’t see much demand in SOA anymore. As of Spring and Spring Boot, they’re often used simultaneously, so the distinction is probably not relevant anymore.
As of the future, I do see a trend and growing interest in all kinds of cloud-native technologies. In case that trend continues, that might be more interesting in a few years from now.
Java developers, (like all developers), will always benefit from a deep understanding of core tools and languages like Git and SQL. Whatever OS you use, any scripting language is another thing that can accelerate your work. Developers who want to advance should also know about the infrastructure the code works in (cloud) and how it gets there (CI).
Our job is not to write code — it’s to change the software. Understanding the wider system, including the business domain, will make developers make better decisions in Java and any other language.
Java is a mature language with a stable set of tools for different needs. However, as it’s constantly evolving, keeping a finger on the pulse is always useful for your career. Hope this article helps you to stay up-to-date with the latest Java trends!
Bonus tip: Ever wonder how strong your Java Developer resume is? Tap here to compile it and see how it stacks up compared to the best practices in the industry. Learning your score is free!