Java Has Gone Cloud Native With Jemo

Chris Stura reflects on the progress that cloud-native run time, Eclipse Jemo has made over the past year.

It seems like an eternity has passed since the 1st April when we presented Eclipse Jemo 1.0 at the Open Infrastructure Days here in London. At a conference which is dominated by presentations around Kubernetes and containerisation, it was a true privilege to be able to talk about Jemo.

Eclipse Jemo sits more within the software infrastructure space and acts as more of a compliment to Kubernetes than a competitor. It focuses on providing a higher level of abstraction from what we are accustomed to in the world of containers. Jemo focuses on giving Java developers a way to faithfully execute on the “Write once, Run anywhere” moto which Sun Microsystems set out as a vision for the language when it was conceived back in 1996.

Back in the days when Sun set out that famous phase, we were in the depths of the Operating Systems wars. Linux was emerging, Windows was dominant, MacOS was niche and software developers found themselves having to write and support multiple versions of the same piece of software. Often building substantial chunks of code to support each operating system. Java, instead, promised to deliver a language in which you could write any application and that application would run in the exact same way on any operating system. As we all know, this was not exactly true of all applications (and some operating systems presented quite a few challenges) but slowly and steadily, Java applications began to emerge on the desktop and the server.

As Java evolved and saw large scale adoption from the enterprise, other elements of the Java ecosystem kept faithful to the original vision of “Write once, Run anywhere”. Java Enterprise defined a series of standards through which enterprise web applications could be authored and run on the application servers built by multiple vendors, again, without need to re-package or re-compile those applications. Persistence technology isolates us from vendor lock-in at the database level. Essentially, throughout its history, Java has provided developers with a single platform to build applications which were not tied to any vendor.

So, it is equally important to continue this trend now that the public cloud promises to revolutionise the IT landscape as we know it. Eclipse Jemo is an attempt to accomplish this exact objective. Jemo provides a modern FaaS (Function as a Service) programming model and access to underlying Cloud PaaS (platform as a service). It does so without having to use those specific services, automatically mapping popular services like Amazon’s S3 and DynamoDB to their equivalents on Azure and soon GCP.

What this means is that you can deploy applications to Jemo and that these applications only use resources on the Kubernetes containers that host the Jemo runtime when they are actually asked to do something. Furthermore, you can take the same binaries that are built and deployed on AWS and run them on Azure without re-compiling your code. This allows you to quickly migrate applications between Clouds. Jemo can also be extended to on-premise environments to take advantage of computational capacity in data centres and then see those workloads move to the public cloud of choice in a matter of seconds. We believe it sets the stage for fulfilling the vision that Sun Microsystems set out for Java many years ago in the age of public cloud computing.

Learning Jemo

The best thing about Jemo is that it is open source, which means you can download it, try it out and form your own opinions on the technology. At the Open Infrastructure Days, for those of you that were fortunate enough to attend, we left references for where you can find more information, tutorials you can follow and example code you can look at. I encourage you to take it for a spin and provide feedback to the community so we can continue to make it better and more relevant for your business and your workloads.

Jemo homepage and Getting Started Guide

Jemo sample code