This month, the most widely used measure of language popularity, the Tiobe index named Java the language of the year for 2015. This accolade reflects the largest gain made by any programming language tracked by the index during the preceding calendar year. The index measures the total number of searches across the major search engines (both US and foreign) and then converts the results for each language to a percent of the total number of searches. Tiobe’s own comments on Java’s surge in popularity included this observation: “This [award] is because Java has the largest increase in popularity in one year’s time (+5.94 percent). Java leaves runners up Visual Basic.NET (+1.51 percent) and Python (+1.24 percent) far behind.”
Tiobe’s site suggests that Java has been the most popular programming language for most of the index’s 15-year history (Figure 1) and remains in first place for the most part.
Why would a language that in 2015 celebrated its 20th anniversary enjoy another spike in usage? Given that there are more than 9 million Java developers, it’s hard to know with accuracy what all the drivers are. However, here are my preliminary thoughts on some of the causes:
• The dominant position in enterprise development. Java is the principal language of enterprise applications due to its remarkable scalability, its wide portability, and the large ecosystem of libraries in existence, which greatly reduce the need for custom coding of solutions.
Few development environments and platforms today enjoy the investment of a sizable corps of full-time engineers dedicated to fitting it to emerging technologies
Here again, the portability of Java (it runs without changes on most major platforms, all desktops, and most mobile devices) and its ability to scale to thousands of simultaneous users, and the comparative ease of finding developers fluent in the language make it the most attractive option for businesses.
• Java can be used for many kinds of devices. As a recent example, Java plays a principal role as the main language and platform for development for devices relating to the Internet of Things (IoT). This includes the software on the devices themselves and, of course, on the back-end servers that the devices talk to and deliver the remote data they’ve collected. Even IoT devices aimed at hobbyists now include Java. For example, the RaspberryPi, the very popular low-cost, low-power platform for experimentation and IoT development comes bundled with a Java development kit (JDK).
The success of Java in new niches and its continued use in the enterprise market is not solely attributable to the momentum of a large installed base, alt h o u g h that undoubtedly contributes. Java, the language, libraries, and its runtime environment— which includes a runtime engine known as the Java virtual machine (JVM)—are the subjects of constant innovation, which has kept the Java platform uniquely suited to the changes in computing technology. This is reflected in several areas of emerging importance, perhaps none more compelling than the cloud. Every major platform-as-a-service (PaaS) provider—Amazon, Microsoft, Google, Oracle, IBM—offers Java platforms. And those platforms are actively used to run major applications. Oracle has begun to pioneer additional Java cloud services aimed at software developers: Oracle Java SE Cloud Service and Oracle Developer Cloud Service.
This continued emphasis on Java enhancement represents a sizable investment by Oracle, which underwrites the cost of a large, dedicated team of engineers who work full time on the language, libraries, and the JVM. These efforts are complemented by contributions from a large community consisting of vendors porting Java to additional platforms, as well as individuals with expertise in specific technical areas, such as concurrency.
The open source community in particular is a wellspring of comments and suggestions. Driven in part by the community’s suggestions, the Java team released Java 8, which significantly reduced the amount of code to perform important functions, including parallel programming, by allowing Java developers to embrace a functional style of programming in combination with the object-oriented style on which Java was based from the beginning. The next release, Java 9, which is under active development, emphasizes compact size of Java programs, organization and maintainability of code and libraries as projects scale, and enhancing the language’s excellent performance with improvements to startup.
Few development environments and platforms today enjoy the investment of a sizable corps of full-time engineers dedicated to fitting it to emerging technologies. Of those, fewer yet welcome active participation from a large community of contributors and advisors. This confluence of substantial investment and community participation mean that Java continues to be well suited to developers’ needs.