Framework is set of reusable software program that forms the basis for an application. Frameworks helps the programmers to build the application quickly. Earlier it was very hard to develop complex web applications. Now its very easy to develop such application using different kinds of frameworks such as Struts, Struts 2, Hibernate, JSF, Tapestry, JUnit, Log4j, Spring etc.
In Java technology there are so many frameworks that helps the programmers to build complex applications easily. You can choose these frameworks for building your applications.
Framework software in computer system is a layered structure that indicates what kind of program should be built and how they would interrelate to one another. In computer system, a framework is a conceptual structure that sometime includes actual programs, which specify programming interface or offer programming tools for using the frameworks.
A framework may be for a set of functions within a system, the layers of an operating system, the layers of an application subsystem that specify how to correlate at some level of network and so on. In general term, we can say that a framework is more comprehensive than a protocol and more prescriptive than a structure.
Like software libraries, frameworks are reusable abstractions of code within a well-defined API, but distinctive feature separate them from libraries or normal user applications:
Inversion of control – The framework completely controls the flow of the programs while in libraries, the caller or user controls the flow the programs not the libraries.
Default behavior – A framework has a default behavior. This default behavior must actually be some useful behavior and not a series of no-ops.
Extensibility – Through selective overriding or specialized user code, a framework can be extended to achieve specific function.
Non-modifiable framework code – The framework code is rigid and modification is not allowed in it. It can be extended but not modified.
The biggest advantage of the software framework is that it reduces the time and energy in developing any software. Frameworks provides a standard working system through which user can develop the desired module of application or complete application instead of developing lower level details. Using frameworks, the developers can devote more time in developing the software requirement, not in preparing the environment and tools of application development.
For the novice user, it is tougher to use the framework quickly as it is big and complex abstract and user has to spend more time in assessing the concept, function and its uses in developing the program, which enhances the development but after learning how to use it efficiently, it becomes easier and quicker to develop any program, module of application.
Another disadvantage is that a generic ‘one-size-fits-all’ does not work so efficiently for any specific software. There is need to extend framework with specific code to develop any specific software.
Ref : roseindinet