Frameworks

In this section we are providing tutorials on various
Java Frameworks. We have categorized these tutorials in various sections. You
can easily navigate to these tutorials.

What is Frameworks?

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.

Software Framework

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.

Advantage

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.

Disadvantage
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.

Examples

Software frameworks support and enhance the efficiency and productivity of the application development but it faces some problems in some specific domains like:

Artistic drawing, music composition, and mechanical CAD

Compilers for different programming languages and target machines

Financial modeling applications

Earth system modeling applications

Decision support systems

Media playback and authoring

Web applications

Middleware

Architecture

Framework architecture consists of frozen spots and hot spots (a virtual name), which are the basic components. The frozen spots define the overall architecture of a software system while hot spots represent those parts where the programmers add their own code to add the functionality specific to their own projects using framework.

In an object-oriented environment, a framework consists of abstract and concrete classes. Instantiation of such a framework consists of composing and subclassing the existing classes.

When developing a concrete software system with a software framework, developers utilize the hot spots according to the specific needs and requirements of the system that means the user-defined classes (for example, new subclasses), receive messages from the predefined framework classes. Developers usually handle this by implementing superclass abstract methods.