Java and the JVM have been around a long time. Cast your mind back to 1995 – the year the net went private and the American started surfing the ‘net with AOL. In other significant tech events, it was also the year that Java – in its very earliest beta incarnation – first came into being. Whilst AOL’s time in the sun has been and gone (I’m just going to put this video here, to help transport you back to those glorious days of dial up), Java is as strong as ever – even if it may have lost some of its lustre amidst all those other JVM interlopers that sprung up, Gremlin-like, from the platform.
In fact, given how long some programmers have been using the platform, there are, RebelLabs write, “many things that Java developers take for granted.” Whilst Java continues to straddle the top rungs of most leading language indexes, familiarity has served to breed a good deal of contempt over the past twenty years (sometimes deservedly so, admittedly). But in the midst of all the nay-saying, it can be easy to ignore all the great things about Java and the JVM. For this reason, in honour of this very important anniversary, RebelLebs have compiled a report detailing the things they most appreciate in Java – ten reasons why “Java has become and will continue to be the leading platform for software projects.”
Here’s a quick overview of some of the most significant features identified by RebelLabs:
High Performance JVM
Java was originally developed to be write-once-run-anywhere, an approach “provided by the virtual machine.” Without the JBM, Java would have to follow in the footprints of Ruby and Python – further increasing “the pain in the struggle for portability.” As the report authors note, with the advent of the IoT, it’s never been more important to have a powerful VM.
RebelLab’s favourite thing about the Java Core API is that it has – since its very inception – been fully backward compatible, allowing you to dive in and get writing most applications. Although there are a myriad of additional libraries and JVM languages to provide concise language-level access to many of the Core API features, most of these actually “rely on the Java Core API underneath.” Whilst other languages may have followed suit, few have remained as stable as Java.
There’s plenty to appreciate about the Java compiler. It’s what transforms your source code into bytecode, and then into the executable – and with the advent of the JIT (Just in Time), it leaves other interpreters “in the dust.” Moreover, the innate simplicity of Java’s compiler means that developers only have to focus on code, without having to fixate on compiler architecture.
As with the compiler, in Java bytecode, simplicity is king. You get “all the good bits of the JVM and its verifier, drastically reducing the potentially harmful instructions that you can write.” And no need for third-party bytecode manipulation tools.
By providing a hardware-independent memory model on the JVM, Java doesn’t have to offload to external libraries. This allows for the language, the core API, and compiler to be designed together – “ to provide a stable foundation for concurrent operations and a shared state.”
Yes we know, Java certainly isn’t a special snowflake when it comes to open source. That’s something that evolved more than a decade before Java was even a stroke on a keyboard. What RebelLabs do think is exceptional about Java is how extensive the philosophy of OSS permeates in its ecosystem – all the way from mobile to enterprise to some of the world’s most critical system. The only thing that come close, according to the writers, is Linux.
Alright, Eclipse may come in for its fair share of criticism these days – but remember when it was first opened sourced by IBM, blowing nearly all commercial vendors out of the water? In 2015, with the trinity of IntelliJ IDEA, NetBeans and Eclipse, devs have “the luxury of choice” when it comes to looking for a free open source development environment – all with their own sets of plugins and services to really kick things up a notch.
You probably know that assumptions are a bad thing, but figuring out the best way to measure your performance can be taxing. No problem for Java developers, with profiling tools ready-baked into the JDK, and a “plethora” more out there if you need something a little extra.
Yet again, when it comes to compatibility, Java knocks it out of the park. Running an application written way back when on the latest JBM is as simple as “copying the old JAR and WAR files and starting the application up again. And there you go, running in all their glory as if nothing happened.” Crucially, this means the Java community has been able to stand on one another’s shoulders in glorious pyramid formation for twenty years – certainly a major factor in the longevity of the language.
Maturity with Innovation
As RebelLabs succinctly put it,
“The availability of intelligent IDEs, a backward compatible platform, a massive core API, a vibrant open source community, and a language that was designed for readability and encapsulation makes Java perfect for teamwork.”
Code can be passed along from coder to coder without risk of “invisible far-reaching changes,” ensuring projects aren’t derailed by unexpected glitches and nasty surprises down the line. And hey, if it’s good enough for NASA…
When all is said and done, Java and the JVM aren’t just the work of a few dozen master coders. The ecosystem is a vast, sprawling entity, where even the most junior coder has the chance to stand on the back of giants to have their say and help to build something amazing. In fact, you can find out more about how to get involved in evolving Java right now. Because, love it or hate it, this language is going nowhere any time soon – so you might as well have a say in deciding where it goes in the next decade.
For a fulsome look at all that’s amazing in Java, as well as a look at some of the amazing technologies around the platform, we strongly urge you to read the report in full. And if you have some other ideas about what makes Java such a class act, please join the love-in in our comments section!