Open Source Web Frameworks in Java
Apache Cocoon is a web development framework built around the concepts of separation of concerns and component-based web development. Cocoon implements these concepts around the notion of ‘component pipelines’, each component on the pipeline specializing on a particular operation. This makes it possible to use a Lego™-like approach in building web solutions, hooking together components into pipelines without any required programming.
The core of the Struts framework is a flexible control layer based on standard technologies like Java Servlets, JavaBeans, ResourceBundles, and XML, as well as various Jakarta Commons packages. Struts encourages application architectures based on the Model 2 approach, a variation of the classic Model-View-Controller (MVC) design paradigm.
MyFaces is an implementation of JavaServer™ Faces (JSR 127), a new and upcoming web application framework that accomplishes the MVC paradigm. It is comparable to the well-known Struts Framework but has features and concepts that are beyond those of Struts.
Tapestry is an open-source framework for creating dynamic, robust, highly scalable web applications in Java. Tapestry complements and builds upon the standard Java Servlet API, and so it works in any servlet container or application server.
Tapestry divides a web application into a set of pages, each constructed from components. This provides a consistent structure, allowing the Tapestry framework to assume responsibility for key concerns such as URL construction and dispatch, persistent state storage on the client or on the server, user input validation, localization/internationalization, and exception reporting. Developing Tapestry applications involves creating HTML templates using plain HTML, and combining the templates with small amounts of Java code using (optional) XML descriptor files. In Tapestry, you create your application in terms of objects, and the methods and properties of those objects – and specifically not in terms of URLs and query parameters. Tapestry brings true object oriented development to Java web applications.
Tapestry is specifically designed to make creating new components very easy, as this is a routine approach when building applications. The distribution includes over fifty components, ranging from simple output components all the way up to complex data grids and tree navigators.
Tapestry is architected to scale from tiny applications all the way up to massive applications consisting of hundreds of individual pages, developed by large, diverse teams. Tapestry easily integrates with any kind of back-end, including J2EE, HiveMind and Spring.
Wicket is an open source, component-oriented (POJOs-based), lightweight Java web application development framework. It brings the Java Swing event-based programming model to web development and lets you build maintainable enterprise web applications using the power of POJOs, HTML, Ajax, Spring, Hibernate and Maven. Wicket automatically manages state at the component level, which means no more awkward HTTPSession objects. Its elegant programming model enables you to write rich web applications quickly.
Facelets is meant to be a framework like Tapestry, backed by JavaServer Faces as the industry standard. While JavaServer Faces and JSP are meant to be aligned, Facelets steps outside of the JSP spec and provides a highly performant, JSF-centric view technology. Anyone who has created a JSP page will be able to do the same with Facelets. The difference is under the hood where all the burden of the JSP Vendor API is removed to more greatly enhance JSF performance and provide easy plug-and-go development. Even though Facelets is being developed open source under Sun’s guidance, it can work with any JSF 1.2 compliant implementation or MyFaces.
Facelets has several compelling features:
- Templating (like Tiles)
- Composition components
- Custom logic tags
- Expression functions
- Designer-friendly page development
- Creating component libraries
WebWork is a Java web-application development framework. It is built specifically with developer productivity and code simplicity in mind, providing robust support for building reusable UI templates, such as form controls, UI themes, internationalization, dynamic form parameter mapping to JavaBeans, robust client and server side validation, and much more.
Turbine is a servlet based framework that allows experienced Java developers to quickly build secure web applications. Turbine is an excellent choice for developing applications that make use of a services-oriented architecture. Some of the functionality provided with Turbine includes a security management system, a scheduling service, XML-defined form validation server, and an XML-RPC service for web services. It is a simple task to create new services particular to your application.
Restlet is a framework that brings the simplicity and efficiency of the REST architectural style to Java developers. It is composed of two parts, a neutral API and a reference implementation (Noelios Restlet Engine). It supports all REST concepts (resource, representation, data, connector, components, etc.) and is suitable for both client and server REST applications. The server connectors provided are HTTP (via Mortbay’s Jetty or an adapter Servlet) and the client connectors are HTTP, JDBC, and SMTP (via JavaMail).
Makumba is a query-centric MVC web framework designed to build database-driven without advanced knowledge of database systems or Java. It is simple to configure and eliminates all the overhead usually needed to get data from the database to the view. Its intuitive tag-library helps building complex sites in much less time than other frameworks. Its main features are:
- Makumba List engine (using OQL/HQL as query language), to “loop” over records in the database and display them correctly according to their data type.
- Makumba Forms, supporting nested forms and making it possible to build complex forms without having to worry about how the data will get stored.
- Makumba Data Definitions (MDDs), an abstraction of the data model, making the model design very easy.
JOSSO, or Java Open Single Sign-On, is an open source J2EE-based SSO infrastructure aimed to provide a solution for centralized platform neutral user authentication.
- Junction makes your web application perform great.
- Junction is a synchronizing MVC framework for building applications on top of Google Gears, but also does not require Google Gears if you don’t want it.
- Junction automatically synchronizes your client-side and server-side code and RDBMS’s.
- Junction still works even if the network is occasionally-connected or offline.
- Junction can run your application in the web-browser or on a Rhino-based server, or both. It’s your choice. And, you write your application code just once to support these different runtime options. No duplicate logic.
RSF is an open source web programming framework, with roughly the scope of Sun’s JSF. RSF is written in Java, and is built on the Spring framework. RSF features a pure-HTML templating engine named IKAT, which achieves the cleanest separation between presentation and logic yet made – build “components” using pure HTML and libraries of code rather than heavy framework base classes. RSF also features a lightweight request-scope Spring clone, RSAC, which brings the magic benefits of inversion of control into the request scope. RSF currently has integrations for Hibernate, JSR-168, Cocoon and Sakai.
Echo is a framework for developing object-oriented, event-driven Web applications. Echo removes the developer from having to think in terms of “page-based” applications and enables him/her to develop applications using the conventional object-oriented and event-driven paradigm for user interface development.
Click is a J2EE web application framework created for commercial Java developers. Click Highlights
- Very easy to learn
- Component and Page Oriented design
- Event base programming model
- Automatic form validation
- Page templating
- Velocity page rendering
- Superb error reporting
- High performance The design philosophy behind Click is best summarized in the Swedish word lagom which translates to not too little or too much, but optimal.
The Calyxo framework encourages in MVC model 2 based web application development. It offers support for true modular applications, i18n, a flexible view manager, a powerful validation engine, and more.
RIFE offers an alternative approach to web application development and design. It builds upon the Java platform, but offers all required tools and APIs to implement and perform all common website related tasks in a fast, intuitive and consistent manner. RIFE has been designed for perfect separation of tasks during a development cycle. Every developer, dba and designer only has to focus on his own tasks. At any moment the work can be effortlessly integrated with the work of the rest of the team. This results in a loosely coupled and very robust system. One can make incremental improvements with little or no risk of unwanted side-effects elsewhere in the system. RIFE is composed out of a large collection of modular parts, which include:
- web application engine,
- integrated web continuations,
- customizable multi-format template engine (html, xml, sql, java, txt, ...)
- support for template content transforming through for example XSLT,
- authentication framework,
- database query builders,
- simple persistance layer,
- fault-tolerant JDBC wrappers and connection pooling,
- web-oriented database utilities,
- central data repository,
- cron-like scheduler,
- configuration framework. The central part is the engine which formalizes all aspects of dynamic web development. It graciously solves all doubt, confusion and maintenance problems of HTTP’s statelessness and liberal CGI interface.
Stripes is a Java web framework that makes web development as easy as it should be. It requires zero external configuration beyond the registration of one servlet and one filter. Stripes includes simple yet powerful solutions to common problems such as indexed properties, multi-event forms, localization and use of domain objects in the web tier. All of this in a compact framework with hardly any dependencies!
XML / Java Framework to develop J2EE business applications rapidly and easily. It is based in business components defined with XML. Feature rich and flexible since is used for years to create real business applications.
Strecks is a set of extensions to the Struts web development framework aimed at Java 5 users. The aim of Strecks is to enhance the capability of Struts in terms of productivity and maintainability. Strecks makes use of Java 5 language features, in particular JSR-175 annotations, to simplify the programming model for Struts applications.
WebOnSwing is a revolutionary multiple environment application framework that allows you to create web applications in the same way you develope a desktop one. You dont need to use JSP files, special tags, XML files, requests, posts, etc. Everything is Java and pure HTML files that comes directly from the graphic designer. This framework constructs and handles html pages with Swing components, allowing to use MVC architecture and all the facilities provided by Swing in the web.
VRaptor is a MVC web framework. It is highly based on the Inversion of Control principles, using constructor injection to decouple your components from your business logic classes.
Groovestry is designed to integrate the Groovy scripting language and the Tapestry web application framework. The primary features of this integration are listed below:
- Support Groovy Scripting Language
- Supports use in Component and Page Tapestry Specifications
- Groovy scripts are located relative to the Tapestry Specification that reference them
- Compiles Groovy scripts as they are referenced
- Detect changes in Groovy scripts and recompile as needed
- Minimal non-application script writing
- Fully integrated with Line Precise Error Reporting
- Groovy scripts stored in places other than file systems
- Bean delegate usage pattern
- Page delegate usage pattern
- Page delegate beans integrate can be Tapestry Event Listeners
- Support Groovy scripts deployed in production as .class files
- Unqualified property access
Jaffa (Java Application Framework For All) is an enterprise-focused Java framework for rapid application development. It provides a complete Java Web application development stack, extending exsiting projects like Tomcat and Struts at the frontend with MVC-based web widgets, all the way through to a high-performance lightweight O/R persistence engine, with plenty of rich features in between including rules engines, declarative application, and data security.
wingS is a component based web framework resembling the Java Swing API with its MVC paradigm and event oriented design principles. It utilizes the models, events, and event listeners of Swing and organizes the components as a hierarchy of containers with layout managers. Version 2.0 comes with a completly rewritten rendering subsystem focusing on optimal stylability via CSS and new features like Drag & Drop support, context menus and Server-side code execution (AJAX). Selected features of wingS 2.0 are:
- Comprehensive set of widgets including trees, tables, tabbed panes menus and more.
- Highly flexible dynamic layout managers
- Drag & Drop support
- Component context menus and tooltips
- Handling of browser back navigation
- Improved styleability via CSS The distribution contains an extensive user documentation and various demo applications also available >>online. wingS is released under the LGPL licence. PermaLink
ThinWire is an LGPL open source, free for commercial use, development framework that allows you to easily build applications for the web that have responsive, expressive & interactive user interfaces without the complexity of the alternatives. While virtually any web application can be built with ThinWire, when it comes to enterprise applications, the framework excels with its highly interactive and rich user interface components.
jWic is a java-based development framework for developing dynamic web applications with the convenience and familiarity of ‘rich client’ style programming. The component-based, event-driven programming model makes it easy for developers to quickly create flexible and robust web applications. The collection of standard jWic controls has built-in Ajax functionality to enhance the end-user experience. Developers can also implement their own jWic controls and combine and incorporate them into their web applications.
The Simple Web Framework (SWF) is an event based framework targeting Struts developers who want to build rich Web applications but do not want to migrate to JSF. The SWF is built upon the same Jakarta commons basis as Struts, but uses a different request processor (front controller.) The SWF event model supports XmlHttpRequest (as well as form/submit) based event posting, similar to VB.NET or JSF, with In place Page Updating (IPU) rather than page reloading.
Aranea is an Open Source (APL 2.0) Java Hierarchical Model-View-Controller Web Framework that provides a common simple approach to building the web application components, reusing custom or general GUI logic and extending the framework. The framework enforces programming using Object-Oriented techniques with POJOs and provides a JSP tag library that facilitates programming web GUIs without writing HTML.
Open-jACOB is a Java rapid application development tool (RAD) based on Eclipse that enables the development of Rich Internet Applications (RIA) that are entirely based on Java.
An Open-jACOB based application can be deployed as a stand alone application (.war) in a Web container like Jakarta-Tomcat. Alternatively, it may also be deployed as a jacapp Application within the jACOB Application server, profiting from the more advanced management features of the Open-jACOB container.
The primary goal of the jACOB Framework is to handle Ajax database driven web applications with CRUD (create, retrieve, update, delete) with little or no Java programming.
Maverick is a Model-View-Controller (aka “Model 2”) framework for web publishing using Java and J2EE. It is a minimalist framework which focuses solely on MVC logic, allowing you to generate presentation using a variety of templating and transformation technologies.
Hamlets (previously known as IBM Servlet-based Content Creation Framework) is an open source system for generating dynamic web-pages originally developed by Ren? Pawlitzek at IBM. A Hamlet is a servlet extension that reads XHTML template files containing presentation using SAX (the Simple API for XML) and dynamically adds content on the fly to those places in the template which are marked with special tags and IDs using a small set of callback functions. A template compiler can be used to accerate Hamlets. Hamlets provide an easy-to-use, easy-to-understand, lightweight, small-footprint, servlet-based content creation framework that facilitates the development of Web-based applications. The Hamlets framework not only supports but also enforces the complete separation of content and presentation.
a nice alternative to struts like framework you do not need to xrite a signle html line
Pustefix is a framework that helps you to develop web based applications. The framework consists of two more or less independent parts: A machinery to apply recursive XSLT transformations that produces the UI of the web application. A Java framework that takes input from the UI to change the application data and supplies changes of the application data back to the UI. Together, the framework acts similar to the Model-View-Controller pattern (as far as this is possible in the context of a web application).
The Mentawai goal is to be a simple, flexible, joyful and productive Java web framework.
- Simple: Mentawai is very simple to install, configure and understand.
- Flexible: The Mentawai architecture is very flexible and well organized, enabling any mortal to create new functionalities to the framework by implementing its core classes. The core of the framework is all based on interfaces.
- Complete: Mentawai offers transparent solutions for the repetitive tasks of every web project.
- Joyful: Mentawai offers programatic configuration with 100% pure Java code.
- Productive: Mentawai offers simple and practical solutions to most of the web development problems, reducing the developing time.
Taconite is a framework that simplifies the creation of Ajax enabled Web applications. It’s a very lightweight framework that automates the tedious tasks related to Ajax development, such as the creation and management of the XMLHttpRequest object and the creation of dynamic content. Taconite can be used with all modern Web browsers (Firefox, Safari, IE, Opera, and Konqueror, to name a few) and can be used with any server-side technology including Java EE, .Net, PHP, or any language that lets you return XHTML. Unlike many Ajax frameworks, Taconite completely avoids the use of innerHTML.
Anvil is a Java based server environment and object oriented programming language with templating support, being especially well-suited to for web applications.
A flexible set of state persistence options (including one where all state management is shifted to the browser, for maximum server scalability) is included.
- Support web-environment with multiple concurrent application sessions
- Component-oriented architecture that allows developer to enable existing swing component to web environment easily
- Support common AWT/Swing components in java.awt.
- and javax.swing.
- Support all component layouts in jdk
- Highly configurable use of jxp template for component presentation
ItsNat is an innovative open source (dual licensed, GNU Affero General Public License v3/commercial license for closed source projects) Java AJAX Component based Web Framework. It offers a natural approach to the modern web development. Why natural? ItsNat leverages the old tools to build the new AJAX based Web 2.0 applications: pure (X)HTML templates, pure Java W3C DOM!. ItsNat is server centric using a unique approach called TBITS, “The Browser Is The Server”: ItsNat simulates a Universal W3C Java Browser at the server, with ItsNat the server mimics the behavior of a web browser, containing a W3C DOM Level 2 node tree and receiving W3C DOM Events.
Macaw is an object-publishing framework designed for local web applications. Freemarker is used for presentation, Jetty is used as the default web container, and there is a basic integration with Hibernate (but other persistence mechanisms can be used). The framework requires two layers over the top of “business logic” classes: a Java web layer where certain simple method and class naming conventions are used to facilitate easy mapping of data to and from HTML, and Freemarker page templates. A small number of Freemarker tags are defined to enable references to Macaw-based objects within the page templates.
ztemplates is a framework for creating web-applications based on Java 1.5. Features:
- new and unique action processing module
- clean, technology agnostic urls
- fully JSP, Velocity and AJAX compatible
- invisible to the web-client
- convention over configuration
- small and modular
Jucas is a web-framework which brings together the pull MVC concept with component orientated design GUI programming.
Japple is a rapid application development environment for building web applications and services. Built on the JavaTM2 Platform and open-standards, Japple allows you to develop and deploy web applications faster, easier and more efficiently than traditional methods.
Chrysalis is a Java web development framework. It has a different focus from most Model-View-Controller (MVC) web frameworks. Chrysalis controllers resemble normal Java classes with multiple methods. Client request URLs are mapped to each controller method.
Egg Framework is a web application framework that aims the fast and nice development of Java web applications. Egg Framework take advantage of all pros of Java language – object oriented programming, strong typing, possibility of refactoring in integrated development environments. It breaks the rule of using JSP sites as a view layer. Because the whole application is written in Java, it is easy to modify or extend and changes can be done automatically by refactoring tools.
Aurora is an open-source MVC framework that is aimed at writing configurable, fully object-oriented form controllers using the Spring Framework. The code-base grew out of my experience using Spring’s MVC module and slowly developed over several versions into a full-fledged framework that attempts at tackling the most common problems that I had when using Spring MVC and other J2EE web-related issues in general.
JAT is a flexible Java base-framework which can be easily extended to improve projects start-up time. JAT allows to build Web applications (J2EE) or standalone application (server, batch, etc.). JAT supplies the main basic functionalities of any Java application, such as:
- High Business Object abstraction
- Integration facilities (provided for DBMS, LDAP and open to any software product)
- Authentication and user privileges management
- MVC pattern implementation (with privileges management and page flow control)
- HTML layout structure management (header, footer, menu, etc.)
- HTML dynamic contents and facilities (form, report, paging)
- Logging feautures
- Help on-line utility
- High configuration of all described functionalities
- Administration and configuration GUI
Roma Meta Framework is a Open Source initiative to make Java application development easy. The approach is totally DDD, let’s think to the domain of your application and Roma will makes the rest: persistence (database), presentation (HTML + Ajax), logging, user management, sessions, etc.
JSPWidget is a JSP Framework that provides event-driven,view state retained,server-side GUI controls to make JSP development as intuitive as in traditional client forms or in client-based Web applications.
SOFIA is the Salmon Open Framework for Internet Applications. Conceptually, SOFIA is similar to other J2EE MVC open source frameworks, like Apache Struts. But SOFIA sets a new standard for Java development by delivering so much more in a framework matching best-of-breed tools integration with robust JSP class and tag libraries. SOFIA shortens application development time on the strength of its visual development capabilities and pre-built Java components that dramatically simplify coding.
The Verge Framework is an open source J2EE application framework written entirely in Java using only the standard J2EE APIs. This project aims to develop and promote a highly flexible and extensible framework for building enterprise applications.
Barracuda is an open-source Presentation Framework designed to make it easier to build servlet based webapps by applying proven client-server patterns to the web development paradigm. It features a DOM based templating mechanism for better separation of code from content (default XMLC), a UI component model that provides a series of server side widgets (table, list, template, etc) that make it easy to manipulate DOM structures, and a strongly typed MVC interfaces just like in Swing. With support for multiple markup languages (HTML, WML, XML, etc). It has an event model that provides Model 2 style flow control and allows for true event driven programming on the server. You can add listeners to components and your server-side event handler code will automatically get notified when an action occurs on the client.
The Brill Framework is an open source framework for developing transactional web sites using Java and XHTML. The Brill Framework was developed by Chris Bulcock, as a result of becoming frustrated with frameworks such as Apache Struts, which depends on Java Server Pages. The objective was to develop a framework that is simple, that supports WYSIWYG page editing and does not require Java code or special tags within the Server Pages.
Program your JPS & Servlets like you program your Swing components. Swinglets is a server side component library that uses an identical design to Swing. Swinglets has look and feels for HTML, Java Script and WML. The Components, Models, Renderers, and LookAndFeels are very similar. It has Swing event handling too. In fact Swinglets actually uses the Swing models (e.g. TableModel). This means you can take your existing models and start working with Servlets straight away. It’s just about as close to a standard as you can get without it actually coming from Sun themselves.
Vroom is a framework for HTML/JSP and Java code binding. It’s extremely simple to use and very powerful. It can control your HTML widgets on the fly. It can be applied independently as JSP/Servlet Model or can be integrated with Struts, JSF, YUI etc. No custom tags, no complex configurations, just simple binding configuration file and backing beans.
Helma pioneered the simple and codeless mapping of application objects to database tables. In addition, an embedded object-oriented database performs automatic data persistence of unmapped objects.
Helma has proven itself to be stable and fast, capable of serving high traffic sites with hundreds of thousands of dynamic pages per day.