Home > Guides > Programming > Java

Toggle Open Guide Table of ContentsGuide Contents

Close Table of ContentsGuide Contents

Close Table of Contents

Web Frameworks

Last updated Aug 18, 2006.

As a Java web architect, it is your responsibility to choose the appropriate web framework to solve your business needs. You have plenty of choices available off the shelf or you can build your own framework from the ground up, it all depends on how specialized your application needs to be and how much effort you want to exert in maintaining your framework.

In this series I will present an overview of the goals and motivations behind web frameworks, survey each of the major open source frameworks, and generate a comparison between the frameworks to help you in making the most educated decision to suit your specific needs.

There are many factors that you need to consider when choosing an application framework, including but not limited to:

  • Suitability for your specific business needs
  • Developer productivity
  • Performance
  • Support and community activity
  • Technology maturity
  • Developer prowess
  • Business relationships

First and foremost you need to choose the framework that is most suitable for your specific business needs. You do not necessarily want to choose the latest and greatest technologies if you have to force your business problem into a model that it was never designed to be in. I have been through this exercise with a company in the past, and while it was a great learning experience working with the newest technologies, in the end the product suffered because the problem domain was not properly analyzed and we had to transform our business problem to suit the technology. The technology needs to be an enabler to better help you solve your business needs.

Performance and productivity are all most always at odds with each other: the best performing application is seldom the easiest to maintain and develop. Only by understanding both the performance and the developer productivity of implementing an application on top of each framework can you strike an acceptable balance between performance and productivity. You might opt for a lesser performing technology in favor of higher productivity, or you might sacrifice some productivity in favor of performance gains. As always, the correct answer is that it "depends" on your goals, timelines, and motivations.

Another aspect that you need to consider when choosing an open source framework is the size of its developer community and the level of activity of that community. You might find the most interesting and technologically advanced framework, but if there are only a handful of developers working on it with patches and releases only being released every quarter or six months, you have to seriously consider whether you want to risk adopting something that may require significant self-enhancement in the future. Remember that the framework should be an enabler for you to solve your business problems, and if you have to spend too much time developing the framework, you will be distracted from your goal: your business problem.

Alongside the size and activity of the developer community, you need to consider the maturity of the technology. Alpha or beta code will experience its own growing pains as it evolves into a production-ready framework, and this could lead to uncertainty in problem diagnosis between your application and the underlying framework. On the other hand, mature and proven frameworks instill you with more confidence that you can trust the performance and reliability of your final product. There is a big difference between alpha code and code that has been in large production environments. And you have to decide how much risk you are willing to take in favor of a potentially technically more advanced technology over a proven technology.

Next, you want to consider the technical prowess of your developers. If you have a company full of individuals that are very experienced in a particular technology, you may select a framework in which they can be immediately productive rather than absorb the learning curve of adopting a new technology. This decision is determined by analyzing the productivity of the technology itself with your developers experience and capacities to learn new technologies.

Finally, you might need to consider business relationships in your decision. If your company has a strong relationship with a particular commercial vendor that supports either their own or an open source framework, then you might be inclined to adopt that framework. In some situations I have seen an inferior technology for a project adopted for business reasons, but it was a necessity to generate that business support. As developers sometimes we lose sight of the overall business when evaluating technology, but we must realize that the technically best application that cannot be sold is not worth anything to the business. If this occurs, hopefully you are in an organization that is open enough to justify such decisions, if just for your peace of mind!

Discussions

Read and display the table in the document
Posted Nov 12, 2008 06:01 AM by StrongHead
1 Replies
Correction
Posted Nov 4, 2008 06:09 PM by youssef.mohammed
1 Replies
Instead of synchronising getInstance
Posted Nov 3, 2008 05:42 AM by grahamkelly
1 Replies

Make a New Comment

You must log in in order to post a comment.

Related Resources

Dustin SullivanIf You Are New to Java Programming...
By Dustin SullivanJune 2, 2009 No Comments

We recently sat down with several top Java developers to talk about that state of the language as we approach this year's JavaOne.  As we were wrapping up, we threw one last question at them out of curiosity, and we thought you'd like to see what some of them said.

Steven HainesOracle Buys Sun of $7.4B
By Steven HainesApril 20, 2009 No Comments

In a stunning turn of events, Oracle steps in and buys Sun amist the breakdown of IBM's attempt to acquire Sun.

Steven HainesIBM in talks to buy Sun Microsystems for at least $6.5B
By Steven HainesMarch 18, 2009 No Comments

Reuters reported this morning that IBM is in talks to buy Sun Microsystems, which could "bolster their computer server products against rivals such as Hewlett-Packard Co."

See More Blogs

Informit Network