The Status Quo
As we move forward towards an ecosystem of integrated and continuous development, it's mandatory to keep in mind that old technologies will anchor us to old paradigms of development and roles within a company.
Enterprise programming is often rooted in such paradigms and fixed roles, I am sure that if you are reading this you are well aware of the distinction between a backend programmer, a frontend programmer and an APP developer, for example. In this paradigm, each figure works with different languages in different areas of the development pipeline, trying to communicate with the others, costing money, time and resources to the company.
This is the Java way. Or, to be more specific, this is the old paradigm that Java (in all fairness) attempted to remove with its "code once, deploy everywhere" promise. A promise that we now all know means something completely different than its face-value appearance suggests.
What is the alternative though? Is there really a better way to write software? Can the costs of the pipeline be made slimmer and more manageable? Can we accelerate development without compromising on what we already have?
Let's have a look.
Whenever I will be making statements about the technologies I will be referring to, I will be taking the relevant data from the annual Stack Overflow survey which you can find here:
What does Java offer?
It is undeniable that there is a reason behind the use of Java in enterprise programming, and even in some start-ups, and it boils down to two main factors:
Let's break it down:
The ecosystem is a collection of resources, frameworks, publicly solved scenarios and ready-made plugins or tools that have built during the many years of use of such language. This is especially true as Java was (and still is to an extent) one of the most used languages in the world. This ecosystem becomes fundamental when considering which language to use as your backend, and sometimes as a frontend if you are developing an Android application.
Developers are self-explanatory, they make the code, they deliver the product, they need to be able to work in a remunerative and at the same time profitable environment. Java developers are usually well paid, or at least they used to be for a long time.
Both these factors make Java a very good candidate when it comes to building an infrastructure that can be both solid and maintainable, as the ecosystem will keep growing with time and developers are plentiful.
But here's the caveat with both these arguments, new languages are always been developed, and old languages start to see a resurgence that was as unexpected as it was welcomed. On top of that, profitability and salaries have started a shift that demand, nay, necessitates a change.
Profitability, payments and developer engagement
As we discussed above, it can be easily observed that the major points that contribute to Java's ascension to king of languages are pretty well established. Now, there are surely different parts to consider in this equation, but it is undeniable that the two key factors scrutinized previously do play a big part.
But what if that changed?
Let's take into account the above-mentioned Stack Overflow survey, when it comes to salaries and developers' love and hate for languages in 2020;
Here's what comes out:
part of the average salaries paid for each language
Most loved languages
Most hated languages
As you can see from the charts, Java is not only NOT a good choice by developers salary-wise, but it is also one of the TOP 10 most hated languages to work with, in the world.
"Code once, deploy everywhere" is a developer's wet dream, it has for the longest time been an unattainable utopia of philosophical nature, until recently.
Nowadays, the web is all we know and so, with its ability to easily write frameworks and plugins for, JS became an easy target for experimentation and an excellent candidate for production.
Facebook developed the React framework to build its own website, soon followed by major players, IBM and Strapi developed backend framewroks that challenge the stability and ecosystem of established languages.
Alongside them, Expo developed their own framework on top of React Native, allowing for the production of native Android and IOS apps sharing a single codebase.
All of this, in one language.
It is fair to say nowadays that:
We already discussed the benefits and frameworks for frontend development in JS, but that was never a problem to begin with. Should you choose React, Vue, Angular, Svelte or many others, there's always a great framework to work with.
On top of this, frameworks like Expo allow for development of native mobile APPs all sharing a single codebase. It's almost a no-brainer.
- Costs and maintenance
To sum it all up: the old way of producing code is not only inefficient for modern companies, but most developers hate it too. The new way is embracing change, following what the captains of the industry (such as Google, IBM and Facebook) are doing and let the old paradigms and structures die.
Written by Gabriele Maddaloni.