Just Java 2005: Struts ou JSF

Just Java 2005 - Escolhendo entre Struts ou JSF. Conheça o código fonte do Java 6 e colabore com a Sun.

Um movimento freqüente que vemos nas listas de discussão e que também se manifestou no Just Java 2005 foi o interesse pelo futuro das letras V e C do MVC: Struts ou JSF?

Craig McClanahan, idealizador da Struts e um dos especificadores do JSF, catapultado pela SUN para trabalhar com James Gosling em sua ferramenta (caixa-preta) com base em JSF, promete competição com o WYSIWYG RAD do .NET...mas será esta a melhor opção para suceder o - já maduro – framework Struts em nossas arquiteturas MVC J2EE? O paradigma WYSIWYG RAD é mesmo o melhor para produção de interfaces Web?

Identificamos no Just Java, a partir das visitas que recebemos em nosso stand, o desconhecimento da maioria acerca do mais novo ingrediente nesta briga, o OpenLaszlo! (http://www.openlaszlo.org)

Quando os visitantes indagavam a respeito: "o jCompany irá para JSF ou se manterá na Struts?" Respondíamos com outra pergunta: "Você já conhece o Laszlo?". E 100% das respostas ainda eram: "Não"! Após apresentarmos o Laszlo, conseguíamos uma preferência "unânime" pelo produto, e não é difícil compreender o porquê.

Por este motivo, através deste artigo pretendo apresentar o Laszlo como contribuição para quem não pôde ir ao Just Java e ao stand da Powerlogic, e que está às voltas sobre qual rumo a tomar; ou mesmo para aqueles que já se decidiram, mas ainda estão em tempo de recuar.

Laszlo: Rich Internet Application

O Laszlo é um produto focado na camada Visão, tal qual o JSF. Ambos têm 90% de "área comum". O JSF tem intenções de "cobrir" a camada controle, mas ainda é muito fraco neste setor, tanto que estamos para ver nascer o Struts Shale, do próprio Craig, para complementá-lo - em suma, ou usamos Laszlo ou usamos JSF!

O Laszlo tem origem comercial e já competia com diferenciais com o Flex da Macromedia e outras iniciativas menos robustas com base no plugin Flash. Mas em dezembro do ano passado a empresa recebeu um aporte de capital de investidores japoneses e abriu seus produtos para o mundo Open-Source!

Como outros produtos Open-Source de origem comercial, o Laszlo é bem acabado e possui documentação extensiva, além de um portal e suporte bem organizados. Mas qual seria a estratégia dos japoneses? Bom, segue o rumor de que o Laszlo será utilizado como padrão de interface interativa da TV Digital no Japão (e veremos que tem qualidade potencial para isso), e daí podemos desconfiar de alguma coisa.

Laszlo x JSF

O Laszlo, com suas interfaces "cinemáticas" (coisa de cinema!), tem poder de ruptura na camada Visão (quem não estava usando MVC poderá ser obrigado a refazer suas aplicações em alguns anos) e tem o poder de "encantar" usuários finais, entregando real diferenciação se comparado a modelos de interface Web anteriores, com base em HTML ou variantes.

Se valendo da onipresença do plugin Flash, o Laszlo possui características de animação built-in como "tab panels com fadings, multi-skin, controles de alto nível, acompanhamento de foco animados, drag-and-drop, etc.", inclusive superiores às APIs gráficas de interfaces desktop! Tudo isso sem abrirmos mão de aplicações Web integradas a portais (impossibilidade do mundo desktop), J2EE MVC, sendo acessadas por clientes, parceiros e fornecedores - o Laszlo tem um bundle com o Tomcat e um exemplo "hello word" integrando com o Struts.

Já o JSF, em contrapartida, hoje atenderá meramente ao objetivo de seguirmos a especificação J2EE (refactoring), mas não irá agregar resultado visível para usuários finais de nossas aplicações. Estes continuarão vendo o velho "HTML" em Browser ou algo similar ao que já conhecíamos no Struts - aliás, em estágio muito mais avançado e maduro, incluindo integração com JSTL, Tiles (OO na camada View) e com muitos cases em produção.

Conclusão

Em enquetes que fizemos com nossos clientes, sobre iremos para JSF ou fazermos, em um primeiro momento, um suporte Viewer para Laszlo, a decisão foi unânime pelo Laszlo. Portanto, estamos para ver se o JSF irá sobreviver ao Lazslo ou conviver com ele...mas o Laszlo já mostrou a que veio!

"Lei de Darwin" (Open-Source) x "Lei do JSR" (Comitês J2EE)

Para aqueles que, mesmo após conhecerem o Laszlo, ainda se interessarem pela discussão JSF, segue este apêndice:

Todos já conhecemos vários exemplos sobre o sucesso de padrões "de-facto", surgidos da "seleção natural" promovida pelas comunidades Open-Source, sobrepujando os padrões "de comitês" J2EE. O exemplo mais gritante é o fracasso do JDO (para quem nem conhece, é o padrão J2EE para persistência de objetos) em prol do perante o Hibernate (este todos conhecem).

A especificação do JDO pretendia uma persistência que funcionasse para SGBD-R, LDAP, Arquivos Convencionais ou toda a sorte de "meios de persistência" que possam surgir. O Hibernate se ateve aos SGBD-Rs, e procurou fazer isso bem feito. O primeiro hoje é conhecido como o "pato" -nada, anda e voa, mas não faz nada direito! Já o segundo, é o padrão que está sendo agora incorporado em grande parte da especificação EJB 3.0.

Preocupados em seguir a especificação pré-definida (JSR), os implementadores perdem a capacidade de se adaptar quando se deparam com inviabilidades manifestadas na concretização da "concepção teórica" inicial, ao contrário do Open-Source, conduzido de forma "agile". E assim entendemos porque os princípios ágeis funcionam com mais frequencia:

Struts e JSF

O JSF está hoje tentando fazer hoje, na camada de Visão (principalmente), o que o JDO tentou fazer na camada de Persistência, sem sucesso: um modelo independente de formato de saída (html, xml ou o que for). Muitos argumentam que a melhor opção seria usar uma IDE/plugin apropriada para cada formato (especializada).

Um outro objetivo questionável (para a comunidade, não para a SUN) seria o interesse específico desta empresa em ganhar dinheiro com ferramenta fechada, concorrendo com o .NET com as mesmas "armas": um modelo de eventos RAD para Web. Mas esta seria mesmo a melhor opção para desenvolvimento Web?

Quando fazemos coisas fáceis, pode ser, mas quando necessário nos recorrermos ao código (para as coisas difíceis - e isso vai acontecer), então fica quase impossível se caminhar na pesada camada de eventos.

Nota: OpenLaszlo é uma plataforma de código aberto descontinuada para o desenvolvimento e entrega de aplicativos para Internet. É lançado sob a Licença Pública Comum (CPL) da Open Source Initiative (OSI).

A plataforma OpenLaszlo consiste na linguagem de programação LZX e no servidor OpenLaszlo.

LZX é uma língua de marcação extensível (XML) e linguagem de descrição de JavaScript semelhante em espírito para XUL, MXML e Extensible Application Markup Language (XAML). O LZX permite um processo de desenvolvimento declarativo e baseado em texto que suporte práticas de prototipagem rápida e desenvolvimento de software. Ele é projetado para ser familiar aos desenvolvedores de aplicativos da Web tradicionais que estão familiarizados com HTML e JavaScript.

OpenLaszlo Server é um servlet Java que compila aplicativos LZX em binários executáveis para ambientes de tempo de execução específicos.

Relacionados
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados