1. Download the featherlite framework for free
  2. Download the documentation and tutorials
  3. Check the latest news on featherlite development

Technologies Used by featherlite

Like many other modern products, the featherlite framework uses other libraries and frameworks. From the first start we carefully checked which libraries and infrastructure framework is suited to simplify our work. On the one side, we wanted to implement many features that might be useful, even exceptional cases, but on the other side we did not want to use too many third party libraries and frameworks, to escape the dependency hell. Thus we preferred to implement the functionality, we could implement ourself with justifiable effort, using third party libraries and frameworks only if the implementation would cause too much effort or risks to implement.

This section lists the most important libraries and frameworks we use in featherlite. Luckily, all are open source and can be used free of charge. Thus, if you build your own application on top of featherlite, you do not need to worry about license costs for the third party products used by featherlite.

Java Platform

At the time we started to implement the featherlite framework, there was no real alternative to using Java as the programming language for what we intended to do. Starting in 2004, we planned to use late binding and dependency injection from the beginning. Both technologies were hard to establish with the programming languages available in 2004 other than Java. Since Java was a sophisticated platform to develop business application in 2004, and well established, it was our first choice.

Nowadays there are many more programming languages on the market, which would fit our needs. Since Java has continuously been improved over the years, it still fits our needs perfectly.

Today Java comes with a stable set of foundation classes and a huge set of libraries heavily used by featherlite. If we were to enumerate Java technologies we use, the list would be too long. To mention the most important ones, there is Java RMI, which allowed us to easily establish the binding of the rich clients to implement the client-server architecture featherlite has, and Java Server Faces, which we use to build the clients for featherlite Web applications.

Technology: Java Foundation Classes, Java RMI, JSF, and other

Web Page: http://www.oracle.com/technetwork/java/index.html

Wikipedia: http://en.wikipedia.org/wiki/Java_programming_language

Eclipse platform

As was stated above, the Eclipse platform is not only used as the preferred IDE to extend and individualize featherlite applications, but there is also a connection between the featherlite components and the Eclipse platform.

Featherlite components are bundled to Eclipse plug-ins. Thus they can either be deployed as plain jar files, as we do for WEB applications, or deployed as eclipse applications, as we do with the reference server applications as well as for the rich client applications. The latter give us the advantage that we are free to combine the plug-ins on the server and client side just by modifying the deployment description.

Technology: Eclipse Equinox, Eclipse Rich Client Platform

Web Page: http://www.eclipse.org/

Wikipedia:

Hibernate ORM Framework

From the beginning of the featherlite design and implementation, we wanted a loose coupling of the featherlite components to the underlying database used. Thus we decided to decouple the components by following the DAO pattern. With featherlite, you are now free to operate your application with an underlying database, to be able to restore the components state after shutdown, or to run in it memory only, if you need the maximum performance for scheduling or optimization purposes.

Featherlite does not only provide you with the freedom of running with an underlying database or not. With featherlite, you are also free to select from a large set of database products or even the database strategy (relational, NoSQL, Object Oriented Database) you want to use. 

Whenever you choose to operate featherlite with a relational database, featherlite uses the Hibernate framework to do the object relational mapping in the background.

In the beginning of featherlite, Hibernate was just one of the available OR mapping frameworks, and not the leading one. But since at that time, Hibernate was the only framework allowing us to fully separate the business components from the data access objects, it made our cut. Our choice seems to have been proven right, since Hibernate is now one of the leading OR mapping frameworks in the Java world and is widely used. Today Hibernate simplifies our life, since it supports nearly all commonly used relational database products and can be adapted to component development by configuration.

Web Page: http://www.hibernate.org/

Wikipedia: http://en.wikipedia.org/wiki/Hibernate_%28Java%29

Dom4j

XML plays an important role in the featherlite framework. All configuration files are formatted in XML-format and can be easily edited with one of the available XML editors. But the usage of XML is not limited to the configuration files. All featherlite core objects can be serialized to or can be constructed from XML files. This allows us to create a full snapshot of the featherlite object configuration in human readable form but also to create a new object configuration in a XML-file and to import it at runtime, which is one of the key features supporting rapid prototyping and eases testing.

For us, Dom4j fits more to our needs, than the XML libraries shipped with the Java platform or other available XML libraries.

Web Page: http://dom4j.sourceforge.net/dom4j-1.6.1/index.html

Wikipedia: http://en.wikipedia.org/wiki/Dom4j

Log4j

To our feeling a good, balanced logging of messages is one of the key indicators for high quality software. This is even more important if the application is used in a scheduling or control context, where you need to trace software problems as well as problems of the material transfer, or both at the same time. Thus, a lot of work was put into logging human readable messages from featherlite code to allow the user to rapidly locate and solve problems at run time.

Today, Log4j is a well-established and widely used framework to log messages to files or to the console, which both turned out to be very handy to us.

Web Page: http://logging.apache.org/

Wikipedia: http://en.wikipedia.org/wiki/Log4j

PrimeFaces

Currently, there are many Java Server Faces libraries around, which can be used to build sophisticated Web User Interfaces. We tried some during the last few years, some with success, some without. Finally, we ended up with a library called PrimeFaces, which turned out to be simple but yet powerful and provides a lot of fancy widgets.

Thus, we decided to use this JSF library for the generic Web User Interfaces shipped with the Web Template as well as for the Web applications we build in customer specific projects.

Web Page: http://www.primefaces.org/

Matheclipse

One of featherlite’s core features is the template mechanism which can be used to create workflows from scripts at runtime. This refers to scripts do not only act as pure templates but have their own modeling elements, from which the most important ones are the formulas. Since formulas are evaluated at workflow creation time, they give you the flexibility to let the workflow details depend on the attributes of the initial order.

Featherlite supports 2 types of formulas: search formulas, which allow you to let the workflow structure depend on the attributes of featherlite objects at runtime, evaluation formulas, which perform mathematical calculations to evaluate object attributes (take the durations calculation from the ordered quantity for example). Aside from hardcoded evaluation formula, featherlite comes with a special formula that can evaluate arbitrary mathematical expressions.

Since parsing mathematical expressions is an art of its own, featherlite uses the expression parsing functionality of the Matheclipse library. 
 
Web Page: http://sourceforge.net/projects/matheclipse/

Icon Sets

Finally, we use some icon sets in the UI which are provided for free use, i.e. the icons from the Tango Desktop Project and the silk icon set.

Web Page:

 

<< Development Environment