A Spring Awakening ... for Java EE

Thumbnail image for SpringSourceVMLogo.pngMuch has been written about the severe Amazon EC2 outage last week. This made me think about the necessary tools needed for deploying high-availability applications in a cloud environment. Java Enterprise Edition is very complex to use but remains the popular choice among enterprise application developers today and it has a huge installed base needing some form cloud readiness. Application platform frameworks, like Spring, provide the runtime middleware container for both custom or packaged applications that run on a cloud service like PaaS (Platform-as-a-Service). Features of programming languages like Java, C#, C++, Ruby or Python; can be extended at runtime by APIs, embedded declarative clauses or metadata patterns provided by a framework like Spring. Optimal allocation of system resources (memory, threads, connection pools etc.), quality-of-service (reliability, availability etc.) and connectivity (messaging, networks & databases) are managed on behalf of the application by the framework. With the huge investment in Java code today, many firms are adopting Spring's Model-View-Controller (MVC) for web applications, plug-ins for the Eclipse IDE and the many web service add-ons available. The beauty of the framework and its relevance to cloud is that Spring separates all business logic from application (logical or physical) infrastructure. Now we can have a real application bus where you combine virtualized or non-virtualized applications with structured or unstructured data. Those applications will be exposed to both managed and unmanaged mobile devices (but that's another blog post!). We would build applications by taking blocks (objects) of code using Spring and populate the business logic using open source lifecycle tools existing outside of the cloud. Dynamic programming models like Ruby can be used as large-scale web-based front-ends with the power of Java EE under the hood extending the life of existing legacy applications in a painless way. With the framework in place, cloud advances in multi-tenant governance; horizontal scaling or cloud transaction processing can take place without causing major application reconstruction.