24 Years Later, Java is Still Dominant
In May, Java will celebrate its 24th birthday as a language. Moreover, when it celebrates its birthday, Java will still likely sit atop the world’s lists of top programming languages. But how did Java get here, and why does it continue to be so dominant in modern software? Even 24 years after its release, Java continues to not just to be relevant but also influential. This post explores why.
Software was very different in the 1990s when Java came of age. During that time, most applications lived on your desktop and were distributed via floppy disk or CD. As a result, the differences between machines running software could break code. For example, machines with too little memory or compilers that allocated different amounts of space for the same data type could run into issues. Indeed, the lack of standardization across machines was a major challenge for developers.
Java’s big breakthrough was the creation of the Java Virtual Machine (JVM). Basically, the JVM provides a middle layer between your code and the assembly language your computer’s processor can understand. First, Java compiles your code to bytecode. Then, the JVM figures out how to use that bytecode to write assembly language your specific machine can understand and compute. While this seems trivial now, creating an easy-to-use virtual machine that standardized how you write code was a major benefit for developers in the 90s.
The JVM also included mark and sweep garbage collection that would automatically free unused memory. This was a major improvement over manual memory management in languages like C. It removed much of the overhead of tracking memory allocation for developers.
Java Over the Years
In the 1990s, coding in Java made your application run seamlessly on any type of machine and managed memory allocation for you. Subsequently, as Java’s popularity grew, people began to build useful tools in the new language. When the internet came became popular in the late 90s, Java was poised to be a resource for creating the backend for web applications. It was easy to use and the community had already built many of the necessary tools.
Furthermore, when smartphones became popular in the 2000s, Java was there. It was an established, openly available language that worked across devices thanks to the JVM. As a result, the JVM became the core of Android development. Thus, Java was the main language for Android mobile apps.
Each of these phases of popularity gave Java a huge boost into the next decade. At this point, tons of companies have used Java over the years. As a result, it’s hard to imagine Java disappearing any time soon.
What Java is Used For
Java is a safe, fairly fast, and portable language. It also has a massive community with support and libraries for almost any task. Furthermore, Java’s object-oriented architecture is easy to learn and makes sense for large development teams and projects.
Accordingly, major companies have built many of their products in Java. For example, Oracle, IBM, SAP, and Google have made Java a core part of their stacks, to name a few. In turn, millions of apps rely on the services these companies provide, meaning there’s a strong incentive for them to use Java as well.
At this point, the majority of the world’s Java code comes from large enterprise corporations. These legacy providers have used Java for decades. As such, they see Java as a reliable solution and the cost to switch to another language would be high.
This community bias is both good and bad. On one hand, the fact that so many corporations use Java means that there is a large community supporting the language. Indeed, many of these companies open source the tools they build, further enriching the community. However, Java has also gained a reputation for massive code bases that can be difficult to understand. Among developers, Java also has a reputation for bloated, object-oriented syntax. Consider this (thanks to Steve Yegge for this funny code sample):
<span style="font-weight: 400;"> new ServiceExecutionJoinPoint(</span>
<span style="font-weight: 400;"> DistributedQueryAnalyzer.forwardQueryResult(</span>
<span style="font-weight: 400;"> NotificationSchemaManager.getAbstractSchemaMapper(</span>
<span style="font-weight: 400;"> new PublishSubscribeNotificationSchema()).getSchemaProxy().</span>
<span style="font-weight: 400;"> executePublishSubscribeQueryPlan(</span>
<span style="font-weight: 400;"> NotificationSchema.ALERT,</span>
<span style="font-weight: 400;"> new NotificationSchemaPriority(SchemaPriority.MAX_PRIORITY),</span>
<span style="font-weight: 400;"> new PublisherMessage(MessageFactory.getAbstractMessage(</span>
<span style="font-weight: 400;"> MessageType.WRITTEN,</span>
<span style="font-weight: 400;"> new MessageTransport(MessageTransportType.WOUNDED_SURVIVOR),</span>
<span style="font-weight: 400;"> new MessageSessionDestination(</span>
<span style="font-weight: 400;"> DestinationManager.getNullDestinationForQueryPlan()))),</span>
<span style="font-weight: 400;"> DistributedWarMachine.getPartyRoleManager().getRegisteredParties(</span>
<span style="font-weight: 400;"> PartyRoleManager.PARTY_KING ||</span>
<span style="font-weight: 400;"> PartyRoleManager.PARTY_GENERAL ||</span>
<span style="font-weight: 400;"> PartyRoleManager.PARTY_AMBASSADOR)).getQueryResult(),</span>
<span style="font-weight: 400;"> PriorityMessageDispatcher.getPriorityDispatchInstance())).</span>
<span style="font-weight: 400;"> waitForService();</span>
It’s clear that Java’s corporate, verbose culture has hamstrung it. Undeniably, many developers would prefer a language with cleaner syntax and less boilerplate.
Making Java More Modern
Java is making strides toward modernity. For one thing, Java’s new release cadence, with new versions of Java released every 6 months, has made Java more responsive to community needs. Without a doubt, the new, faster release cycle is a step forward for keeping Java up-to-date. The software industry changes fast, and Java needs to keep up.
Additionally, new languages are arising that use the JVM while providing a different syntax and community ethos. Kotlin, Clojure, and Scala have all seen growth over the past years. They all use the JVM for execution.
While it’s difficult to say if Java, as we know it today, will be around in another decade, we can be certain its impact will be felt. The JVM runs on billions of devices worldwide and will continue to do so. Though the syntax of the languages running atop the JVM may change, you can be sure that the heart of Java will continue beating for a long time to come.
Founded in 1991, Intertech delivers technology training and software development consulting to Fortune 500, Government and Leading Technology institutions. Learn more about us. Whether you are a developer interested in working for a company that invests in its employees or a company looking to partner with a team of technology leaders who provide solutions, mentor staff and add true business value, we’d like to meet you.