September 12, 2009

Why one need to go for Spring Framework?

Well, Spring is just a framework that makes the development part of complex applications easy allowing developers to focus more on logical part rather than maintaining lot of files. With 2.5 version release, use of annotations is being launched because of which usage of lot of xml files is eliminated. So can say overall much improved. Before that one might be thinking after all –why do we need hell these frameworks right?

Well, frameworks just are like extended versions of design patterns and are they are made to help developers to avoid writing repeated code again and again. They allow developers to focus more on development providing reusability of existing infrastructure things. In the starting or to any layman, it may sound like a making things complicated but in actual sense these complicated frameworks have capability to maintain complex applications for ever. This major advantage of complex applications comes into picture when complex enterprise applications are being developed. Such applications are so complex and big [full of so many features] that they require considerable amount of resources to maintain them. In order to avoid the overhead of that these frameworks come into picture. Moreover, they take care of security aspects also.
Frameworks concept was basically introduced since the time Java Programming is becoming popular. Various Design Patterns are offered by Sun to do so, but frameworks can be called as advanced versions of those patterns providing more and more features.  There are many frameworks available in market; problem comes in deciding which one to go for right? Like EJB3 Framework, Spring Framework, ADF Framework, Struts Framework etc.etc. –

Struts2 Framework: This Apache Struts is a free open-source framework for creating Java web applications. This framework is mostly used for creating UI part but not of that good quality. Ajax use is costly in this. Though this framework do not provide us facility of making rich text based UI. So, this is losing importance with time.

.NET Framework: [Missed this framework before, now adding it.] .NET is a framework for s/w development. It is also similar to other J2EE frameworks in that it provides a set of runtime container/capabilities and a rich set of pre-built functionality in the form of classs libraries and APIs. It provides an environment for building, deploying and running web services and applications but it has still drawbacks like disconnected data architecure and interaction with database is done through data commands. So it is an overhead in case of applications that handle remote transactions as well as it is not as secured as other frameworks. Database related flaws are not implemented well in this framework.

ADF Framework: Still research is going on it. Problem is not an open source. It is Oracle owned. But development using it is going to reduce developer’s lot of time spent in development. It provides awesome facility of making a UI page[supporting AJAX also] in minutes and even it has capability of making programs such that can support  PDAs. It provides lot of features for UI [almost everything] making rich text pages.

EJB Framework : EJB Framework is good in helping a developer by providing reusable components called as beans but creates an overhead of creating Remote Interface, Home Interface files along with a simple POJO [Plain old Java Objects] file called a bean often. Moreover to run even a simple EJB project you need an application server [Note: tomcat – a web container do not work] to deploy EAR file. So development becomes kind of 3 step process – CODE, WAIT, TEST rather than CODE,TEST. Avoid usage of this framework until the application being developed is very- very complex. This framework like spring framework takes care of Security and transaction management’s related issues.

Spring Framework:  Well, being having advantage of open source, this framework is also gaining popularity. Moreover, it is more loosely coupled unlike EJB framework. Main advantage of this framework is at places where your application is too complex to develop and requires use of EJBs but don’t want to take overhead associated with EJB framework. It also provides option of many plug-ins to be used based on developer’s needs. Spring provides a light-weight solution for building enterprise-ready applications, while still supporting the possibility of using declarative transaction management, remote access to your logic using RMI or web services, and various options for persisting your data to a database. Spring provides a full-featured MVC(Model view Controller) framework, and transparent ways of integrating AOP(Aspect Oriented Programming) into your software. Spring could potentially be a one-stop-shop for all your enterprise applications; however, Spring is modular, allowing you to use just those parts of it that you need, without having to bring in the rest.
For more information check this Spring Framework Docs

[ PS: Feel free to correct and add more information regarding tis. List above may get updated. Keep an eye for more information on Springs ] 

Thanks ! :)