In the past decade, investments in IT solutions based on Java technology have been counted in billions, and it is certain that in the coming years this trend will not be changed. If we consider that the major players in the IT market have recognized Java as the “de-facto” standard for enterprise scale product development, that Oracle got Java in the recent acquisition of SUN, that IBM made a huge investment in WebSphere middleware, and that Java middleware is the fastest-growing business of JBoss, it sounds unreasonable to start with development of new solutions and not think about Java as a candidate platform for development. So what about Java development on enterprise scale level? Are there any available “add-ons” (frameworks) that can help us in development process?
If you are in the process of developing a new IT solution, one of your first steps should probably be a choice of technology. Choosing Java as a technology platform sounds like a wise decision. Still, there are several buts. Java / JEE development is not easy; there is a large number of technologies, specifications, standards, design patterns, and many other things that you have to use with Java. All these items ask for specific knowledge and skills and comprise a greatly complicated development process.
Although JEE defines a large set of components that hides low level stuff and make our life easier, still there are a lot of things that move focus from the solution’s business domain, and slow down our developmental process. Currently there are lots of frameworks built on top of Java / JEE that can improve our developmental process. Several are proprietary frameworks (commercial) such as Oracle ADF, and there are many frameworks (Spring, Seam) that are free to use. A majority of them also offer additional commercial support.
Below we will give a brief description of the currently most important development frameworks that would be worth considering, and in upcoming blogs we will try to give more detailed analysis of development frameworks listed below.
Oracle Application Development Framework (ADF) is Java framework for building enterprise applications. It is an end-to-end Java EE framework that simplifies application development by providing out of the box infrastructure services as well as visual and declarative development experience. It significantly accelerates the development process by minimizing the need to write code that implements the application’s infrastructure, allowing developers to focus on the features of the actual application. Oracle started with the ADF development in late nineties, and in that time ADF has been called BC4J (Business Components for Java). Until today, a large number of versions have appeared, and ADF became mature and robust technology. As for disadvantages, ADF is criticized in areas of maintenance, GUI customization, and heavy use of XML configuration.
Main ADF characteristics:
- Simplified database access
- End to end framework
- Rich User interface
- Easy data bindings
- Extended page flow
- Visual and declarative development
- Free to use on Oracle Application servers (WebLogic)
Figure 1 ADF Architecture overview
The Oracle ADF architecture (Figure 1) is based on four layers:
- The Business Services Layer – provides access to data from various sources and handles business logic.
- The Model Layer – provides an abstraction layer on top of the Business Services layer, enabling the View and Controller layers to work with different implementations of Business Services in a consistent way.
- The Controller layer – provides a mechanism to control the flow of the Web application.
- The View layer – provides the User Interface of the application.
Spring is a light-weight Java framework that provides programming and a configuration model for building enterprise applications. On the opposite side from ADF, Spring is free and it can be deployed on any kind of a deployment platform. Supported deployment platforms include stand-alone applications, Apache Tomcat, and Java EE servers.
Main Spring characteristics:
- Flexible dependency injection with XML and annotation-based configuration styles
- Advanced support for aspect-oriented programming with proxy-based and AspectJ-based variants
- Support for declarative transactions, declarative caching, declarative validation, and declarative formatting
- Powerful abstractions for working with common Java EE specifications such as JDBC, JPA, JTA and JMS
- First-class support for common open source frameworks such as Hibernate and Quartz
- A flexible web framework for building RESTful MVC applications and service endpoints
- Rich testing facilities for unit tests as well as for integration tests
Figure 2 Spring architecture overview
The Spring Framework also serves as the foundation for the wider family of Spring open source projects, including:
- Spring Security
- Spring Integration
- Spring Batch
- Spring Data
- Spring Web Flow
- Spring Web Services
- Spring Mobile
- Spring Social
- Spring Android
When JEE 5 was released with EJB 3.0 and JPA specification , a large number of Java developers started to lose focus on Spring framework, because main characteristics of Spring “simplified enterprise development than J2EE” has gone into history. Moreover, Spring has become a very huge framework.
Seam framework is based on Java EE platform, and has been designed from the ground up to eliminate complexity at both architecture and API levels. It enables developers to assemble complex web applications using simple annotated Java classes, a rich set of UI components, and a very little of XML. Seam’s mission is to provide a fully-integrated development platform for building rich, standard-based Internet applications customized for traditional and cloud deployments.
Main Seam characteristics:
- Integrated JSF with EJB 3.0
- Integrated AJAX
- Provides transparent business process management via jBPM
- Declarative state management
- Prefers annotations to XML
- Easy Integration testing
Figure 3 jBoss Seam Architecture overview
Seam framework is based on EJB3. It also integrates some of the widely adopted components such as JSF and Hibernate. Although they seem to work well outside of JBoss Application Server platform, experience has shown some difficulty with that.
Over the years, Java community has developed frameworks to support creating of applications in Java programming language. These frameworks combine code libraries, programming rules, and best practices that have evolved from the research and experience of the developer community. As we can see from this short overview of JEE development frameworks, all of them have strengths and weaknesses. ADF promised to deliver rapid application development with its visual drag and drop development and quick and easy database access. At the end, Oracle considers ADF to be a strategic framework for software development for all its fusion applications. Spring release 1.0 is introduced in 2004, and from that period had been proven solid for enterprise development, although recently Spring has lost momentum. It is the best choice for light-weight deployment platforms such as Tomcat. All these frameworks provide a level of abstraction over the raw programming language that enables developers to create better codes faster, and the end decision is on architect’s affinity and end- user’s requirements.
To conclude: If you work with Oracle technology and use Oracle Weblogic application servers, Oracle ADF is a reasonable choice. On the other hand, if you work with open source, than Spring / Seam will be a significant help in the development process.