Wednesday, July 04, 2007

A True Framework

Java enterprise software development has become more comlex and unpleasant than ever with increasing stack of technologies added; fast, complex and ever changing specs coming out of JCP; more steap learning curve from version to version with increased complexity than simplicity; lack of good tooling support; and on top of all these more and more vendor specific extensions to know for making any project successful.

Spring framework has been gaining support among the Java community which is trying to simplify (and in many ways has succeeded) Java enterprise software development. Spring is a light-weight modular stack of Java frameworks. At its core is a light-weight POJO based IOC container that brings in a powerful design pattern - Inversion Of Control (IOC) or Dependancy Injection(DI) to Java applications. It is more nice for anybody to say that one is developing a Spring-based Java enterprise applicaton than to say J2EE-based (rather JavaEE-based) application.

Recently, Ruby On Rails (RoR) has been gaining popularity both inside and outside of Java community as an attractive alternative to Java-based web application complexities. In many ways RoR has clearly shown and proven to the developer community, what a "true framework" should look like. Even very mature enterprise technologies like Java with a wide variety of frameworks available for its community is shamelssly learning from this fast growing baby - RoR.

In my opinion "a true framework" should promote, automate and even force several best practices and make the development fast but simple, pleasant and more enjoyable.

RoR – a very well designed framework is based on THREE principles:
  • DRY – Do not Repeat Yourself
  • Convention over Configuration - which eliminates lot of configuration headaches
  • Code Generation – eliminates the need for repeated startup code

I was initially impressed by the simplicity and elegance of Java language when I first moved from C++ in 1999. It has been quite enjoyable developing Java applications. I have been trying to keep myself abreast with the latest and greatest things happening in Java community. Since then I never had to look back up until I have come across RoR that made me to think like "Java development is tedious and complex". Open source community has contributed an amazing list of quality frameworks to Java. Even with good open source frameworks like Jakarta, Struts, HIBERNATE, Spring etc., developing an enterprise Java application is still tedious and complex. Java development community deserves better frameworks for rapid development and truly making Java development a pleasant experience.

After learning and experiencing RoR, I started looking for such frameworks or initiatives in Java community. Though there is NONE currently available that is even close to RoR, I have come across a few initiatives that are happening along similar lines.

Following is a shot list of some of such initiatives for Rapid Java Application Development:

  • AppFuse - seems promising. Try AppFuse light/ Equinox and Jetty for even more rapid results.
  • Sculptor - a model driven development Java application framework
  • AndroMDA - another model driven development Java application framework.
  • Grails - a RoR like framework for Java web-based development.

Finally, it is a good sign to see that Java is heading towards simplicity with several open source frameworks and initiatives shifting developer community from traditional Java Enterprise Development towards simple more agile way - for a fast, better and pleasant experience. :)

A must have Eclipse plugins

Commonclipse - Elcipse plugin
It features automatic generation of the following methods using commons-lang builders:

  • toString()
  • hashcode()
  • equals(Object)
  • compareTo(Object)

This would be really useful if you are usine HIBERNATE for persisting domain objects.

GoToFile plugin