Tecnologias Web Java EE

Java Servlets

JavaServer Pages - JSP

A tecnologia Sun JavaServer Pages (JSP) permite a desenvolvedores e designers Web criar e manter páginas Web dinâmicas, ricas em informação. Fazendo parte da família Java da Sun, a tecnologia JSP possibilita rápido desenvolvimento de aplicações baseadas em web que são independentes de plataforma. Páginas JavaServer usam cláusulas similares a XML e scriptlets escritos na linguagem de programação Java para encapsular a lógica que gera o conteúdo para a página.

Além disso, a lógica da aplicação pode residir em recursos baseados no servidor (como a arquitetura de componentes JavaBeans) que a página acessa com estas tags e scriptlets. E toda e qualquer tag de formato (HTML ou XML) é retornada diretamente para a página de resposta. JavaServer Pages são uma extensão da API Java Servlet. Servlets são módulos server-side independentes de plataforma, 100% Java.

JavaServer Faces - JSF

Especificação padrão da plataforma Java EE para framework web MVC orientado a eventos e componentes.

Facelets

  • 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 [Em Português]
    Por Rafael de Paula Souza, artigo em DevMedia.
  • Facelets fits JSF like a glove
    Por Richard Hightower, ArcMind Inc., 2006-02-21, IBM developerWorks.

Frameworks Web orientados a Componentes

  • Google Web Toolkit (GWT)
    GWT em Português do Brasil.
    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 é software livre de código aberto distribuído sob a licença Apache 2.0. Originalmente em SF.net, o projeto Wicket foi oficialmente incorporado à Fundação Apache em 20 de junho de 2007.
    How Wicket Does Ajax - Geertjan Wielenga entrevista Jonathan Locke (criador do Wicket), Eelco Hillenius (committer de longa data do Wicket) e Igor Vaynberg (desenvolve Ajax e API do Wicket), 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

Apache Struts é um projeto open source iniciado por Craig R. McClanahan em 2000, para prover um framework MVC para a comunidade Java. A versão 1.0 foi lançada em julho de 2001. Foi por muitos anos o framework MVC mais popular para o desenvolvimento de aplicações web em Java. Ainda hoje, o Struts 1.2 está presente em grande quantidade de aplicações existentes. Struts provê uma camada de controle para aplicações web, com um componente Controller (servlet) que faz a ponte entre o Modelo da aplicação e a Visão web. Mapeamentos em XML definem o fluxo e o processamento das requisições, através de classes de ação (Action) invocadas pelo Controller, que tipicamente consultam o Modelo da aplicação e usam uma classe ActionForm para facilitar a transferência de dados resultantes para a Visão.

Em 27 de novembro de 2005, WebWork se juntou ao Struts. A equipe de desenvolvimento do WebWork (Jason Carreira e Patrick Lightbody) concluiu com a equipe do Struts (Don Brown e Ted Husted) pela fusão destes dois ótimos projetos similares. Assim, o WebWork 2 foi incorporado como a nova geração do Struts, Struts 2.

O codinome do projeto incubado de incorporação do WebWork 2 ao Struts foi Struts Ti. O último lançamento independente do framework original foi WebWork 2.2.5 (2007-04-17, security fix 2.2.6 em 2007-07-21). A geração anterior do Struts passou a ser conhecida como Struts 1 e continua sendo mantida, pois conta com grande base instalada e vasta comunidade de desenvolvedores proficientes.

Com o surgimento do padrão JavaServer Faces (JSF) na plataforma Java EE, bem como de outros frameworks MVC considerados mais inovadores, mais simples ou mais produtivos (como Tapestry, Wicket, VRaptor), aliado ainda a certa confusão e dificuldade da comunidade de desenvolvedores em entender e apoiar a fusão com WebWork e surgimento do Struts 2, o framework Struts tem perdido mercado nos últimos anos.

  • Apache Struts
    Struts é um framework para aplicações web model-view-controller (MVC) com servlets e JSP. Struts é atualmente o framework de aplicação web Java mais adotado, é tão popular quanto o servidor Tomcat e suportado por uma das maiores comunidades em torno do projeto Apache Jakarta.
    Apache Struts 2 Documentation.
    Apache Struts FAQs, Struts Wiki: Resources (Artigos, Tutoriais, Livros) e mais informação atualizada e dinâmica sobre Struts.
    Struts 1 Tiles.
  • Struts 2.0 in action
    Custom tags, themes, and code reuse aid developer productivity. Por Venkatray Kamath, JavaWorld.com, 2007-10-09.
    Adopting Struts 2.0
    The framework for the next generation of Java Web applications. Por S. Sangeetha e S. V. Subrahmanya, JavaWorld.com, 2007-10-11.
  • Ajax validation with Struts 2
    Support for Ajax and JavaScript takes the pain out of Web-form validation.
    Por Oleg Mikheev, 2008-10-02, JavaWorld.com.
  • WebWork
    Framework WebWork, por OpenSymphony.
    WebWork Blog.
  • JamesHolmes.com 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 [Em Espanhol]
    Por Enrique Medina Montenegro.
  • Visual Tags & Visual Reference for Struts
    Visual Tools, produtos da FWA Software, integram plenamente as bibliotecas de tab (tag libraries) Struts 1.1 com Dreamweaver MX and Dreamweaver 2004, populares produtos da Macromedia para desenvolvimento web.
  • Streks
    Strecks é um conjunto de extensões para Struts 1 para tirar proveito dos recursos da linguagem Java 5, especialmente anotações (JSR-175), para simplificar e melhorar a produtividade e manutenibilidade de aplicações Struts 1.x.
  • Hoople & Struts
    Hoople, uma programção para URLs orientada a atributos, pode ser usado para você gerenciar melhor o arquivo struts-config.xml.
  • formder
    FormDef is a Struts 1.2.x plug-in designed to ease the work associated with ActionForms in Struts.
  • Veja Java EE Livros: Struts 2 & 1.x

Outros Frameworks de Aplicação Web

  • 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 java.net.
    VRpator Brasil [Em Português].
  • 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 [Em Português]
    O objetivo do Mentawai é ser um framework web simples, flexível, eficaz, prazeroso e produtivo, sem complexidades desnecessárias e configurações XML existentes em outros frameworks web. Funcionalidades: Filtros, Autenticação, Autorização, Validação, Mensagens dinâmicas, Inversão de Controle, Injeção de Dependências, Internationalização, Inner Actions, Lista de Dados, Conversão, Redirecionamento, Chaining de Action, Tags de HTML, Tags de Display.
    Projeto de software livre criado pelo brasileiro Sergio Oliveira Jr.
  • Neo Framework [Em Português]
    O NEO é um framework web MVC focado na produtividade e baseado em anotações. O NEO é desenvolvido pela equipe da Linkcom e coordenado por Rógel Garcia. Ele é baseado no Spring e Hibernate e visa o desenvolvimento rápido de aplicações web. Possui vários recursos como Ajax facilitado e utilização de Annotations e Generics em lugar de declarações XML. É possível construir um CRUD em apenas 10 minutos. (Fonte: Pedro Gonçalves, em JavaFree.)
  • 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 (obsoleto)
    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 (obsoleto, 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 (obsoleto, 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 (obsoleto, 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 é uma aplicação para "kickstarting" no desenvolvimento de aplicação web. AppFuse combina integração de frameworks open source predominantes na atualidade, design patterns e melhores práticas de desenvolvimento, um conjunto de tarefas automatizadas, e o projeto completo (diretórios, fontes e configurações) de uma aplicação web totalmente funcional, incluindo recursos como autenticação e internacionalização, para servir de início rápido.
    Faça download do AppFuse, extraia e execute para instantaneamente ter uma aplicação web funcional.
    AppFuse 2.0 usa Maven 2, JDK 5+ e anotações. AppFuse 1.x usa Ant, XDoclet e JDK 1.4+.
    Suporta Spring, framework de persistência (Hibernate, iBATIS, JPA), JUnit, jMock, StrutsTestCase, Canoo's WebTest, Struts Menu, Display Tag Library, OSCache, Ajax, JSTL e framework web (JSF, Spring MVC, Struts 2, Tapestry), out-of-the-box database profiles (Derby, H2, HSQLDB, MySQL, Oracle, PostgreSQL, SQL Server), integração com IDE (Eclipse, IntelliJ IDEA, MyEclipse, NetBeans). AppFuse é open source, criado por Matt Raible.
    O Framework Spring melhorou muito o AppFuse desde fevereiro de 2004. Ele é usado no suporte a Hibernate/iBATIS, transações declarativas, binding de dependências e desacoplamento de camadas.
    Projeto AppFuse em java.net. Documentação AppFuse 1.x em Raible Designs.
    AppFuse: Start Your J2EE Web Apps, por Matt Raible, 15/07/2004, em java.net Today.
    AppFuse Guia Rápido para Começar (em Português).
  • AppFuse Light
    Antigo Equinox. Versão "leve" do 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 usa Spring MVC e Hibernate por default. Entretanto, você pode mudar os frameworks de web e persistência para:
    Web Frameworks: JSF (MyFaces), Spring MVC (com Ajax, Acegi Security, JSP, FreeMarker ou Velocity), Stripes, Struts 1.x, Struts 2.x, Tapestry, WebWork, Wicket.
    Persistence Frameworks: Hibernate, iBATIS, JDO (JPOX), OJB, Spring JDBC.
    Tanto Ant quanto Maven 2 são suportados para construção e teste.
  • J2EE Spider [Em Português]
    O J2EE Spider é uma ferramenta de código aberto para desenvolver rapidamente aplicações web baseadas em formulários, com geração de código capaz de aumentar a produtividade do desenvolvimento de projetos WEB em Java. Projeto de software livre idealizado pelo brasileiro Bruno Braga.
    Comparativo: 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.

Comparações de Frameworks Web

AJAX com Java

AJAX - Asynchronous Javascript And XML.