Application & Script

 

Flow of Control
Java Classes
User-Defined Classe
Java Applet
Java Arrays
Java Exceptions
Java.io
Recursion
Java performance Tips

Java Frameworks
Java Collections

 

Java framework Architecture


Frameworks Design

A framework is a set of cooperation classes that represent reuseable design of software systems in an application domain. Generlly speaking a framework is made of a set of abstract classes, concrete classes and a set of interfaces.

When building an pplication on top of any application your user defined classes and application add specialization to the framework classes and interfaces. You basiclly add the hooks that will make the application work correctly using the power of the framework.

If and when you decide to build your own framework you need to be aware of the following characteristics of frameworks that must be satisifed before you claim victory:

  1. Extensibility
    Your application extends the framework classes and interfaces supplying what’s called hooks for the framework hotspots
    for example our applets must provide implementation for init() and start() methods of the JApplet class. Same applies when designing a framework, you need to impoly good object oriented design desicions to be allow building extnesible application on top of the new framework.
  2. Inversion of Control
    The Framework is in charge and not the application. In the above Applet example the control reside in the Applet class.
  3. Design Patterns should be used as building blocks for the new framework
  4. Completeness
  5. Adaptability
  6. Efficiency
  7. Safety
  8. Simplicity

 

Java Frameworks

 

  1. Reduces programming effort by providing useful data structures and algorithms so you don't have to write them yourself.
  2. Increases performance by providing high-performance implementations of useful data structures and algorithms. Because the various implementations of each interface are interchangeable, programs can be easily tuned by switching implementations.
  3. Provides interoperability between unrelated APIs by establishing a common language to pass collections back and forth.
  4. Reduces the effort required to learn APIs by eliminating the need to learn multiple ad hoc collection APIs.
  5. Reduces the effort required to design and implement APIs by eliminating the need to produce ad hoc collections APIs.
  6. Fosters software reuse by providing a standard interface for collections and algorithms to manipulate them.