GitHub Enterprise Server 3.6 is now generally available.
On May 23, 2020, Java celebrated its 25th anniversary. While that is still fairly young for a programming language, Java continues to rank among the top two programming languages in the world, according to the Tiobe index, and it has no signs of slowing down. However, despite its popularity, Java does have some well-agreed upon downsides. With more and more business-critical applications using Kubernetes, it is more important than ever to bring Java into the future, and not let it get left behind. Read on to learn more.
First, let's explore why Java has been so popular over the last 25 years.
For starters, Java is a language that is both user-friendly and flexible. When written in a Java Virtual Machine (JVM), Java delivers on the promise of "write once, run anywhere" and therefore can run on any operating system, even if it is different from the one it was developed on.
Java is also highly scalable, versatile and dependable — once a Java application has been spun up, it can run reliably for months to serve hundreds of concurrent requests.
Java is also a good bet for the enterprise because there are so many Java developers, so once Java applications are spun up, they can be maintained by professionals with varying skill levels. This also means that Java programmers have been in high demand for the past 2 years.
Lastly, Java is an object-oriented language, making it both more secure and relatively easier to learn than non-object-oriented languages, such as C++.
Now, what are some of the complaints against Java?
Most commonly, we hear that in a lightweight, low-footprint world, Java takes up too much space, needing too many megabytes worth of class files and creating too many gigabytes of runtime memory footprint. This is in direct contrast with containers, for example, that are both lightweight and low memory.
The other common complaint is that Java takes too long to start up — in a world where new applications can be spun up in seconds, if not milliseconds, waiting five minutes for Java apps to start is considered way too long.
Additionally, when Java was created, Kubernetes, microservices, serverless and even containers did not exist yet, so it was originally designed for monolithic application stacks as opposed to cloud-native, modern applications.
Java In a Kubernetes-Driven Future
So by now, you may be thinking, Java is doomed! There is no way it can continue to be so popular when there are new programming languages like Ruby, Go and Rust that are designed to work seamlessly with serverless, microservices, etc. Well, not necessarily.
These new and shiny languages are not used by app developers — like Java — but are system development languages, so they do not have capabilities for business customers in the same way that Java does. Java still makes the most sense for building more secure, business-ready applications.
However, one advantage of the new languages is that they are built to work in the Kubernetes landscape, so the question now becomes: how can we get Java there, too?
There are technologies that help to bring Java into the modern, cloud-native app dev world. There are open source projects that help developers create applications in Java that have faster startup times and a lower memory footprint, meaning that applications developers write in Java can "play nice" with microservices, Kubernetes and containers, without the developer needing to learn an entirely new programming language. This is important from the business perspective as well, because developers do not need to be trained in a different language from what they already know, speeding up time to market for applications. By putting developer's needs first, these open source tools enable more innovation to happen faster.
Java is not going away anytime soon, and in order for it to be compatible with newer technology innovations, developers need new ways to be able to continue to program in it. Open source tools can help enable developers to use a language they already know to build modern, Kubernetes-native, business critical applications.