Frameworks
When Should You Use a Framework?
Do you think that you can get the benefits of a framework with no cost? Even if the framework is freely distributed, you still have to pay, in terms of time and efforts, to learn how to use this framework.
Obviously, use a framework when the cost of learning it is lower than the cost of writing the code from scratch. Also, keep in mind that the cost of learning a framework is amortized every time you reuse this framework in a new application.
Are Frameworks Worth the Struggle?
The answer is "Yes." I admit that learning how to use a framework is not an easy task. The bad news is that you need to practice building up to three applications using a framework to realize what this framework is capable of. The good news is that frameworks can help you save 10%–95%, depending on the type of framework used. Not only are frameworks worth the struggle of learning them; they also are worth a company's struggle to develop them for reuse in its software products.
Frameworks Classification
Frameworks are classified by their scope to:
- System infrastructure frameworks
- Middleware integration frameworks
- Enterprise application frameworks
Frameworks also may be classified by the techniques used to extend them to:
- Whitebox frameworks
- Blackbox frameworks
In this series, we suggest classifying frameworks according to their target application. Table 1 shows an extended list of Java frameworks. This list could be extended either by adding a new application category or by adding new frameworks to an existing category.
Table 1: Java Frameworks | |
Application | Frameworks |
Database | JRelational |
Intelligent Agents | Jade, JAF, ABLE |
Logging | Java logging framework, Log4J |
Multimedia | JMF |
Networking | RMI |
Testing | JUnit, Cactus, JFCUnit, Abbot, Hansel |
Web Development | Struts, WebWork, SOFIA, Cocoon, JBoss, JOFFAD |
XML | Dom4j, JBind |
Others | Java Collections, BSF, Joone, ... |
What Is Next?
This article is intended to be the first in a monthly series. The following articles will introduce at least a framework for each type of application in Table 1. The main objective of this series is to show how Java developers can use different open source Java frameworks for more programming productivity and enhanced software quality.
Acknowledgements
The author would like to thank Rosemarie Graham for suggesting the idea of this series.
About the Author
Yasser EL-Manzalawy has been a Java programmer and instructor since 1998. He is currently an assistant Lecturer at the Systems & Computers Engineering Department, AZHAR University, Cairo. His Ph.D. research project aims to extend the Java language for agent-based systems.
References
- [GAM95] E. Gamma, R. Helm, R. Johnson, and J. Vlissades. Design Patterns: Elements of Reusable Software Architecture. Addison-Wesley, 1995.
- [FAY99] M. Fayad, D. Schmidt, R. Johnson. Building Application Frameworks: OO Foundations of Framework Design. John Wiley and Sons, 1999.
Related Links
- Frameworks, Frameworks, Everywhere..., by John Earles
- Component Framework Worth the Struggle, by John D. Williams
- "UI Frameworks and JavaServer Faces," by Michael Nash
- Choose the best Java framework for your application, By Harshad Oak.
Page 2 of 2
This article was originally published on March 15, 2004