[Atualizado em 16 de agosto e 20 de dezembro de 2007, 27 de abril de 2008.]
Em meu artigo Novo impulso ao JavaScript, estive comentando como a onda de alta interatividade da Web 2.0 e o mecanismo AJAX estão impulsionando a evolução de componentes dinâmicos na web.
AJAX, acrônimo para Asynchronous Javascript And XML (JavaScript Assíncrono e XML), é a técnica de uso combinado de tecnologias existentes — JavaScript, XML e o objeto XMLHttpRequest — que visa propiciar mais dinamismo a páginas web, de forma a melhorar a experiência da interação do usuário. Assim, não chega a ser uma nova tecnologia em si, mas uma ampliação das técnicas de HTML Dinâmico (DHTML) no cliente web, agora interagindo também com o lado servidor.
O princípio de AJAX é, a partir de uma página web no navegador, submeter assincronamente pequenas requisições adicionais ao servidor web, e utilizar seu resultado em manipulações dinâmicas na página atual, sem a necessidade do usuário navegar para uma página inteiramente nova.
A organização OpenAjax Alliance, que reúne mais de 80 dos principais fornecedores e projetos de software livre relacionados a tecnologias para web, é dedicada a promover a adoção de AJAX de forma aberta e interoperável.
No campo estrito do HTML dinâmico com JavaScript, aplicável a páginas web independente da tecnologia no servidor, há excelentes frameworks — livres e gratuitos — de componentes web com suporte a AJAX:
- TIBCO General Interface, mais de 100 componentes Ajax e ferramentas visuais para codificação e montagem rápida, em um arquitetura server-less de fácil integração a sistemas já existentes (veja General Interface Developer Center e TIBCO General Interface whitepaper);
- Dojo Toolkit (veja demos, manual, FAQ);
- Qooxdoo (veja showcase);
- Yahoo! User Interface (YUI) Library (veja exemplos e YUI Blog);
- Prototype JavaScript framework (veja livro Prototype and script.aculo.us, por Christophe Porteneuve);
- Rico – JavaScript for Rich Internet Applications (veja demos);
- Ext JS (veja Ext 2.0 Samples e Comunidade brasileira EXTJS).
Destaque também para as bibliotecas de apoio jQuery (dica do leitor Renato Silva; veja também docs, blog, refcard, tutorial, jQuery Brasil, exemplos) e Scriptaculous (veja Wiki com documentação e demos). Veja também Other Frameworks (mootools, Prototype, jQuery, YUI Library, MochiKit, Tibco General Interface, Scriptaculous, Dojo Toolkit, Base2, ExtJS), por Qooxdoo.
Falar de AJAX em aplicações web dinâmicas implica rapidamente em avaliar quais ferramentas no lado servidor se adequam melhor e mais facilmente ao tratamento de páginas e componentes dinâmicos. Este já foi tema de artigo meu em novembro de 2006, AJAX cresce rápido em Java.
Partindo dos componentes do Dojo Toolkit e outros, já existem plataformas e frameworks abertos e flexíveis para o suporte a AJAX em Java. As seguintes referências de destaque são software livre:
- DWR – Direct Web Remoting, Easy Ajax for Java: projeto patrocinado pela TIBCO. Largamente utilizado, podendo-se citar como cases de destaque o Walmart, o software de incidentes JIRA, o portal de tecnologia InfoQ e muitos outros. Veja Desenvolvendo aplicações Web 2.0 com Java e AJAX (FrameWork DWR), por Augusto Marinho, maio 2007, portal Viva o Linux; e Using DWR with TIBCO General Interface, por Joe Walker, dezembro 2007.
- jMaki: projeto membro da comunidade GlassFish (servidor de aplicações, software livre que é implementação de referência suportada pela Sun para a plataforma Java EE). O segundo artigo da série em SDN sobre “AJAX em Java EE” cobre o jMaki em profundidade: New Technologies for Ajax and Web Application Development: Project jMaki, por Jennifer Ball, novembro 2006 (visão geral no primeiro artigo). Veja também jMaki.com: Resources, Sister sites, Blogs; Introduction to jMaki, por Carla Mott, Sun Java EE Tech Tips, janeiro 2007; jMaki Extensions, junho 2007, por Greg Murray, arquiteto AJAX da Sun e criador do Projeto jMaki; jMaki wrappers for ExtJs, por Carla Mott, dezembro 2007; jMaki and GWT : Kissing Cousins, por Greg Murray — arquiteto Ajax da Sun e criador do Projeto jMaki, 2007-12-21.
- ThinkCAP JX, por ClearNova: plataforma de desenvolvimento Ajax e Java com ambiente RAD/visual para construção de aplicações Internet ricas, baseado em Ajax, Java EE e bibliotecas de software livre (Struts, Hibernate, JFreeChart, prototype.js e outras). Veja também ClearNova’s ThinkCAP JX, a Comprehensive AJAX Platform Released as Open Source, por Hatem, 2006-01-26, AJAX Magazine; e ClearNova open sources ThinkCAP JX, its AJAX platform, por Joseph Ottinger, 2006-01-10, TheServerSide.COM.
- ThinWire – Ajax RIA Framework: framework Java para desenvolvimento de aplicações web Ajax que se comportam como GUI desktop, usando um modelo GUI orientado a eventos. Projeto em SourceForge.
Diversos frameworks web MVC oferecem suporte a componentes Ajax. Em Java, uma das primeiras iniciativas de porte neste sentido foi o do Google Web Toolkit (GWT), poderoso, prático e livre, que já nasceu com foco em Ajax. Frameworks como Wicket — veja Interview: How Wicket Does Ajax, Javalobby, 2008-04-25 –, Struts 2 (WebWork) e NextApp Echo2, entre outros, incorporaram suporte a Ajax ao longo de suas evoluções. Para Tapestry, existe a biblioteca Tacos de componentes Ajax.
Contudo, creio que o uso dos componentes dinâmicos AJAX está atingindo o seu auge quando aplicado ao padrão JavaServer Faces (JSF), que tem como fundamento exatamente a programação web em Java orientada a componentes e eventos. Estão surgindo componentes JSF cada vez mais ricos e com melhor suporte a AJAX. Cito as principais bibliotecas/frameworks JSF livres que conheço, com suporte a AJAX:
- ICEfaces (veja components showcase): tornado software livre este ano pela empresa criadora ICEsoft, o framework ICEfaces é muito rico. A página de download oferece também pacotes de integração para os principais IDEs como Eclipse, Netbeans, JDeveloper e outros.
- MyFaces Trinidad, originado do Oracle ADF Faces: tornados open source, em doação ao Projeto Apache MyFaces, os vastos componentes ricos ADF Faces da Oracle para JSF, baseados no framework ADF, originaram o projeto Apache Trinidad. Veja Developing Smart Web UIs with Ajax, JSF, and ADF Faces, por Andrei Cioroianu, fevereiro 2006; Ajax Transactions Using ADF and JavaServer Faces, por Duncan Mills, junho 2006; How-to configure Apache Trinidad components in Oracle JDeveloper, por Frank Nimphius, Oracle Corporation, abril 2007.
- JBoss Ajax4jsf e JBoss RichFaces: recentemente tornados open source em pareceria estratégica entre sua criadora Exadel e a JBoss/Red Hat. Veja RichFaces live demo.
- Dynamic Faces: parte do projeto JSF Extensions, componente da comunidade GlassFish. Tem com principal desenvolvedor o engenheiro sênior da Sun Ed Burns, a partir da idéia inicial de JSF Avatar de Jacob Hookom. Provê extensões à implementação de referência JSF 1.2 para suportar AJAX. Veja Introducing Project Dynamic Faces, por Ed Burns, agosto 2006; o terceiro artigo da série citada na SDN New Technologies for Ajax and Web Application Development: Project Dynamic Faces, por Jennifer Ball e Ed Burns, dezembro 2006; Setting Up Your Application to Use Project Dynamic Faces, no Sun Web Developer Pack Tutorial; e Adding Ajax to JavaServer Faces Technology With Dynamic Faces, por Ed Burns, março 2007, SDN.
- Projeto Woodstock: componentes JSF com suporte a AJAX, integram o NetBeans Visual Web Pack. Veja Project Woodstock: Next Generation of Smarter UI Components, 2007-06-27; All About Component Libraries do NetBeans, por Edwin Goei; e Delving Into Components, maio 2007.
Uma tabela comparativa de várias bibliotecas pode ser encontrada em AJAX JSF Comparison Matrix.
Veja também as indicações em Uma centena de sugestões para programação Ajax e Javascript, por Cid Andrade, 2008-04-16.
Para saber mais (em inglês):
- AJAX (programação) em Português; e Ajax (programming) em Inglês, por Wikipédia.
- Ajax: A New Approach to Web Applications, por Jesse James Garrett, 2005-02-18, Adaptive Path.
- 30 Of The Best AJAX Tutorials, 2007-12-20, em Designs Advice.
- The ABCs of RIA — An InfoWorld survey of the applications and technologies we call ‘rich’ –, por Martin Heller, 06/08/07, InfoWorld.
- Rich Internet applications – RIA TechIndex, índice de artigos técnicos da InforWorld para os temas de RIA, Ajax e Web 2.0.
- Ajax in Practice, Ajax Developer Resource Center, Sun Developer Network (SDN).
- Ajax Patterns, portal sobre Ajax, padrões recomendados e o livro originado destes. Veja também as listagens Javascript Multipurpose Frameworks, Ajax Frameworks e Java Ajax Frameworks.
- Asynchronous JavaScript Technology and XML (Ajax) With the Java Platform, por Greg Murray, junho 2005, atualizado em outubro 2006, SDN.
- AJAX FAQ for the Java Developer, por Greg Murray, Java Enterprise Blueprints.
- AJAX Magazine, membro da PHP Magazine Network.
- AJAXWorld Magazine, publicação da SYS-CON Media.
- Ajax Matters, tutoriais e artigos sobre AJAX em profundidade. Nascido em 2004 como um blog sobre AJAX, desde julho 2007 teve o foco redirecionado para criação de uma base de conhecimento mais detalhada para desenvolvedores AJAX.
- Ajax Blog, técnicas de codificação HTML, Javascript e XML para Web 2.0.
- Ajax em MDC, Mozilla Developer Center.
- Ajaxian: blog de notícias, podcasts, showcases, recursos. Planet Ajaxian: blog de conteúdo.
- AJAX is the future of Web app development — But security, reliability and performance are Achilles’ heels. –, por Thomas Powell, 2006-07-17, Network World.
- Top AJAX tools deliver rich GUI goodness — Backbase, Bindows, JackBe, and Tibco General Interface bring fat features to enterprise Web clients –, por Peter Wayner, 2006-11-27, InfoWorld.
- Surveying open-source AJAX toolkits — Packages from Dojo, Zimbra, Yahoo, Microsoft, Google, and OpenRico/Prototype showcase the variety of libraries available to AJAX developers –, por Peter Wayner, 2006-07-31, InfoWorld.
- AJAX breathes new life into Web apps — Forget what you knew about JavaScript, DHTML, and the browser; it’s a whole new ball game –, por Peter Wayner, 2005-05-23, InfoWorld.
- The AjaxComponent strategy for JSF: The best of both worlds — Ajax-enable your components with a phase listener, por Matthew Tyson, 2007-12-20, JavaWorld.com.
- Ajax in Apache MyFaces (PDF) — A new Approach to Web Applications, apresentação em ApacheCon Asia 2006. Veja também o projeto MyFaces Tomahawk, de extensões à especificação JSF.
- Building Custom JSF UI Components, por Chris Schalk, gerente de produto e evangelista do Oracle JDeveloper, agosto 2005, TheServerSide.COM.
- Introduction to Javaserver Faces – What is JSF?, por Chris Schalk, abril 2005, OTN.
- Ajax for Java developers: Build dynamic Java applications, por Philip McCarthy, setembro 2005, IBM developerWorks; e Java object serialization for Ajax, outubro 2005.
- Open Source AJAX Frameworks with Server-Side Java Support, listagem atualizada em 2007-02-25, Manageability.
- Ajax Forms with jQuery, por Trevor Davis, 2007-09-08.
Descobri o anúncio NetBeans do dia 27 de junho, Project Woodstock: The Next Generation of Smarter User Interface Components
http://www.netbeans.org/servlets/NewsItemView?newsItemID=1064
Lá estava uma informação que me faltava. Os componentes JSF do NetBeans Visual Web Pack têm identidade própria. Constituem o Projeto Woodstock. Os componentes foram inicialmente desenvolvidos pelo time da Sun para o Studio Creator 2 IDE. Com a doação de código do Studio Creator para o projeto NetBeans Visual Web Pack, estes componentes foram tornados código aberto como o Projeto Woodstock hospeado no java.net, desde fevereiro de 2007.
Este artigo foi atualizado para citar os componentes do Projeto Woodstock e, não apenas o NetBeans Visual Web Pack que os inclui.
https://woodstock.dev.java.net/
Tibco General Interface ganhou o prêmio de Melhor open source em desenvolvimento de software (InfoWorld BOSSIE Awards) na categoria AJAX toolkit:
http://www.infoworld.com/slideshow/2007/09/116-best_of_open_so-4.html
No InfoWorld 2007 Technology of the Year Awards, App Dev, Dojo Toolkit levou Melhor Kit AJAX Open Source:
http://www.infoworld.com/slideshow/2007/01/25-2007_technology-7.html
http://www.infoworld.com/article/06/07/31/31FEajax_1.html
Na mesma premiação, o Melhor Kit AJAX incluindo ferramentas comerciais foi Backbase 3.2:
http://www.infoworld.com/slideshow/2007/01/25-2007_technology-6.html
http://www.infoworld.com/article/06/11/27/48FEajax_1.html
No Tech of the Year Awards em janeiro 2007, Adobe Flex foi escolhida a melhor plataforma RIA:
http://www.infoworld.com/slideshow/2007/01/25-2007_technology-8.html
http://www.infoworld.com/article/06/08/10/33TCflex_1.html
Mas em setembro o BOSSIE Awards premiou OpenLaszlo, superando Flex, na categoria Rich Internet Application framework:
http://www.infoworld.com/slideshow/2007/09/116-best_of_open_so-3.html
Autocomplete para rails com jquery muito fácil!
Por Rodrigo Urubatan, 2008-05-02.
– Artigo com impressões sobre o uso de jQuery — através do plugin jRails — em Ruby on Rails.
Cara, parabéns pelo post! Acho que de longe é o melhor que eu vi dando uma visão geral de ajax! Parabéns!
*e se quiser conhecer, estou desenvolvendo um projeto open source que visa fazer, para PHP, o mesmo que é feito com o DWR! Se quiser conhecer, ele se chama JS Calls PHP: http://www.chrisb.com.br/blog/js-calls-php-biblioteca-que-possibilita-interacao-entre-javascript-e-php/
Abraços!
Márcio, legal no seu post!
Gostaria de saber q há implementação javascript em Ajax sem componente suportado do JSF e dar um submit pelo através o Managed Bean do JSF (Ajax + JavaScript + JSF)? semelhante o Ajax do Servlet: xmlHTTP.open(“GET”,url,true);
onde “url” é action do Servlet.
Desde já agradeço.
I’m french and it seems to be a great post. Unfortunately, I doesn’t fully understand Portuguese (partial understanding because it’s a latin language like french). And on-line translation services are of no help for IT articles. Do you have a translation of this article in english? Or some references to similar english articles? It deals exactly with what I seek, so…