Webinar: The Java Ecosystem explained to Tech Recruiters!
Thanks for joining our Friday webinar on the Java ecosystem! Here is a short recap of everything we discussed.
Chances are you may have recruited a Java developer before. Did you need a backend developer, an Android engineer, an application architect with Java, or a full stack Java developer? This array of positions already gives you a hint about the versatility of Java, and the fact that it goes beyond the mere programming language called Java.
Java is of course a programming language.
But it extends beyond that.
Java is an environment with many other tools, languages, and capacities.
You can think of it as a country. Take Belgium for example. Within Belgium different regional languages are spoken, like Dutch, French, and German. You can also get around in Belgium only speaking English. But being able to speak other languages means that you can access a plethora of services within the country. You can shop, go to school, or become a tech recruiter. With each language, you can take advantage of different opportunities the country has to offer.
Now let’s replace our Belgium example with the Java environment. The languages spoken there are Java, Kotlin, Javascript, Scala, Clojure, Groovy, and J-Ruby (a Java implementation for Ruby in the Java space). They are often community-built languages.
We can also replace all the services Belgium has with capabilities in the Java environment. You can build a web, mobile, or cloud app, for example. This means that someone who ‘lives’ in the Java environment is able to do all kinds of things using the languages and technologies of the ecosystem.
The Java ecosystem consists of programming languages, frameworks, and IDEs (integrated development environments).
A survey from JetBrains shows us that the most common types of software people develop with Java is websites (coming in at 36%), followed by utilities (25%) and systems software (19%). People furthermore develop databases, libraries, frameworks, fintech, and business intelligence/data science.
Let’s say that we want to build a web app. How does the Java ecosystem work, considering the frontend and backend?
Frontend:
The programming languages used here are HTML (a markup language), Javascript, and formerly Java.
Many years ago, it was possible to use Java for frontend using the Java applet, an extension for Java. It began to phase out in 2013 though because JavaScript became much better to do frontend work. Now it is no longer possible to use Java for frontend because it will be running on a browser, like Chrome, Brave, or Firefox. A browser is an environment that only supports JavaScript, CSS HTML.
Backend
The programming languages for backend are chiefly for storing and manipulating data. They include Java, Scala, PHP, .NET, among others.
Leading database technologies used in the backend are MySQL and Oracle.
The backend also involves frameworks. Frameworks accelerate the use of a language and are not tied to any specific language. Rather, they can be used with any language, and are tied to the ecosystem itself. Here’s a hint: if a developer isn’t using a framework, don’t hire them! It will cost a lot of time and money otherwise.
Spring is the most used framework. It is the gold standard of the industry, as it makes it easy to develop enterprise Java apps while supporting multiple languages in the Java ecosystem. Spring comes in two flavors: Spring Boot or Spring MVC, with 50% of developers using Spring Boot.
The framework Hibernate also provides a lot of tools in conjunction with Spring.
JSF is an outdated framework, so let your candidates know this if they use it.
Additionally, if a candidate uses Struts 1 or 2, that is an instant red flag. Struts frameworks are hardly ever used.
To deploy the framework in the cloud, we use some CD/CI tools. Jenkins is the most widely used CD/CI tool in the Java ecosystem, with more than 60% of developers using it.
When you talk to a Java developer, it is important to know in which space they spend the most of their time. When they say they are a Java developer, most of the time they mean only backend, but is it for a website? A cloud app?
There are multiple versions of Java, and a history of privatization to thank for that.
Java was originally created by the company Sun Microsystems in 1995. In 2010 Oracle bought Sun Microsystems. The moment Java became the property of Oracle, it faced huge backlash from the development community. Developers didn’t like that a language so popular was owned by a company that lacked a more open-source perspective. Oracle rolled out the paid Java ecosystem, which one-third of developers still use. However, at the time the boycott of the paid Java was so harsh that Oracle joined the community and made an open-source version available: the OpenJDK ecosystem. Half of all developers use it today.
People still have the option of paying for support, but the version itself is open. Some companies choose to pay for support because they are using the old ecosystem in one bundle, but most opt for OpenJDK.
This is a good question to ask your potential developers: is there a difference between the Oracle JDK and OpenJDK. The answer is yes! It is closed- versus open-source, respectively.
Now let’s say that we want to build a mobile app! We will usually be in the Android ecosystem. We say ‘usually’ because there are some technologies that allow you to write in Java and then run the app on iOS. When people say they are an Android developer, usually it means that they are writing on the UI (user interface) site. They use a lot of markup and then manage the logic of it using the following technologies:
UI
Backend
You also have Java EE (Java Enterprise Edition): a framework to accelerate enterprise app development using a bunch of automation tools. Java EE is partially owned by Oracle. Oracle has a commercial license for Enterprise to use some of the tools they build (especially in connection with OracleDB).
At the end of Android development, the same thing happens as with web app development: you can use Jenkins for CI/CD, and deploy on different environments such as the Apple Store or Google Play.
It’s worth noting that most Java developers want Kotlin jobs; Kotlin is new and shiny compared to Java, and makes us write code in a different, more efficient way.
Coming together: types of technologies in the Java ecosystem
The Java ecosystem is extremely versatile: you can swap out technologies at each level of the development process. We will explain how all of these technologies come together using an example.
Let’s say you are a web developer. When you arrive at work you receive a MacBook. That computer is still empty. So you need to install software on it. First you install the Java SDK, which makes Java available and understandable on that computer. When you start writing code in Java, you need a place to write that code. Years ago, people would manually write their code in notebooks.
Today, you have IDEs for that. The most popular IDE in the Java world is Intellij, used by 72% of developers. You write your code in Intellij. Then you want your code to be available for users. You go through the CI/CD process using Jenkins, which packages your code into binary and stores it in a zip-file-like container called a jar. That jar is then deployed on an application server.
Application servers allow you to automate the CI/CD process of Jenkins. Apache Tomcat is used by 61% of developers for this. Apache itself is installed on AWS or Azure or a Google cloud platform. From there, your application is available to the world! Your web app is live. (However, many developers use Springboot as a framework alternative for all application servers altogether).
At each level you can decide which technologies from the Java ecosystem you want to use. For example, you don’t want to use Intellij for your IDE; you want to use Eclipse instead. Or you want to write your original code in Scala instead of Java.
The same process applies for developing a mobile app. You write it in Kotlin, use the Android Studio IDE as an alternative for Intellij (you can use Intellij for mobile too though), CI/CD it with Jenkins, and then deploy it in two ways: on stores (app or Google stores) and on AWS or Azure. Once this process is done, your application is available to the world!
In this recap we summarized the basics of the Java ecosystem, and some things you should keep an eye out for in candidates who work with Java.
In our next webinar on June 25th we touch upon something that will be huge in three to five years: Web 3.0. This is one to invite all of your colleagues and friends to! If you understand the power that Web 3.0 brings to the market, you will see recruitment differently and gain a huge edge. Sign up here and we’ll see you then and there!
Check out the visual notes of this webinar:
These strategies were mined from Davy's own experience hiring developers, combing through their past experiences with smart questions and technology.
Read MoreDec 02, 2020
5 min read
Engineering managers Peter Paul van de Beek and Peter Brouwers joined us to share some wisdom: how they create a great engineering culture.
Read MoreDec 02, 2020
5 min read