Java and the old ways need to die, here's why and how.

The first ever blog post is here. It might be a good idea to update this post with some more relevant content.

Posted on Nov 10, 2021

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:

https://insights.stackoverflow.com/survey/2020

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:

  1. Ecosystem
  2. Developers

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:

1626776781550?e=1642032000&v=beta&t=CnunlCXArVrlGs-OWEKvr1B7CMrQaCYcf1iWFAXOXpw part of the average salaries paid for each language

1626776856045?e=1642032000&v=beta&t=Hmr7HBPNCyJOyjVZks7AwxlCGl-9omqlXp1ozr3xFyo Most loved languages

1626776874204?e=1642032000&v=beta&t=MzHY7q9yWIMtZS42_sCeD-DU432aexin2CzEvdxC79s 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.

With these factors in play, developers are shifting to different solutions, such as Python, Ruby or JavaScript, and it is to this last language that I want to bring your attention, in this article.


JavaScript, a full stack dream

"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.

With the introduction of JavaScript, there has been a huge backlash and an inherent stigma for the language, it was rough to say the least, and horrible to work with to say the most. But times have changed and by necessity, JS became the principal language for the web.

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.

As a result of this rapid and intense growth, JavaScript changed in the opinion of developers and it became a language that empowers, instead of limiting them. Due to the growth of interest, standards such as ECMA developed and flourished over time, giving the language dignity and usability way beyond anybody's imagination.

It is fair to say nowadays that:

JavaScript has been out long enough to build a similar ecosystem than the one Java boasts, it has sparked a keen interest from developers all around the globe and has brought major players into it, making it not only a viable option but a preferred one.

Conclusion

Let us consider the advantages of switching to JavaScript for a second, what can we accomplish, what compromises can we expect to make and at what cost.

  1. Backend

JavaScript as a backend is nothing new, frameworks such as Loopback or Strapi offer an ORM on top of your DBMS of choice that is both scalable and lightweight, on top of that, the native use of web-sockets and innumerable plugins allow for a seamless integration for each necessity a project might have.

  1. Frontend

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.

  1. Costs and maintenance

JavaScript allows for the previously "written-in-stone" roles within a company to become flexible and to cover more ground with less resources. A JavaScript developer is now enough to develop a full-stack solution. Should you lose a key figure in the stack, they can easily be replaced with little to no training.

All hard skills are very much transferrable in modern development, knowing what makes a backend work is often framework or language agnostic, so, switching to a different language usually takes little time, especially with a language like JavaScript with it's limited core set of features.


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.