Over a million developers have joined DZone.

The State of Java 2012

DZone 's Guide to

The State of Java 2012

· Java Zone ·
Free Resource
The face of Java has changed many times since its widespread use began in the 1990’s, but in 2012 Java will see a fragmented but positive resurgence. The Java of today can be categorized by the bloated app servers, the mountains of XML configuration , and the non-standard implementations of J2EE, but w hat made Java great initially, however, is still there at the center—the Java Virtual Machine (JVM) . The Java we once knew is dead, but the unsung hero of Java continues to be the JVM platform, and that in particular will continue to see impressive growth.

This post was originally authored by Brian Doll, the Lead Performance Engineer at New Relic

JVM is far from dead, and , in fact, the JVM will see a continuing resurgence in 2012 but under different names. Programming languages like Scala and JRuby, and even Clojure that are built on top of the JVM framework, offer new and unique programming capabilities and are suited for different types of systems. With the JVM already secured as a standard in enterprises worldwide, many top companies are already building their own services with these three JVM-hosted languages: Twitter's services are written in Scala; while LinkedIn has some services that are written in JRuby, and travel site Kayak.com has backend services written in Clojure. In 2012, these next-generation JVM-hosted languages will bring solutions to unique system challenges, all without the need to battle with corporate operations on how applications written in them will be deployed.


However, developers still rely on many large systems buil t with Java. What made Java such a valuable platform since the beginning is its ability to perform high-level services quickly and efficiently. Despite the many phases of Java itself, this ability in particular will bring back developers who have been using other languages in combination to perform the same functions. Especially in tighter economic times, it will be more cost effective for smaller companies to purchase one server from a hosting provider like Amazon and use Java to run all of their necessary functions rather than pay for multiple servers to run multiple languages.


Another ability that enables Java to still be a superior language for larger operations management is concurrency. 2012 will be the year for Java SE 7, having just been released in July, with particular focus on the added concurrency features. Among the additional concurrent services in Java SE 7 is the Fork/Join framework, which will play a bigger role in operations in the coming years. So far the adoption curve has been slow, but 2012 will see programs relying much more on concurrency utilities to not only manage and improve the speed of processing but also determine which functions should be concurrent and which need the stand-alone.


As we've seen the rise and fall of many programming languages, in 2012 winning will be defined by different criteria: which one plays well with others. Java developers can feel close to home with JVM-based languages, which introduce a new approach to programming while still making use of the many useful and well performing Java.


Tips for Java developers in 2012


* Learn another JVM-based language and see what all the fuss is about

* Check out how lightweight Java web apps can be with the Play! Framework (http://www.playframework.org/).

* Get your lightweight apps and Java services in the cloud on Heroku

* Profile your Java apps to show off just how fast they are with New Relic!


Brian Doll has been building things on the web for over 14 years and has extensive experience in retail, media, technology and financial service industries in both start-up and large enterprise environments. Currently, he is the principal performance analyst for New Relic , a company specializing in web application performance management.


Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}