Java/JEE software development frameworks

Posted by in Blog | December 19, 2011

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.

ADF

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

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.

JBoss SEAM

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.

Conclusion

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.

References 

http://www.oracle.com/technetwork/developer-tools/adf/adf-11-overview-1-129504.pdf

http://www.springsource.org/spring-framework#documentation

http://docs.jboss.com/seam/latest/reference/en-US/html/Book-Preface.html

6 comments on “Java/JEE software development frameworks

  1. Abbas on said:

    Nice Article. As i am an oracle forms and reports developer and now also working on Java and from last couple of months i was searching that what platform should i go for java and finally i decided to adopt ADF Development and after reading this article I am thinking that my decision to go for ADF is quite good till now.

  2. Ivan on said:

    Hello, I apreciate your informaation how long would it take to reach same expert knowledge and souverignity and responsiveness in Java ADFas it could be for experienced Forms&Reports programmer?

    • Hi Ivan,
      thanks for reading our blog. It’s hard to predict how long would it take to gain expertise in these technologies. It mainly depends on person’s background – starting point, general Java knowledge and multi tier architecture.

      From our point of view ADF is worth time invested in getting expertise, since ADF is Oracle’s strategic development framework that certainly has a future. Only little annoying thing are changes in view part of framework which are frequent inline with all changes happening in Java world – view part.

      To finalize – if you are expert in Forms&Reports and you have some Java knowledge give yourself a few months for adoption period, many things are different and more control is on your side (also work to be done for project preparation) you can check our product ADF Kickstart for list of functionalities needed to be done if you want systematic approach in enterprise application development.

  3. Glad to see JBoss Seam on the list. It makes sense to see ADF on top of others as Oracle Fusion and the ADF is probably the Visual Studio .NET of Java as it provides a clean, and less problematic development environment unlike the others.

    • Gozze, thanks for your comment.

      Your comparison with VisualStudio is quite good since, within Java ecosystem, ADF (combined with JDeveloper, of course) is the sole framework/tool which provides visual development of all application layers (from database to user interface).

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>