<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Zona J &#187; wicket</title>
	<atom:link href="http://zonaj.org/category/wicket/feed/" rel="self" type="application/rss+xml" />
	<link>http://zonaj.org</link>
	<description>Zona Java - Um blog português sobre java.</description>
	<lastBuildDate>Sun, 29 Jun 2014 18:29:19 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.41</generator>
	<item>
		<title>Mr. JSF or: How I Learned to Start Worrying and Hate the Framework</title>
		<link>http://zonaj.org/2007/05/04/mr-jsf-or-how-i-learned-to-start-worrying-and-hate-the-framework/</link>
		<comments>http://zonaj.org/2007/05/04/mr-jsf-or-how-i-learned-to-start-worrying-and-hate-the-framework/#comments</comments>
		<pubDate>Fri, 04 May 2007 15:01:47 +0000</pubDate>
		<dc:creator><![CDATA[Ruben Badaró]]></dc:creator>
				<category><![CDATA[wicket]]></category>

		<guid isPermaLink="false">http://www.zonaj.org/?p=30</guid>
		<description><![CDATA[Desde há cerca de 2 anos para cá, tenho trabalhado intensamente com Java Server Faces no desenvolvimento web em Java. Inicialmente as coisas não correram muito bem, pensou-se por a tecnologi cheap cialis without prescription a ser ainda muito nova e ainda verde. Depois, continuaram a não correr bem. No futuro, espero que não corram. &#8230; <a href="http://zonaj.org/2007/05/04/mr-jsf-or-how-i-learned-to-start-worrying-and-hate-the-framework/" class="more-link">Continue reading <span class="screen-reader-text">Mr. JSF or: How I Learned to Start Worrying and Hate the Framework</span></a>]]></description>
				<content:encoded><![CDATA[<p>Desde há cerca de 2 anos para cá, tenho trabalhado intensamente com <a href="http://en.wikipedia.org/wiki/JavaServer_Faces">Java Server Faces</a> no desenvolvimento web em Java. Inicialmente as coisas não correram muito bem, pensou-se por a tecnologi
<div style="display: none"><a href='http://ordercialisonline247.com/' title='cheap cialis without prescription'>cheap cialis without prescription</a></div>
<p>a ser ainda muito nova e ainda verde. Depois, continuaram a não correr bem. No futuro, espero que não corram.<br />
Cheguei à conclusão que JSF não é a melhor solução para desenvolvimento web em Java e consegui reunir umas quantas razões minhas:</p>
<ul>
<li><strong>JSF é uma especificação</strong></li>
</ul>
<p>JSF é uma especificação e existem diversas implementações, sendo que a Sun fornece uma <em><a href="https://javaserverfaces.dev.java.net/servlets/ProjectDocumentList?folderID=5420&#038;expandFolder=5420&#038;folderID=5420">Reference Implementation</a></em>. Por um lado, a especificação deixa pequenos detalhes de implementação à escolha dos implementadores e por outro, existem algumas falhas de desenho na especificação, assumidos inclusivamente por quem está a trabalhar na versão 2 do <em>draft</em> de especificação.</p>
<ul>
<li><strong>Fases</strong></li>
</ul>
<p>O processamento JSF é dividido em 6 fases e é definida a ordem e o que ocorre em cada uma delas. O programador, em muitas situações, tem de ter a noção de fase presente quando está a programar, a desenvolver as suas acções, etc. Requer um conhecimento que apenas é adquirido com experiência e muitas falhas Aliás, tanto a noção de fases como as questões de request e sessão também deveriam ser o mais transparentes possíveis para quem desenvolve, deixando o programador dedicar-se a desenhar o interface e adicionar comportamento aos elementos do interface, como se fosse uma simples aplicação.</p>
<ul>
<li><strong>Bugs</strong></li>
</ul>
<p>Historicamente, foram detectados alguns bugs graves nas implementações de JSF. Um dos exemplos é o do JSF gerar identificadores que já existiam declarados pelo utilizador na página, se foi resolvido passado meses.</p>
<ul>
<li><strong>Identificadores Únicos</strong></li>
</ul>
<p>Temos de ter cuidado com identificadores duplicados e acaba-se por ter de se definir o <em>id</em> de cada componente da página. Obtemos um erro quando tentamos consultar a página e a origem do mesmo é não raras vezes difícil de depurar.</p>
<ul>
<li><strong>Renderkit</strong></li>
</ul>
<p>Renderkits são um esquema falhado, no que toca a desenvolver para web. Em casos reais é quase impossível fazer output para múltiplos outputs sem alterar o conteúdo do jsf. Além disso, a geração de html está escondida dentro do renderkit e é difícil de controlar. </p>
<ul>
<li><strong>Web Semântica e Acessibilidade</strong></li>
</ul>
<p>É muito difícil controlar o código que é gerado pelo JSF .<br />
No mundo actual, quer-se <em>markup</em> semanticamente correcto, separação entre informação semântica (XHTML) e apresentação gráfica (CSS) e acessibilidade para utilizadores com necessidades especiais. Deve ser possível ter um controlo fino sobre o markup gerado. As interacções com os designers (mesmo com o meu post anterior não nos safamos) tornam-se mais complexas pois o programador não consegue replicar o código criado pelo designer.</p>
<ul>
<li><strong>Manutenção de estado</strong></li>
</ul>
<p>Para manter o estado entre requests, o JSF fornece apenas a noção de sessão. Componentes como o <a href="http://myfaces.apache.org/tomahawk/uiSaveState.html">SaveState</a> do <a href="http://myfaces.apache.org/tomahawk/index.html">Tomahawk</a> ou novas frameworks facilitadoras como o <a href="http://www.jboss.com/products/seam">JBoss Seam</a> permitem ter a noção de Conversation numa aplicação JSF. Se não forem utilizados estes componentes, o programador é obrigado
<div style="display:none"><a href='http://viagranoprescription-1st.com/'>buy viagra no prescription</a></div>
<p> a usar a sessão, caindo no erro comum de definir Managed Beans como de sessão quando tal não é adequado. Ou então colocando a informação do bean em sessão e recuperando-a quando necessário, no caso de beans de sessão. Ao usarmos estes esquemas de sessão não conseguimos, por exemplo, navegar em duas páginas da mesma aplicação ao mesmo tempo.</p>
<ul>
<li><strong>ValueChangeListeners</strong></li>
</ul>
<p>Os eventos são processados mesmo quando não é esperado. Por exemplo, se tivermos uma dropdown com um ValueChangeListener e um valueBinding para uma nossa String, se submetermos a página sem alterar a dropdown, o evento será lançado porque o valor anterior da variável era null e o que é submetido é o valor default. Além disso, quando temos dropdowns com immediate=”true” e fazemos alterações no ValueChangeListeners, temos de saltar para fase de RenderResponse para que não tenhamos os dados reescritos. Duas palavras: mau desenho.</p>
<p>Estas são razões que chegue para não usar JSF. O que acontece em muitos casos, é usarem-se frameworks que tornem a tecnologia suportável, como sejam os componentes <a href="http://myfaces.apache.org/tomahawk/index.html">Tomahawk</a> ou as frameworks <a href="https://facelets.dev.java.net/">Facelets</a> e <a href="http://www.jboss.com/products/seam">JBoss Seam</a>.<br />
Quando finalmente se chega à conclusão que existem outras frameworks que são melhores que JSF, encontramos coisas como o Tapestry ou o Wicket. Estas duas frameworks permitem-nos definir o interface com markup xhtml, conseguindo assim a desejada interacção com os designers e podendo, inclusivamente, fazer as nossas páginas directamente do protótipo.</p>
]]></content:encoded>
			<wfw:commentRss>http://zonaj.org/2007/05/04/mr-jsf-or-how-i-learned-to-start-worrying-and-hate-the-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
