Java, pass the baton, please!

The glorious history

As a former Sun-, and Oracle-certified Java architect and evangelist, I ‘m licensed to share a new path, every company should consider as a valid and proven way to walk on.

I believe in this mission devotedly enough to take the liberty of writing a longer prelude for this upcoming series of articles to liberate you from any preconception you might possess.
I’ve had a fantastic relationship with Java. When we met, over ten years ago, it was love at first sight and we had a whirlwind romance, designing and implementing together the most wonderful enterprise-grade architectures. We fought shoulder to shoulder the noble fight with parallel execution, component model, and portability. I fought in the first waves for XML-based web services, resource injection, and so on, and so on. At one point I even created and published my own application server – so you can see the level of my devotion to JAVA.

It was a time for heroes. We – Java people – were heroes. Or maybe this is just a pleasing image in the light of the distorting history.
This might sounds like kissing through the veil, but consider it as a compliment as Victor Hugo wrote once. :).

And it seemed like Java and .Net would move inexorably forwards and answer all the questions of the IT-world.

But the realisation took shape as new layers on the top of the old ones making those platform a mothership. And there is the rub. You have to perform everything with a mothership making the progress heavy, slow and extremely circumstantial.

The Truth

The inescapable truth is that New Things Get Old. And the direction where Java and .Net headed to is complexity. A overkilling intricate mothership with plumbing and wiring going back a decade onto which new stuff is continually bolted on.
And because it happened slowly, you never noticed – until now – that you have a mothership: a tool sized to everyone, that fits no-one.
The issue became the platform itself which is claimed to be THE solution.

The time spent together makes things comforting – I know that comfort – the stability and familiarity of the trusty old machine whose quirks and buttons you’ve learned like the back of your hand. And even tinkers and potters can be productive with a well-chosen toolset, I accept it. I do not want to cast a shadow on anyone’s achievements at all, don't get me wrong.
The issue is with the mothership that Java has become, not the people driving it. The mothership is too big, too old, too slow and after ten years it has become orthogonal to the way of avant-guards. The driving experience now is closer to talent-crushing mediocrity.
So what do you do in this situation?

The relay race

Think of it as a relay race. You’ve got a team of world-class runners, who together carry a symbolic stick, or baton to the finish line. Each runner completes his or her leg and passes on the baton to the next runner in the sequence.
Now in this metaphor, the development of the IT world is our relay race, and the technologies are our runners. The baton is you, your company. The finish line is where you want your company to be – ideally before everybody else.
Java and .Net were the first runners. They carried you fast and they carried you far. In fact they’ve been carrying you for 10+ years now and they’re kinda tired! Even Usain Bolt can only sprint at 10 metres per second for so long.

Now here is the really crucial bit. The handover of the baton must be completed within a 20m handoff zone. If the handover is not completed within this small window, the runners must either stop in order to complete the handover, or the whole team is disqualified. Either way, you’ve lost the race.

Java has entered the handoff zone and NodeJS is the next runner, fresh and full of energy, already moving, holding out its hand for the baton. But look at this! Java, for some reason, doesn’t want to let go of the baton! The team only has a short window in which to complete the handover, or it’s game over!
You want to move forward but Java – your old friend – does not want to let you go. Java wants to hold you as long as it can.
Independent from the nature of your projects, the style you desire to see, the security of the tried-and-tested, your deepest aim is to reach the finish-line. This is not the time to take the pleasure in the view or the sky. Even if Java and .Net is promising you to reach the finishing line, you are carried now in the slowest line on the track.
To move forwards in the era of techs, you need runners, good runners. And you need to see the next runner in advance, further up the track, so you can move forward without slowing down.



Who is carried by Node runners already? 


  • LinkedIn: “Linkedin Moved From Rails To Node: 27 Servers Cut And Up To 20X Faster”
Reference
  • Paypal: “Double the requests per second vs. the Java application”, “35% decrease in the average response time for the same page”
Reference
  • Netflix: “Node has been a boon to the productivity of engineers. We’re able to iterate much more quickly.. enabled us to rapidly develop, test, build and deploy presentation layer and server side code, including templates and client side assets”
Reference
  • Dow Jones: “Having only one language is extremely powerful but JavaScript is also just plain easy to write and faster to develop in. I have seen many examples and there is usually around 1/10th the amount of code and it’s gets released 2x-4x faster than similar apps in alternate stacks.”
Reference
  • Groupon: “page load times dropping by a whopping 50%.”

I could keep going, but the essence of development can be read as the following immutable universal law: each generation, technology and runner has its duty: to overpass the past eras and pass the baton.

So dear Java and .Net: pass the baton, please!

comments powered by Disqus