I am an ERP Project Manager for 7 years within a big company which has many subsidiary companies. As ERP team, we are not only implementing ERP software but also writing our own ERP with the target that we sell this product in the future. Our platform is Java and our applications are web-based. Ibrahim has posted 11 posts at DZone. View Full User Profile

The Foundation of Enterprise Java Frameworks

11.13.2008
| 6564 views |
  • submit to reddit

Frameworks became one of the hottest topics in Java community. Then, Microsoft adopted a similar development architecture and later the .Net platform was born (MS Enterprise Library). I am not going to describe what the framework is but try to frame the framework libraries. I think the Java Framework boom starter was EJB. Issues with EJBs lead to a new effort to find simpler and better alternatives. ORM libraries solved many problems of EJB while staying outside of the Java standard body. As time goes on, the standard body changed its own standards and started adopting these library technologies like Hibernate.

Frameworks provided many useful utilities, eased software abstraction and layering, providing the best practices of design patterns.

First of all, let me classify enterprise Java frameworks describing their functions (I think these are fundamental blocks and every enterprise application needs these frameworks):

Application Framework

The Application Framework contains functions and API’s for enterprise applications. These frameworks provide a run-time (like a VM) for applications and hide the details of some services and functions. There are 3 main functions; User interface (View), server interaction-business logic execution (Controller) and persistence (Model). Some of them are complete application frameworks, such as MVC frameworks, whereas some provides functions only for one aspect of application like UI, persistence or controller. It is very hard to find a complete and fully-fledged application framework. Today these functions are scattered to many frameworks thus making integration more difficult.

Messaging Framework

A Messaging Framework enables communication between different process or servers in either a synchronous or asynchronous way with tightly or loosely-coupled manner. RMI and JMS are examples in Java. Depending on requirements, RMI or JMS could be used. JMS needs an implementation library as well. ESB (Enterprise Service Bus) is just a new acronym for this framework type. Web services and EDI (Electronic Data Interchange) can run with this framework functions.

Reporting Framework

Reporting is the presentation of data for printing or publishing purposes. Reporting frameworks provide layout arrangement, paging and printing to different printers with different document formats. There are many open-source or commercial reporting frameworks with different capabilities. Many of them developed their own proprietary report writing script languages and XML formats with an API set.

Utility Framework

There are some special needs like XML parsing, String manipulation, source code generation, etc. These requirements are met by utility frameworks. A well-known example is Apache Commons.

All Frameworks have following aspects:

1- API: Every framework provides API’s. Maturity and simplicity of these API's are very important. There are many other characteristics of a good API which will be held within another blog post. Frameworks are tightly-coupled application blocks and an API is the glue of these blocks. API is the most important aspect of frameworks which determines success.

2- Tools: Frameworks must be supported with tools. Sometimes frameworks are not usable in the absence of good tools. Tools depend on frameworks, any major code and API change brings many pains to tool writers. Tool support is one of the drawbacks of framework writers since no time remains from framework development jobs. One of the tooling misunderstandings is IDE dependency. Tools don’t necessarily require an IDE, for example code generators can be independent applications.

3- Run-time Management: Frameworks haven’t come to this level yet. I see only a few JMX support but this is not enough. On the other hand, JMX support is very hard for framework developers (Only Application Servers could use JMX). This job is left to profiler vendors but profiling in a production system is nearly impossible. Which job is running using which object through which connection can’t be answered in a running system, I haven’t encountered such tool yet. Session inspection, thread management and connection pool management do still not exist.

4- Standards: With so many options, a developer's toolbox is flooded with frameworks. Keeping standards and consistency across developer ecosystem is another important issue. If frameworks are utilized with careful planning, we can build and keep standards across programs and projects. Otherwise unmanaged development environment will be costly.

Frameworks boost developer productivity by encapsulating functions and dividing expertise. Framework selection is a key part of any development project. Frameworks should be evaluated very carefully with the above aspects. In some circumstances, “Build” decision may be taken if we have enough resources (time, expertise). This was our case and eventually our libraries matured meeting ERP application expectations. Our frameworks turned out to be an Application Operating System (AOS) for web applications.

References
Published at DZone with permission of its author, Ibrahim Levent. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

Venkat Sadasivam replied on Thu, 2008/11/13 - 8:29am

<< I think the Java Framework boom starter was EJB.>>

It is wrong. The framework boom started because of Struts. EJB is never a boom, more marketing.

Venkat Sadasivam

Googly Peters replied on Thu, 2008/11/13 - 10:38am

For ORM frameworks -- yes EJB (the infamous entity bean).  But for application frameworks it did "start" with Struts.  Before Struts, we had giant spaghetti-coded JSP's and servlets everyone.  Developers were writing their own frameworks to manage their JSP's.  Then Struts came along and became the de-facto standard.  Now we have tons of MVC-type frameworks, and newbies complain about Struts (and some about frameworks in general) without knowing what a mess life was before it..

David Lee replied on Thu, 2008/11/13 - 10:52am

Framework madness is the number 1 reason of the low productivity of java developers vs other enterprise developers.

Ronald Miura replied on Thu, 2008/11/13 - 10:37pm

Do you even know the difference between 'framework' and 'library'?

Ibrahim Levent replied on Fri, 2008/11/14 - 12:52am in response to: Venkat Sadasivam

By saying "Boom starter was EJB", I mean EJB's complexity etc. caused to many ORM frameworks launch. Developer tried to find alternatives for EJB to simplify DB access. I am not sure if ORM or MVC frameworks were the first one appeared but they became popular approximately at the same time.
I think "Library" and "Framework" terms have similar meaning. Library was old term.

Alex Lorenzi replied on Fri, 2008/11/14 - 5:07am in response to: Ibrahim Levent

I've always felt that 'Library' and 'Framework' have quite distinct meanings.

A framework, I've always thought, is something that calls your code.. you design your code to some interface defined by the framework, and the framework then calls your code using this interface... Libraries implies simply a collection of (probably related) functionality with you call from your code.

In your article the Apache-Commons package is definitely a library. Frameworks would include things such as Spring etc...

Ibrahim Levent replied on Fri, 2008/11/14 - 10:23am in response to: Alex Lorenzi

Library vs. Framework debate.
Another interesting post about differences:
http://www.ddj.com/blog/architectblog/archives/2006/07/frameworks_vs_l.html

Bruno Sofiato replied on Fri, 2008/11/14 - 6:10pm

A framework will provide you a "shape" for your application, a library will not ;)

Rajeev Singh replied on Sun, 2008/11/16 - 2:17pm

Guys,

A framework is just like a skeleton which you could use to support your implementation . While a Library is somthing which helps the implementation and provides specific services eg, file loding IO etc.

 

Rajeev Singh replied on Sun, 2008/11/16 - 2:18pm

also, a library can be built upon a framework and may use some other third part library

Venkat Sadasivam replied on Sun, 2008/11/16 - 2:49pm

Framework, Toolkit, Library, Component, Modules, Sub-system, etc. all these jargon words became famous due to marketing and increased adoptions; doesn't mean that it wasn't there in past decades. I am sure all these concept were there in some forms in the past decades as well.

Framework boost the developer productivity, because it enforces certan common standard (i.e. common sense) among the developers.  Still some of the old developers doesn't believe frameworks because they want to re-invent everythig by their own it makes them to feel good at end of the day; but defnitely it is not good for business. It makes me to think that always unlearning is very tough. If a person learns something in 1980s throughout their career they feel their lesson is the only successful concept.

 Venkat Sadasivam

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.