Facing up to new challenges
Next-gen Java: We don't need another revolutionary
Cameron McKenzie, editor of TheServerSide.com is searching for the next disruptive element that would be able to wake up the Java enterprise community and lead them into the next era of enterprise computing. He rightly points to the great accomplishments by Rod Johnson, who revolutionized the Java world some years ago with his concept of Dependency Injection (DI), which he implemented in the Spring framework – and virtually left no stone unturned. Where is the new Rod, where is the new knight in shining armour that saves the Java world? asks Cameron.
Is it Martin Odersky, the creator of Scala and founder of the company Typesafe, which focuses on the development and commercialization of a purely Scala-based software stack? The Scala scene, writes Cameron, is too self-opinionated and therefore can hardly be imagined as having the same broad effects in the Java community, as the Spring Framework did then. Also, the technical focus of the Scala people is clearly on the early adopters, the alpha developers, and hardly useful for the Java mainstream.
Up to this point, I agree with Cameron's assessment. The Java world is risking a lot (given their exorbitant success) when ignoring the signals that hint at a "change". Certainly, there is still a lot of development work to catch up on in the area of Core Java and the classic editions (Java EE, Java SE), that has been missed in the lost half-decade between 2005 and 2010. Oracle does a great job here. But still the Java camp lacks a clear vision of where to go in the future.
Also in this regard I agree with the assessment of Mr Cameron McKenzie.
But I do not share his desire for a "Rod Johnson 2.0", someone who is a guiding light and leads the world of Java down the right path. Rather, I believe that the necessary change takes place in the form of a covert transformation rather than a revolution.
Today, a variety of current trends, which are not always directly related to each other, will form a relationship in the near future, which we will then perceive as "New School":
- The Web (II): Technologies like REST and WebSockets signal an altered handling of the Web by enterprise developers. The Web is finally changing from a pure transport medium for messages and pages to a global operating system, in which resources and services are provided (hypermedia). Systems of the future will be radically distributed, and, ironically, ten years after the SOA hype, the vision of consistent service and resource-orientation is finally coming true (just by other means).
- Mobile (I): Smartphones, despite claiming to represent true supercomputers in your pocket, are still devices with limited resources. Small screens, no permanent connectivity, limited battery life means that anything superfluous is removed. The result is the concept of "apps": small and highly-focused programs that mostly serve only one purpose and therefore have the primary task to act as a service endpoint for a web-based service.
- Virtualization: Actually, most of the techniques that are now in-vogue under the term "cloud" have existed already for some time. But the public cloud, as it was built by Amazon, Microsoft and many other global and regional providers, offers a new "self-service" component. Activated within minutes and via credit card, (and customizable in most cases via a user-friendly interface), these cloud offerings introduced a new quality for accessing computing resources (not to mention the flexible payment models, which accompany almost all public-cloud offerings).
- Big Data: The big players in Silicon Valley have led the way, now the innovative data stores are used globally. Originally positioned purely as a rejection of the relational databases, most people understand today "NoSQL" to mean "Not only SQL" rather than as a complete departure from the SQL query language. The fact is that the industry has learned that we do not in every case require a transaction-oriented and relational database, but that it often is adequate to use an easier data store. "Big Data" deals therefore not only with super large amounts of data, but often with mere simplification. At the core of the trend, however, is the exponentially increasing amount of data generated by sensors, social media and the rising networking, from which we want to reap the benefits. Namely in near real time. Not a trivial task.
- DevOps (I): Two important experiences led to the DevOps trend that intensified collaboration between the developers of a software (Dev) and the operators of that software (ops). First, there were the agile principles, proving for over ten years now that Agile makes software development much more successful than the traditional methods. Secondly, there was the rapid dynamisation of all-digital business models and the resulting flexibility. Companies must be able to apply changes immediately in production, if they want to survive in a global business environment. Against this background, the DevOps movement broke the traditional boundaries between Dev and Ops down and established a new culture of cooperation between the two teams - in terms of a success of the enterprise.
- DevOps (II): Continuous Delivery forms a bunch of techniques, which aims to accelerate and to automate the delivery of software significantly. Some seem to make a competitive sport out of Continuous Delivery, shipping 30 or 50 releases of their mission-critical software per day. But at the core is the ability deliver updates and developments of software on-the-fly and without a hitch. In order to build such a system, a software developer and operator must work closely together.
The above list of trends - Web, Mobile, virtualization, big data and DevOps – may for some sound like a collection of buzzwords. It may be that one or the other issue is a flash in the pan, so it is important to ask what is left over at the end. But instead of asking, like Cameron for an innovator, the Java community - and not just the Java community! – needs to keep their eyes open and needs to understand the essence of these currents.
The fact is that these challenges together exert more pressure on Java to innovate. So the Java community in turn must renew at many points, in order to remain relevant. The IT world has become much more decentralized, and that is why we need more specific, more tailored and smaller, "evolutionary" solutions. A singular technology such as Scala will not be able to accomplish this.
Many of the ideas described here have arisen in discussions with Eberhard Wolff, so I finally would like to point to his excellent presentation "New Challenges and Approaches for Enterprise Java", which he presented at JAXconf in San Francisco.