It is the beginning of 2020. Perhaps you are considering learning a new programming language this year. There are many to choose from. Learning a new language takes commitment and effort. Although it is fun to learn, it is always good if there is a strong potential for payback from your effort in terms of career progression or earning potential. The purpose of this post is to discuss why it makes sense to consider Java as a language to put at the top of your list in 2020
Java is a certainly not a new language. It was created by Sun Microsystems (Acquired by Oracle) in the 1990s. Version 1.0 was released in 1996. In those days, the idea of writing code which could run unchanged on multiple computer architectures was relatively novel. Languages like C and C++ were in wide use. Code that was written for a given computer architecture (e.g. 8086) certainly would not run on a RISC based machine without recompilation and might even require some code change. One of Java’s initial selling points was “write once, run anywhere”. Because Java code is compiled into a machine neutral bytecode and then run on a virtual machine, the differences mentioned above are abstracted away and the programmer can pretend that there is a single architecture. Today, this idea is well accepted. The Microsoft .NET stack uses the same virtual machine architecture.
Java also brought a number of developer productivity improvements. For example, Java made the concept of memory garbage collection mainstream. Typically, languages of that era required programmers to manually ask for heap memory, keep track of its usage and then release it at the appropriate time. This was often easier said than done and was the source of a large class of bugs that were easy to make and difficult to fix. If memory was freed to soon, then memory corruption could happen. If memory was not freed at all, then memory was leaked causing an application to slowly fill its available memory space and crash. The Java garbage collector frees developers from having to keep track of memory. She could ask for memory and then trust that the system would reclaim it when it was no longer needed.
Although the initial excitement around Java was around browser based applications via the Java plugin, this never really got much traction. The real place where Java shined was in enterprise server development. From technologies like J2EE to Spring, Java has found strong adoption on the server side in the enterprise.
Java was awesome in the 1990s. Sweet! Why should you learn it in 2020?
The first reason is that Java is still one of the most highly demanded languages used by enterprises. A quick search on http://indeed.com shows 67,050 pages of Java openings. I’ve been a Java programmer for 20 years. It has never taken me more that 3 weeks to find a Java development role. These are high paying jobs too. Its not too hard to earn six figures after getting a few years of experience.
As mentioned above, Java has found strong adoption as a server side language in the enterprise. Companies like Netflix have used it to disrupt the entertainment space. There are other choices, but Java will continue to be a language that is in demand for years to come.
Because Java has been around for so long and has been open source for much of that time, there have been a large number of tools that have been created that can be used in your projects. Here are a few:
- Spring – Application architecture (Multi-function)
- Hibernate – Object/Relational mapping
- RxJava – Reactive extensions framework
- Liquibase – Database schema management
- Project Lombok – Common code generation
This is just the tip of the iceberg. There are literally thousands of opensource projects that are either written in Java or support the Java Virtual Machine.
Given the amount of time that Java has been around, it is not surprising that Java is a mature language. Not only that, but the underlying virtual machine technology has be optimized over the years as well and is widely available on everything from cell phones to super computers. Most importantly these days, it is supported by all of the major cloud providers.
Historically, a ding against Java has been that it’s development has been relatively slow moving. In one sense, that is a good thing. Often enterprises want to ensure that the platform that they chose to develop on remains stable over a long period of time. Up until recently, major Java releases were dropped approximately every two years. While this provided for stability, it did mean that developers had to wait a long time for new features to be added to the language. Oracle has changed their release cadence beginning with Java 9. Now a new Java version is released twice per year. This means that releases are much smaller but features can be release more quickly. For companies that still want stability, Oracle is designating one release about every two years as a long term support release. These can be treated much like the older multi-year releases for those who want a longer release cycle.
Over the years, Java has been criticized for being a verbose language. This has improved a lot. New language features (like streams) and open source projects (like lombok) can greatly reduce the size of your code base.
Java’s type system has improved and because it is strongly typed, it can prevent a class of bugs that are much harder to avoid in dynamically typed languages.
Where To Go From Here
As I said at the start of the post, there are a lot of languages to choose from. Learning any new language can be valuable, but if you’re looking to advance your career and increase your earning potential, the Java should certainly be on your short list.
If I’ve managed to convince you that Java deserves some of your time, then subscribe to this blog. I will be writing a series of posts that will teach you how to program in Java from the ground up. Join me for the journey!