Java EE Web Technologies

Java Servlets

JavaServer Pages - JSP

Sun JavaServer Pages (JSP) technology allows Web developers and designers to develop and maintain, information-rich, dynamic Web pages. As part of the Sun's Java family, the JSP technology enables rapid development of web-based applications that are platform-independent. JavaServer Pages technology uses XML-like tags and scriptlets written in the Java programming language to encapsulate the logic that generates the content for the page.

Additionally, the application logic can reside in server-based resources (such as JavaBeans component architecture) that the page accesses with these tags and scriptlets. Any and all formatting (HTML or XML) tags are passed directly back to the response page. JavaServer Pages are an extension of the JavaTM Servlet API. Servlets are platform-independent, 100% pure Java server-side modules.

JavaServer Faces - JSF

  • JavaServer Faces Technology
    Downloads & Specifications, Documentation, News & Articles, FAQ, Forum.
    JavaServer Faces FAQ.
  • JSR 127: JavaServer Faces
    Java Specification Request (JSR), Java Community Process (JCP). Specification Lead: Ed Burns, Sun Microsystems; Craig R. McClanahan, Sun Microsystems, primary committer of Struts.
  • Java Server Faces Resources
    Faces Console: a FREE standalone Java Swing application for managing JavaServer Faces-based applications. Articles, Books, Blog Entries, Chats / Interviews, FAQs, Forums / Mailing Lists, In The News, Links, Presentations, Software - Components, GUI Tools, Implementations, Miscellaneous -, Tutorials.
  • javaserverfaces Project at
    This project hosts development of Sun's implementation of JavaServer Faces technology, released as open source under Common Development and Distribution License (CDDL). Download, Documentation and Support Forum.
  • Apache MyFaces
    MyFaces is a Open Source implementation of the JavaServer Faces (JSF) Framework, as in JSR-127 specification.
    MyFaces Core: the portion of MyFaces that implements the JSF Specification; it is divided into MyFaces API (API) and MyFaces Impl (Implementation) subprojects.
    MyFaces Tomahawk: MyFaces JSF components project. Tomahawk components are 100% compatible with the Sun JSF 1.1 Reference Implementation (RI) or any other JSF 1.1 compatible implementation. In addition to custom components, the MyFaces components bundle also includes an "extended" version of some of the default components and add other goodies that goes beyond the JSF specification.
    Old location:
  • Oracle Application Development Framework (ADF)
    Oracle ADF is the Oracle Application Development Framework, and ADF UIX is an open framework for building J2EE-compliant web applications that are component based and XML metadata driven.
    Roadmap for the ADF UIX technology and JavaServer Faces: This paper provides a roadmap for the ADF UIX technology within Oracle JDeveloper 10g and the Oracle ADF, and describes how it will affect the way developers will build J2EE applications with the emerging J2EE standard - JavaServer Faces (JSF).
    The Oracle ADF technology and components are integrated in Oracle JDeveloper IDE.
  • JSF for nonbelievers
    Four-part series of articles on JavaServer Faces, by Richard Hightower, February to July 2005, at IBM developerWorks.
    Clearing the FUD about JSF. JavaServer Faces is easier than you think.
    The JSF application lifecycle. Walk through the 6 phases of JSF's request processing lifecycle.
    JSF conversion and validation. Use JSF's conversion and validation framework to ensure data-model integrity.
    JSF component development. Time-saving moves make building JSF components a snap.
    JSF Article Resources part 1 & JSF Article Resources part 2, by Rick Hightower, CTO, ArcMind.
  • Getting started with JavaServer Faces 1.2
    Tutorial on JavaServer Faces, by Richard Hightower, CTO, ArcMind. At IBM developerWorks. Requires free registration.
    Part 1: Building basic applications, 2007-12-18.
    Part 2: JSF life cycle, conversion, validation, and phase listeners, 2008-01-29.
  • Apache Shale
    Shale is a modern web application framework (formerly a Struts subproject), based on JavaServer Faces (JSF). Architecturally, Shale is a set of loosely coupled services that can be combined as needed to meet particular application requirements. Shale provides additional functionality such as application event callbacks, dialogs with conversation-scoped state, a view technology called Clay, annotation-based functionality to reduce configuration requirements and support for remoting. Shale also provides integration links for other frameworks, to ease development when combinations of technologies are required. Shale supports integration with Apache Commons Validator Framework and with the Spring Framework. It also supports Remoting, server side support for applications that employ AJAX style interactions.
  • JSF Anti-Patterns and Pitfalls
    By Dennis Byrne, 2008-02-28, TheServerSide.COM. Article Discussion.


  • Facelets - JavaServer Faces View Definition Framework
    Facelets is a view technology that focuses on building JSF component trees. 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.1 or 1.2 compliant implementation or MyFaces. Facelets Developer Documentation, by Jacob Hookom.
  • Facelets fits JSF like a glove
    Por Richard Hightower, ArcMind Inc., 2006-02-21, IBM developerWorks.

Component-oriented Web Frameworks

  • Google Web Toolkit (GWT)
    Google Web Toolkit - Build AJAX apps in the Java language. Google Web Toolkit (GWT) is a Java software development framework that makes writing AJAX applications like Google Maps and Gmail easy for developers who don't speak browser quirks as a second language. Writing dynamic web applications today is a tedious and error-prone process; you spend 90% of your time working around subtle incompatibilities between web browsers and platforms, and JavaScript's lack of modularity makes sharing, testing, and reusing AJAX components difficult and fragile.
    GWT lets you avoid many of these headaches while offering your users the same dynamic, standards-compliant experience. You write your front end in the Java programming language, and the GWT compiler converts your Java classes to browser-compliant JavaScript and HTML.
  • Apache Wicket
    Wicket is a Java web application framework that takes simplicity, separation of concerns and ease of development to a whole new level. Wicket pages can be mocked up, previewed and later revised using standard WYSIWYG HTML design tools. Dynamic content processing and form handling is all handled in Java code using a first-class component model backed by POJO data beans that can easily be persisted using your favourite technology. Wicket is free and open source released under the Apache License, Version 2.0. Originally at, Wicket project has officially joined the Apache Software Foundation in June 20th, 2007.
    How Wicket Does Ajax - Geertjan Wielenga interviews Jonathan Locke (Wicket creator), Eelco Hillenius (long term Wicket committer) and Igor Vaynberg (works on Wicket Ajax and API), 2008-04-25, Javalobby.
  • Apache Tapestry
    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. Tapestry reconceptualizes web application development in terms of objects, methods and properties instead of URLs and query parameters.
  • Echo Framework
    Echo is an open-source framework for developing rich web applications. From the developer's perspective, Echo behaves as a user interface toolkit -- like Swing or Eclipse SWT. AJAX technology is employed to deliver a user experience to web clients that approaches that of desktop-based applications. Echo applications can be created entirely in server-side Java code using a component-oriented and event-driven API (Echo2 and Echo3) or as client-side applications written in JavaScript (Echo3 only).

Apache Struts

WebWork joining Struts - November 27, 2005.
The WebWork development team (Jason Carreira and Patrick Lightbody) have been working with the Struts development team (Don Brown and Ted Husted) and have come to the conclusion that the best thing for Java community would be to merge WebWork in to Struts. See the Ted Husted message, Bring WebWork into Struts through Struts Ti. WebWork is a great technology, and Struts is a great community. It's a perfect match and bringing the two together will only be better for WebWork and Struts users alike.

Struts Ti is a new version of Struts created by the Struts developers to succeed Struts 1.x. It is based on WebWork and aims to make web development as simple as possible by taking advantage of the newest Java 5 features.

  • Apache Struts
    Struts is a model-view-controller (MVC) framework for web applications with servlets and JSP. Struts is currently the most adopted web application framework in Java, it's as popular as the Tomcat server and supported by one of the largest communities around the Apache Jakart project.
    Apache Struts 2 Documentation.
    Apache Struts FAQs, Struts Wiki: Resources (Articles, Tutorials, Books), and more fresh and dynamic information about Struts.
    Struts 1 Tiles.
  • Struts 2.0 in action
    Custom tags, themes, and code reuse aid developer productivity. By Venkatray Kamath,, 2007-10-09.
    Adopting Struts 2.0
    The framework for the next generation of Java Web applications. By S. Sangeetha and S. V. Subrahmanya,, 2007-10-11.
  • Ajax validation with Struts 2
    Support for Ajax and JavaScript takes the pain out of Web-form validation.
    By Oleg Mikheev, 2008-10-02,
  • WebWork
    WebWork is a Java web-application development framework. It is built specifically with developer productivity and code simplicity in mind. WebWork is built on top of XWork, which provides a generic command pattern framework as well as an Inversion of Control container. In addition to these features, WebWork provides 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.
  • Struts Ti
    Struts Ti is a simplified Model 2 framework for developing webapps which allows the developer better access to the underlying servlet/portlet environment. See the Struts Wiki on Struts Ti.
  • Struts Resources
    Struts Console: a FREE standalone Java Swing application for managing Struts-based applications.
    Struts: The Complete Reference - book by James Holmes.
  • VisualStruts
    VisualStruts is a small tool for struts documentation. VisualStruts makes it easy to visualize struts-applications, even with subapplications. VisualStruts parses all jsp files and all config files, takes out all the information you need and fills a Graph with the information.
    SourceForge: VisualStruts.
  • Tutorial: Cómo Crear una Aplicación con Struts Paso-a-Paso [In Spanish]
    By Enrique Medina Montenegro.
  • Visual Tags & Visual Reference for Struts
    FWA Software Visual Tools products seamlessly integrate the Struts 1.1 tag libraries with Dreamweaver MX and Dreamweaver 2004, Macromedia's popular web development products.
  • Streks
    Strecks is a set of extensions to the Struts 1 to take advantage of Java 5 language features, in particular JSR-175 annotations, to simplify and enhance productivity and maintainability of Struts applications.
  • Hoople & Struts
    Hoople, attribute-oriented programming for URLs, can be used to better manage your struts-config.xml file.
  • formder
    FormDef is a Struts 1.2.x plug-in designed to ease the work associated with ActionForms in Struts.
  • See Java EE Books: Struts 2 & 1.x

Other Web Application Frameworks

  • VRaptor
    VRpator 2 is a web MVC and IOC framework which was based on many frameworks and ideas (JBoss Seam, Stripes, Webwork, Hibernate Annotations etc). VRaptor2 makes full use of Java 5 Annotations. It favors Convention over Configuration.
    VRpator at
  • Stripes
    Stripes is a presentation framework for easy development of web applications in Java, using the latest Java technologies. Stripes provide simple yet powerful solutions to common problems, such as zero external configuration per page/action (ActionBeans are auto-discovered, and configured using annotations), easy to use (and localized) validation and type conversion system, and many other features.
  • Mentawai Web Framework
    The Mentawai goal is to be a simple, flexible, efective, joyful and productive Java web framework, without unecessary complexity and hard XML configurations existing in other web frameworks. Features: Filters, Authentication, Authorization, Validation, Dynamic Messages, Inversion of Control, Dependency Injection, Internationalization, Inner Actions, Data Lists, Conversion, Redirection, Action Chaining, Html Tags, Display Tags.
  • Neo Framework [In Portuguese]
    NEO is a web MVC framework focused on productivity and based on annotations.
  • Wings Framework
    Wings is a web application framework based on Java Servlets, resembling the Swing API with its MVC paradigm and event oriented design principles. It utilizes the models, events, and event listeners of Swing. Like in Swing, components are arranged in a hierarchy of containers, whose root container is hooked to a frame. Since version 3 wingS utilizes AJAX for incremental updates of the client (browser window), in a completely transparent manner. Free software licensed under the terms of the Gnu Lesser Public License (LGPL).
  • Click Framework
    Click Framework is a modern JEE web application framework, providing a natural rich client style programming model. Click is designed to be very easy to learn and use, with developers getting up and running within a day. Highlights: Component and Page Oriented design, Event base programming model, Automatic form rendering and client/server side validation, Page templating, Velocity and JSP page rendering, High performance. It is a free and open source project released under the Apache Software License.
  • Cocoon
    Apache Cocoon is a Spring-based (since version 2.2) web development framework built around the concept of separation of concerns (that is: allowing people to do their job without having to step on each other toes) and component-oriented web RAD. Cocoon is open source software, based on the Apache License 2.0.
  • Java Web Parts
    Java Web Parts is a project that provides small, reusable and largely independant Java components of interest to all web application developers. You can think of this project as being similar to the Jakarta Commons projects.
  • Apache Turbine (obsolete)
    Turbine is a servlet based Web Application Framework that allows experienced Java developers to quickly build web applications. The Turbine core features a model-view-controller (MVC) architecture free of any dependency on a presentation layer technology, supporting both Velocity or javaServer Pages (JSP).
  • Maverick (obsolete, 2005)
    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. In principle it combines the best features of Struts, WebWork, and Cocoon2. Maverick is multi-platform; it has been ported to both .NET and PHP.
  • Xervlet - A Java MVC API (obsolete, 2005)
    Xervlet is a Java Based Model-View-Controller (MVC) API that allows for easy web-based software development. API allows a the web-designer and code-developer to work apart from one another by combining them at the beautification layter. Config files are fully obfuscated. A 'Xervlet' is a Servlet on Steroids that makes developing web-based applications easy to do. The Xervlet API simply extends the Servlet API aiming to provide developers with a tool for creating web based applications with minimal amount of development.
    SourceForge Project: Xervlet.
  • OpenEmcee (obsolete, 2004)
    The "OpenEmcee Microflow Engine for Java" is an open source framework (Released under MPL 1.1) for developing flexible, manageable, and adaptable applications. Drafting from the "Model" and "Controller" layers of the "Model-View-Controller" (MVC) pattern, it allows developers to separate the business context of their application from the core business functions.

Meta Frameworks

  • AppFuse
    AppFuse is an application for "kickstarting" webapp development. Download, extract and execute to instantly be up and running.
    AppFuse 2.0 uses Maven 2, JDK 5+ and annotations. AppFuse 1.x uses Ant, XDoclet and JDK 1.4+. Supports Spring, persistence framework (Hibernate, iBATIS, JPA), JUnit, jMock, StrutsTestCase, Canoo's WebTest, Struts Menu, Display Tag Library, OSCache, Ajax, JSTL and web framework (JSF, Spring MVC, Struts 2, Tapestry), out-of-the-box database profiles (Derby, H2, HSQLDB, MySQL, Oracle, PostgreSQL, SQL Server), IDE integration (Eclipse, IntelliJ IDEA, MyEclipse, NetBeans). AppFuse is open source, created by Matt Raible.
    The Spring Framework has greatly enhanced AppFuse since February 2004. It's used throughout for its Hibernate/iBATIS support, declarative transactions, dependency binding and layer decoupling.
    AppFuse Project at AppFuse 1.x Documentation at Raible Designs.
    AppFuse: Start Your J2EE Web Apps, by Matt Raible, 07/15/2004, at Today.
    AppFuse Quick Start Guide.
  • AppFuse Light
    Former Equinox. Lightweight version of AppFuse. It was created by Matt Raible, inspired while he was writing Spring Live and looking at the struts-blank and webapp-minimal applications that ship with Struts and Spring, respectively. These "starter" apps were not robust enough for him, and he wanted something like AppFuse, only simpler. AppFuse Light uses Spring MVC and Hibernate by default. However, you can change the web and persistence frameworks to:
    Web Frameworks: JSF (MyFaces), Spring MVC (with Ajax, Acegi Security, JSP, FreeMarker or Velocity), Stripes, Struts 1.x, Struts 2.x, Tapestry, WebWork, Wicket.
    Persistence Frameworks: Hibernate, iBATIS, JDO (JPOX), OJB, Spring JDBC.
    Both Ant and Maven 2 are supported for building and testing.
  • J2EE Spider
    J2EE Spider is an open source tool for rapidly developing form-based web applications, generating code for JEE capable of increasing the productivity of Web development projects. Free software project created by Bruno Braga.
    Comparison: J2EE Spider, AppFuse, JSenna, E-Gen.
  • Roma <Meta> Framework
    ROMA � um Meta Framework planejado para construir aplicativos com v�rios frameworks em um tempo muito curto. ROMA quer juntar os melhores frameworks e ferramentas Java. ROMA n�o quer reinventar a roda nem outro framework web novo em folha (Mais um? :-D), mas sim usar os produtos j� existentes com pouco esfor�o por parte do desenvolvedor. ROMA � um projeto de software livre com licen�a Apache 2.0 comercialmente amig�vel.

Web Frameworks Comparisons

AJAX with Java

AJAX - Asynchronous Javascript And XML.