In the course of developing products and bringing them to market, it’s not always obvious which features are going to resonate with developers. This week I had the pleasure of doing several demonstrations of MyEclipse for Spring 8.6 Milestone (M1) to Spring developers. The premier 8.6 M1 features are the new scaffolding options, including Spring MVC, Spring Web Flow, Adobe Flex, Google Web Toolkit (GWT), and iPhone Web. As would be expected, a demo typically consists of showing a fully generated, ready-to-run example for each type of scaffolding. During a demo, I don’t usually have a ton of time to review the architectural implementation, and to be quite honest, most developers find architectural discussions during a demo to be very boring.
This week I was pleasantly surprised by how open developers were to taking a deeper dive into the generated code and discussing the architecture. I started wondering why there was this sudden interest in the architecture, and I’ve come to the conclusion that it has to do with the fact that in order for an application to support multiple, concurrent web layers, it really draws focus to the other layers of the application that need to support those web layers.
If you are responsible for maintaining one or more web applications, the thought of rewriting the front-end has more than likely crossed your mind. Considering all the choices there are for implementing web layers, the fear for some developers is how well the other applications layers are designed for re-implementing the web layer. The following diagram shows the typical application layers of a web application.
The Java language and the Spring framework combination have excellent support for application layering, where each layer is represented by a Spring or Java stereotype: @Controller, @Service, @Entity and @Repository.
An ideal implementation of the service, domain, and data access layers should be able support multiple web layer implementations. This also highlights something that I’ve been trying to explain to developers even prior to 8.6. If you have selected a web layer technology that isn’t currently generated by MyEclipse for Spring, there’s still a lot of value in having MyEclipse for Spring generate the common layers for you. The fact that common layers can support multiple web layer implementations (as proven by the 8.6 M1 scaffolding capabilities) is a testament to the architectural soundness of the common layers that are generated and the likelihood of being leverage-able by other web layer technologies. This is even further emphacized when you consider that the common layers of the application architecture also support JAX-WS, REST, and Javascript/JSON.
There are two ways to get your hands on M1. Existing Pro subscribers can use the add-on option in the Dashboard tab of the Software & Workspace Center, while new MyEclipse users can download a free, 30-day trial at http://bit.ly/asbbYo