<?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; ajax</title>
	<atom:link href="http://www.zonaj.org/category/ajax/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.zonaj.org</link>
	<description>Zona Java - Um blog português sobre java.</description>
	<lastBuildDate>Wed, 26 May 2010 17:23:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Cola: Real-Time Shared Editing</title>
		<link>http://www.zonaj.org/2008/08/28/cola-real-time-shared-editing/</link>
		<comments>http://www.zonaj.org/2008/08/28/cola-real-time-shared-editing/#comments</comments>
		<pubDate>Thu, 28 Aug 2008 05:30:26 +0000</pubDate>
		<dc:creator>Ruben Badaró</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[fun]]></category>

		<guid isPermaLink="false">http://www.zonaj.org/?p=128</guid>
		<description><![CDATA[Eu ainda não conhecia a Eclipse Communication Framework e muito menos o plugin Cola (com origem de colaboração).
Em suma, passa-se a poder editar código colaborativamente no Eclipse. E quando digo colaborativamente significa dois ou mais utilizadores remotos a editarem o mesmo ficheiro simultâneamente e a verem o resultado em tempo-real.
As possibilidades que oferece para realidades [...]]]></description>
			<content:encoded><![CDATA[<p>Eu ainda não conhecia a <a href="http://www.eclipse.org/ecf/">Eclipse Communication Framework</a> e muito menos o plugin <a href="http://live.eclipse.org/node/543">Cola</a> (com origem de colaboração).<br />
Em suma, passa-se a poder editar código colaborativamente no Eclipse. E quando digo colaborativamente significa dois ou mais utilizadores remotos a editarem o mesmo ficheiro simultâneamente e a verem o resultado em tempo-real.<br />
As possibilidades que oferece para realidades actuais como pair-programming são excelentes, ainda mais com cada vez mais equipas globais e distribuídas.</p>
<p>Esta área apresenta alguns obstáculos, principalmente a nível dos algoritmos necessários para sincronizar as vistas, mas também a nível do UI pois as pessoas necessitam de habituar a informação visual adicional: múltiplos cursores, código a mudar simultâneamente e, quando editam a mesma linha, o código que estamos a editar a mover-se enquanto escrevemos (podem ver isso no screencast).</p>
<p>O melhor é mesmo ver os vídeos. O primeiro é um screencast a demonstrar o uso e consigo imaginar-me a fazer aquilo: ligar com o colega pelo skype para voz, convidar os intervenientes a partir do código no eclipse (utiliza um servidor de XMPP) e começar a editar. Aconselho a abrirem o video em HD no site e colocarem em fullscreen para verem bem o código.</p>
<p>O segundo é vídeo é uma Google Tech Talk apresentada pelo <a href="http://codesurgeonblog.com/">Mustafa Isik</a>, criador do Cola, membro do ECF e ele próprio um googler.</p>
<p>O screencast: </p>
<p><center><object width="400" height="225"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=1195398&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=1195398&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="225"></embed></object><br />
</center></p>
<p>A talk no Google:</p>
<p><center><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/GfeUCT-tRJQ&#038;hl=en&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/GfeUCT-tRJQ&#038;hl=en&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></center></p>
]]></content:encoded>
			<wfw:commentRss>http://www.zonaj.org/2008/08/28/cola-real-time-shared-editing/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Validar e Comprimir Javascript com JSLint, YUICompressor e Maven</title>
		<link>http://www.zonaj.org/2008/03/18/validar-e-comprimir-javascript-com-jslint-yuicompressor-e-maven/</link>
		<comments>http://www.zonaj.org/2008/03/18/validar-e-comprimir-javascript-com-jslint-yuicompressor-e-maven/#comments</comments>
		<pubDate>Tue, 18 Mar 2008 11:01:30 +0000</pubDate>
		<dc:creator>Ruben Badaró</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.zonaj.org/?p=89</guid>
		<description><![CDATA[Quem já utilizou bibliotecas de javascript certamente verificou que é sempre disponibilizada uma versão comprimida e um versão normal. Isto acontece porque queremos poupar largura de banda, dado que as páginas têm cada vez mais javascript. Além disso, o javascript é carregado antes do render da página, como tal o download é &#8220;bloqueante&#8221; para o [...]]]></description>
			<content:encoded><![CDATA[<p>Quem já utilizou bibliotecas de javascript certamente verificou que é sempre disponibilizada uma versão comprimida e um versão normal. Isto acontece porque queremos poupar largura de banda, dado que as páginas têm cada vez mais javascript. Além disso, o javascript é carregado antes do render da página, como tal o download é &#8220;bloqueante&#8221; para o processamento da página.</p>
<p>No entanto, para o código javascript que nós próprios desenvolvemos ou que as frameworks que usamos usam ou geram raramente minimizamos os ficheiros javascript. Isto apenas seria feito para cenários de produção, mas rapidamente se tornaria demasiado trabalhoso.<br />
Se queremos minimizar apenas para determinados cenários e de forma totalmente automática, tem lógica incluir este processo nos nossos processos de build. </p>
<p>E é aqui que entra o <a href="http://alchim.sourceforge.net/yuicompressor-maven-plugin/overview.html">plugin</a> do <a href="http://developer.yahoo.com/yui/compressor/">YUICompressor</a> para o <a href="http://maven.apache.org/">Maven</a>.<br />
Este plugin permite processar os ficheiros javascript, minimizando-os. Também corre o <a href="http://www.jslint.com/">JSLint</a>, para verificar a correcção do código. Este último é uma forma de análise estática de código que ajudo muito a reduzir a probabilidade de erros não detectados.</p>
<p>Falo do YUICompressor como podia falar de outras ferramentas de compressão e obfuscação de javascript, como seja o <a href="http://javascript.crockford.com/jsmin.html">JSMin</a>, <a href="http://dojotoolkit.org/docs/shrinksafe">ShrinkSafe</a>, <a href="http://dean.edwards.name/packer/">Packer</a> ou outro. Não sei é sobre a existência de plugins para todos, embora não deve ser muito complexo de os desenvolver.</p>
<p>Desta forma conseguimos comprimir o nosso código para melhorar a performance e verificar estaticamente por erros no javascript (um erro javascript pode quebrar o build: bom!). Podemos ainda usar o <a href="http://www.dev.abiss.gr/mvn-jstools/index.html">plugin para gerar documentação javascript (JsTools)</a> ou mesmo para <a href="http://jsunit.berlios.de/maven2.html">efectuar testes unitários em javascript (JsUnit)</a>.</p>
<p>Poderíamos ainda melhor mais a performance, <em>gzipando</em> os nossos ficheiros a nível do servidor. Para esta e outras optimizações, é muito útil o <a href="http://developer.yahoo.com/yslow/">YSlow</a>, também da Yahoo que é um plugin para o <a href="http://www.getfirebug.com/">Firebug</a> que verifica determinados parâmetros de performance na página.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zonaj.org/2008/03/18/validar-e-comprimir-javascript-com-jslint-yuicompressor-e-maven/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Meta-Frameworks Java</title>
		<link>http://www.zonaj.org/2008/03/13/meta-frameworks-java/</link>
		<comments>http://www.zonaj.org/2008/03/13/meta-frameworks-java/#comments</comments>
		<pubDate>Thu, 13 Mar 2008 12:11:33 +0000</pubDate>
		<dc:creator>Ruben Badaró</dc:creator>
				<category><![CDATA[Ferramentas]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[dwr]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://www.zonaj.org/?p=88</guid>
		<description><![CDATA[Afinal o que é, genericamente, uma Meta-Framework, ou melhor, um Meta-&#8221;Qualquer coisa&#8221;?
A palavra &#8220;meta&#8221;, para o efeito desta fantástica anologia, pode ser definida pela seguinte rigorosa proposição/teorema/axioma/lema/etc:
Meta-"Qualquer coisa" é ("Qualquer coisa")2
Ou seja, 
Meta-"Qualquer coisa" é "Qualquer coisa sobre "Qualquer coisa""
Assim, podemos ter coisas como Meta-dados (Dados sobre dados), Meta-Teoremas, Meta-Matemática e Meta-Frameworks.
Temos, portanto, uma Framework [...]]]></description>
			<content:encoded><![CDATA[<p>Afinal o que é, genericamente, uma Meta-Framework, ou melhor, um Meta-&#8221;Qualquer coisa&#8221;?<br />
A palavra &#8220;meta&#8221;, para o efeito desta fantástica anologia, pode ser definida pela seguinte rigorosa proposição/teorema/axioma/lema/etc:</p>
<pre>Meta-"Qualquer coisa" é ("Qualquer coisa")<sup>2</sup></pre>
<p>Ou seja, </p>
<pre>Meta-"Qualquer coisa" é "Qualquer coisa sobre "Qualquer coisa""</pre>
<p>Assim, podemos ter coisas como Meta-dados (Dados sobre dados), Meta-Teoremas, Meta-Matemática e Meta-Frameworks.</p>
<p>Temos, portanto, uma Framework sobre Framework(s). Mais precisamente, o sentido dado é de uma framework agregadora de outras frameworks, ao invés de um framework que descreve outras frameworks, algo que o prefixo meta poderia sugerir. </p>
<p>Epistemologia à parte, de que raio é que estou aqui a falar?</p>
<p>Estou a falar de agregadores de frameworks, neste caso em java, que conjugam um conjunto de frameworks base, ligando as diversas peças, e facilitando o uso por parte do utilizador. Desta forma os diversos componentes estão agregados de uma forma minimamente provada ou testada e o tempo de configuração do projecto é incrivelmente reduzido. Podem inclusivé servir como objecto de estudo para observar boas práticas.<br />
Embora seja contra tudo o que seja ideia de criar frameworks base internas a empresas e usar sempre produtos open-source, meta-frameworks são uteis  e não são mais que uma definição formal da pilha tecnológica do projecto ou, se a empresa trabalhar dessa forma, da pilha tecnológica da empresa.</p>
<p>Arrancar com um projecto deverá ser tão simples como gerar uma estrutura base do projecto, já com todos os componentes wired up e pronta a compilar. Também deve ser possível importar o projecto do IDE de eleição da pessoa. Repito, da pessoa. Ao contrário do que acontece em muitas empresas, na minha opinião o IDE deve ser uma , sendo que a maioria das frameworks disponibilizam pelo menos para Eclipse e Netbeans.</p>
<p>No paradigma web, poderiamos pois ter uma framework que junta uma tecnologia de mapeamento OR, uma de caching, uma de Dependency Injection/Inversion of Control, uma de apresentação, uma de templating e mais quantas sejam necessárias; mas podemos aplicar isto a qualquer paradigma que queiramos.</p>
<p>Destaco as seguintes frameworks (que são as que conheço):</p>
<ul>
<li>Keel</li>
<p>O <a href="http://www.keelframework.org/index.shtml">projecto Keel</a> está morto (não há actividade aparente desde 2004). Apenas é interessante por ter sido a primeira framework deste género com que tive contacto.</p>
<li>Appfuse</li>
<p>O <a href="http://appfuse.org/display/APF/Home">Appfuse</a> é provavelmente o projecto deste género com maior sucesso e maior disseminação. Liderado pelo <a href="http://raibledesigns.com/">Matt Raible</a>, reconhecido especialista em tecnologias web, o Appfuse é na realidade uma colectânea de meta-frameworks.<br />
Basea-se no <a href="http://maven.apache.org/">Maven</a>, usando <a href="http://maven.apache.org/guides/introduction/introduction-to-archetypes.html">archetypes</a>, para rapidamente criar esqueletos de projectos. Depois é possível gerar o projecto para o IntelliJ IDEA, Eclipse ou Netbeans e usar qualquer uma das bibliotecas disponíveis no <a href="http://appfuse.org/display/APF/Reference+Guide">Reference Guide</a> &#8211; é possível rapidamente montar um sistema com muito pouco trabalho.<br />
O Appfuse, como usa POJOs e Spring, possibilita criar CRUDs rapidamente com uma simples acção Maven.</p>
<li>IWebMvc</li>
<p>O <a href="http://code.google.com/p/internna/">IWebMvc</a> é a mais recente meta-framework de que tomei conhecimento. É criada por um senhor chamado Jose Noheda, que é o responsável pela integração com Spring no projecto DWR. É com naturalidade então que ele criou uma meta-framework que agrega <a href="http://getahead.org/">DWR</a> + <a href="http://dojotoolkit.org/">Dojo</a> + <a href="http://www.springframework.org/">Spring</a> + <a href="www.hibernate.org/">Hibernate</a>/JPA.<br />
Ainda está na sua <a href="http://internna.blogspot.com/2008/03/iwebmvc-first-preview-version-available.html">primeira versão</a>, mas dada a qualidade do DWR isto promete. Certamente uma meta-framework a analisar.</p>
<li>Parancoe</li>
<p><a href="http://www.parancoe.org/">Parancoe</a> é uma meta-framework criada pelo <a href="http://benfante.blogspot.com/">Lucio Benfante</a>, líder do <a href="www.jugpadova.it/">JUG Padova</a>.<br />
A pilha tecnológica de Parancoe é <a href="http://getahead.org/">DWR</a> + <a href="http://www.springframework.org/projects">Spring MVC</a> + <a href="http://www.springframework.org/">Spring</a> + <a href="www.hibernate.org/">Hibernate</a>/JPA que é uma solução que considero ser muito prática e uma excelente conjugação de tecnologias.<br />
A característica técnica mais destacada são os DAOs genéricos que não requerem implementação. Para quem gosta de DAOs, pode ser bastante útil.<br />
Para verem um site feito em Parancoe, podem consultar o <a href="http://www.jugevents.org/">JUGEvents</a> que usámos para os registos no PTJUG.
</ul>
<p>Penso que qualquer uma destas últimas vale a pena uma voltinha <img src='http://www.zonaj.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.zonaj.org/2008/03/13/meta-frameworks-java/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Slides do 1º Encontro PTJUG</title>
		<link>http://www.zonaj.org/2008/03/11/slides-do-1%c2%ba-encontro-ptjug/</link>
		<comments>http://www.zonaj.org/2008/03/11/slides-do-1%c2%ba-encontro-ptjug/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 00:42:46 +0000</pubDate>
		<dc:creator>Ruben Badaró</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[educação]]></category>
		<category><![CDATA[evento]]></category>
		<category><![CDATA[gwt]]></category>
		<category><![CDATA[indústria]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jug]]></category>
		<category><![CDATA[terracotta]]></category>
		<category><![CDATA[web2.0]]></category>

		<guid isPermaLink="false">http://www.zonaj.org/?p=87</guid>
		<description><![CDATA[Os slides das apresentações do 1º Encontro do PTJUG já foram disponibilizados na mailing list e decidi disponibilizá-los também no Slideshare.
Coloco aqui as 3 apresentações.
Developers Java: O que as empresas dizem que precisam mesmo mesmo
Por Fernando Fernandez

 &#124; View

Lightweight Grids with Terracotta
Por Cesario Ramos

 &#124; View

Web 2.0 em Java com Google Web Toolkit
Por Hugo Pinto

 [...]]]></description>
			<content:encoded><![CDATA[<p>Os slides das apresentações do 1º Encontro do PTJUG já foram disponibilizados na mailing list e decidi disponibilizá-los também no <a href="http://www.slideshare.net">Slideshare</a>.<br />
Coloco aqui as 3 apresentações.</p>
<h3>Developers Java: O que as empresas dizem que precisam mesmo mesmo</h3>
<p>Por Fernando Fernandez</p>
<div style="width:425px;text-align:left" id="__ss_300306"><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=developers-java-o-que-as-empresas-dizem-que-precisam-mesmo-mesmo-1-encontro-ptjug-1205161811422239-3"/><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=developers-java-o-que-as-empresas-dizem-que-precisam-mesmo-mesmo-1-encontro-ptjug-1205161811422239-3" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"><a href="http://www.slideshare.net/?src=embed"><img src="http://static.slideshare.net/swf/logo_embd.png" style="border:0px none;margin-bottom:-5px" alt="SlideShare"/></a> | <a href="http://www.slideshare.net/ptjug/developers-java-o-que-as-empresas-dizem-que-precisam-mesmo-mesmo-1-encontro-ptjug?src=embed" title="View 'Developers Java: O que as empresas dizem que precisam mesmo mesmo - 1º Encontro PTJUG' on SlideShare">View</a></div>
</div>
<h3>Lightweight Grids with Terracotta</h3>
<p>Por Cesario Ramos</p>
<div style="width:425px;text-align:left" id="__ss_300307"><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=lightweight-grids-with-terracotta-1-encontro-ptjug-1205161814292605-4"/><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=lightweight-grids-with-terracotta-1-encontro-ptjug-1205161814292605-4" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"><a href="http://www.slideshare.net/?src=embed"><img src="http://static.slideshare.net/swf/logo_embd.png" style="border:0px none;margin-bottom:-5px" alt="SlideShare"/></a> | <a href="http://www.slideshare.net/ptjug/lightweight-grids-with-terracotta-1-encontro-ptjug?src=embed" title="View 'Lightweight Grids With Terracotta - 1º Encontro PTJUG' on SlideShare">View</a></div>
</div>
<h3>Web 2.0 em Java com Google Web Toolkit</h3>
<p>Por Hugo Pinto</p>
<div style="width:425px;text-align:left" id="__ss_300278"><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=google-web-toolkit-1205160616853960-2"/><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=google-web-toolkit-1205160616853960-2" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"><a href="http://www.slideshare.net/?src=embed"><img src="http://static.slideshare.net/swf/logo_embd.png" style="border:0px none;margin-bottom:-5px" alt="SlideShare"/></a> | <a href="http://www.slideshare.net/ptjug/google-web-toolkit-300278?src=embed" title="View 'Google Web Toolkit - 1º Encontro PTJUG' on SlideShare">View</a></div>
</div>
<p>Enjoy! </p>
]]></content:encoded>
			<wfw:commentRss>http://www.zonaj.org/2008/03/11/slides-do-1%c2%ba-encontro-ptjug/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Javascript: 5 razões para usar e abusar</title>
		<link>http://www.zonaj.org/2008/03/04/javascript-e-assim-tao-mau/</link>
		<comments>http://www.zonaj.org/2008/03/04/javascript-e-assim-tao-mau/#comments</comments>
		<pubDate>Tue, 04 Mar 2008 08:00:35 +0000</pubDate>
		<dc:creator>Ruben Badaró</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[web2.0]]></category>

		<guid isPermaLink="false">http://www.zonaj.org/?p=81</guid>
		<description><![CDATA[Numa palavra: não.
Esta conversa já me surgiu em diversas ocasiões e voltou a despontar numa thread na mailing list do PTJUG, e confesso que tenho alguma dificuldade em compreender a enorme resistência que imensos programadores apresentam em aprender e utilizar javascript. Isto é, baterem código mesmo em javascript sem usar frameworks que gerem o código [...]]]></description>
			<content:encoded><![CDATA[<p>Numa palavra: não.</p>
<p>Esta conversa já me surgiu em diversas ocasiões e voltou a despontar numa thread na mailing list do PTJUG, e confesso que tenho alguma dificuldade em compreender a enorme resistência que imensos programadores apresentam em aprender e utilizar javascript. Isto é, baterem código mesmo em javascript sem usar frameworks que gerem o código todo &#8211; e.g. GWT, ou helpers de php, ruby, etc. -, mas usando obviamente bibliotecas como o prototype, jquery, etc. </p>
<p>Javascript é uma linguagem dinâmica, <em>weakly typed</em> e prototipada. Logo aqui, há diferenças para as linguagens que a maioria usa: C#, Java (<em>statically</em> e <em>strongly typed</em>) e python (<em>dynamically</em> mas <em>strongly typed</em>). O modelo de prototipagem é um pouco diferente do modelo de classes para definição de objectos, por isso percebo que possa introduzir confusão ou pelo menos dar origem a um novo processo de aprendizagem.</p>
<p>Mas não é assim tão complicado como isso&#8230; </p>
<h3>Razões para usar javascript directamente, não ter medo e assumi-lo com orgulho</h3>
<ol>
<li><strong>Desenvolvimento web = (X)HTML + CSS + Javascript + linguagem_server_side</strong></li>
<p>	Quer sejamos programadores java ou de uma outra tecnologia web, a probabilidade de termos de usar ou gerar html, css e javascript é muito elevada. Podemos inclusivamente usar geradores mas como facilitadores e não por sermos incapazes de produzir código de qualidade numa linguagem dinâmica ou, pelo menos, compreender o código que estamos a gerar. Devemos poder mudar de linguagem e continuar a dominar a parte de interface web, apenas tendo de aprender conceitos da outra linguagem/plataforma. </p>
<li><strong>jsFUD</strong></li>
<p>	Durante muito tempo, javascript foi muito pouco estudado e visto como uma linguagem de scripting básica que permitia escrever umas linhas de código. Não havia propriamente estruturação de código e muita gente entende que programar javascript é isso. É um pouco como aquelas aplicações java de alunos de primeiro ano que metem 2000 linhas de código num só ficheiro ao monte.<br />
Hoje em dia javascript não é isso, é uma linguagem madura, os problemas de interoperabilidade entre browsers são mitigados com as novas bibliotecas, estão a ser preparadas <a href="http://www.mozilla.org/projects/tamarin/">virtual machines</a> (compilação JIT incluída) que melhorarão imenso a performance de código no browser, há uma <a href="http://wiki.ecmascript.org/doku.php?id=proposals:proposals">proposta de uma nova versão</a> da linguagem (<a href="http://www.ecmascript.org/es4/spec/overview.pdf">resumo da nova especificação</a>) com possibilidades de verificação de tipos estática e outras features que fazem dela uma linguagem muito mais parecida com algo tipo java (ActionScript é a coisa mais parecida actualmente).</p>
<li><strong>Javascript não é só web</strong></li>
<p>	Nos últimos meses tenho desenvolvido aplicações com a suite de BPM Teamworks da Lombardi que utiliza javascript como linguagem de programação para as actividades dos BPMs. A utilização de javascript nestes moldes ou, melhor ainda, como linguagem para desenvolver plugins ou algo semelhante para aplicações, tirando partido das suas propriedades dinâmicas é altamente refrescante. Basta usar os jars que a Mozilla fornece com a implementação do <a href="http://www.mozilla.org/rhino/">projecto Rhino</a>.</p>
<li><strong>JSON</strong></li>
<p>	Poder estar a programar e definir as minhas estruturas de dados em formato JSON é magnífico. É menos verboso, simples e escrevo muito menos new&#8217;s.</p>
<li><strong>Abrir horizontes</strong></li>
<p>	<em>Last but not least</em>, não devemos ter receio de linguagens dinâmicas. Um programador java tem um trabalho confortável e laborioso: estamos protegidos com verificações estáticas em tempo de compilação, <em>checked exceptions</em> e outras demais coisas o que nos dá segurança e permite apanhar erros cedo; por outro lado, tudo isto nos dá mais trabalho sem muitas vezes nos garantir qualidade do software (para isso preferiria ter contratos estritos definidos entre os componentes com verificações em tempo de compilação e runtime, o que seria demais para a maioria nos sistemas).<br />
Trata-se pois, de uma questão de encontrar a chave de fendas que funcione melhor com o parafuso. Sejam linguagens dinâmicas ou não, o que interessa é a que produza melhor resultado final e isso pode nem sequer depender da linguagem mas de outros factores externos como a equipa, o tipo de requisitos, etc.</p>
</ol>
<p>Em termos de resumo, coisas como o GWT são excelentes paradigmas mas não se deve perder de vista o que se passa debaixo do capô. Experimentem desenvolver uma aplicação em javascript para testar o poder da linguagem. Repito, uma aplicação, não um bloco de script.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zonaj.org/2008/03/04/javascript-e-assim-tao-mau/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Lista de APIs Web 2.0</title>
		<link>http://www.zonaj.org/2007/08/30/lista-de-apis-web-20/</link>
		<comments>http://www.zonaj.org/2007/08/30/lista-de-apis-web-20/#comments</comments>
		<pubDate>Thu, 30 Aug 2007 19:00:07 +0000</pubDate>
		<dc:creator>Ruben Badaró</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[geral]]></category>
		<category><![CDATA[web2.0]]></category>

		<guid isPermaLink="false">http://www.zonaj.org/?p=54</guid>
		<description><![CDATA[Já que estou numa de APIs e Web 2.0, aqui fica uma lista com imensos sites que fornecem APIs para interagir com os serviços fornecidos. Bastante útil para fazer mashups e coisas desse género.
]]></description>
			<content:encoded><![CDATA[<p>Já que estou numa de APIs e Web 2.0, aqui fica <a href="http://techmagazine.ws/full-web-20-api-list/">uma lista com imensos sites</a> que fornecem APIs para interagir com os serviços fornecidos. Bastante útil para fazer mashups e coisas desse género.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zonaj.org/2007/08/30/lista-de-apis-web-20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sun anuncia JavaFX</title>
		<link>http://www.zonaj.org/2007/05/13/sun-anuncia-javafx/</link>
		<comments>http://www.zonaj.org/2007/05/13/sun-anuncia-javafx/#comments</comments>
		<pubDate>Sun, 13 May 2007 14:05:15 +0000</pubDate>
		<dc:creator>Ruben Badaró</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[apollo]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[javafx]]></category>
		<category><![CDATA[xforms]]></category>

		<guid isPermaLink="false">http://www.zonaj.org/?p=35</guid>
		<description><![CDATA[Anteriormente conhecido como F3, foi apresentado no JavaOne e criou algum buzz no meio do pessoal que se dedicar a pensar um bocado em RIAs (Rich Internet Applications).
JavaFX (e o JavaFX Script) permite desenvolver interfaces ricos, ao estilo flash, de forma declarativa, sendo que assenta à mesma sobre java Swing. Tem como principais concorrentes as [...]]]></description>
			<content:encoded><![CDATA[<p>Anteriormente conhecido como <a href="http://blogs.sun.com/chrisoliver/entry/f3">F3</a>, foi apresentado no <a href="http://java.sun.com/javaone/sf/">JavaOne</a> e criou algum buzz no meio do pessoal que se dedicar a pensar um bocado em RIAs (Rich Internet Applications).<br />
<a href="https://openjfx.dev.java.net/">JavaFX</a> (e o JavaFX Script) permite desenvolver interfaces ricos, ao estilo flash, de forma declarativa, sendo que assenta à mesma sobre java Swing. Tem como principais concorrentes as tecnologias da Adobe (Flash, <a href="http://www.adobe.com/products/flex/">Flex</a> e principalmente o <a href="http://labs.adobe.com/technologies/apollo/">Apollo</a>) e a recém-anunciada Silverlight da Microsoft, que tira partido da poderosa WPF (Windows Presentation Foundation). </p>
<p>Não tendo testado nada disto, continuo a achar uma parvoíce tudo isto, senão vejamos. Nenhuma destas tecnologias de interfaces ricas é acessível, tal como aplicações Ajax também não o são (screenreaders têm dificuldades em detectar alteração de valores e partes de páginas). Ajax ficou na moda porque o caminho é que todos queremos ter interfaces mais usáveis, que possam ter múltiplas acções assíncronas, no fundo, que dêem um feeling mais desktop. No entanto, os únicos standards que temos na web para poder fazer algo assim, são xhtml, css e javascript (e mesmo assim, implicam muito trabalho porque as especificações não são implementadas da mesma forma em todos os browsers). Embora flash e o jre tenham uma taxa de penetração muito elevada, são tecnologias proprietárias, daí ser difícil um screenreader ler uma aplicação em flash, por exemplo.<br />
Na minha opinião, o caminho das RIAs devia ser o de utilizar ou criar um standard não proprietário como o flash/javafx/silverlight, tal como foi tentado com os XForms e que parece ter morrido. Este standard permitiria que browsers o implementassem, screenreaders o lessem, etc.<br />
Para um browser ser compatível, teria de passar um conjunto de testes de aceitação que seriam efectuados por uma aplicação da W3C, e só se passassem poderiam dizer serem compatíveis. Ajudaria se a nível da união europeia, se definisse uma meta para a implementação dessa tecnologia.<br />
Sinceramente, XForms seria mesmo um óptimo candidato para isto. É já um standard W3C, permita implementar dinamismo destas outras tecnologias e não é vendor specific.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zonaj.org/2007/05/13/sun-anuncia-javafx/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Novo plugin de DWR para Netbeans</title>
		<link>http://www.zonaj.org/2007/03/06/novo-plugin-de-dwr-para-netbeans-2/</link>
		<comments>http://www.zonaj.org/2007/03/06/novo-plugin-de-dwr-para-netbeans-2/#comments</comments>
		<pubDate>Tue, 06 Mar 2007 21:40:50 +0000</pubDate>
		<dc:creator>Ricardo Antunes</dc:creator>
				<category><![CDATA[ajax]]></category>

		<guid isPermaLink="false">http://d6038509.u101.jodoshared.com/?p=25</guid>
		<description><![CDATA[Quem desenvolve aplicações web em Java e pretende usar Ajax, tem a vida facilitada com a utilização do DWR (Direct Web Remoting).
Resumidamente, o DWR permite, de uma maneira muito simples, usar Javascript no cliente para interagir directamente com os objectos Java no servidor e tem vindo a tornar-se&#160; um standard neste tipo de tecnologia.
Para aqueles [...]]]></description>
			<content:encoded><![CDATA[<p>Quem desenvolve aplicações web em Java e pretende usar Ajax, tem a vida facilitada com a utilização do <a target="_blank" href="http://getahead.org/dwr/">DWR (Direct Web Remoting)</a>.</p>
<p>Resumidamente, o DWR permite, de uma maneira muito simples, usar Javascript no cliente para interagir directamente com os objectos Java no servidor e tem vindo a tornar-se&nbsp; um standard neste tipo de tecnologia.</p>
<p>Para aqueles que usam o Netbeans como IDE, a vida fica agora (ainda) mais facilitada com o lançamento (não oficial) da primeira release de um plugin para DWR, disponível <a target="_blank" href="https://ajax.dev.java.net/files/documents/3115/52058/ea2-org-netbeans-modules-dwr.nbm" style="font-weight: bold;">aqui</a><span style="font-weight: bold;">.</p>
<p></span>Esta primeira release permite já editar visualmente o ficheiro de configuração do DWR&nbsp; (embora só para operações de <span style="font-style: italic;">create</span> e <span style="font-style: italic;">new</span>) e o <span style="font-style: italic;">drag &amp; drop </span>dos objectos exportados directamente para as JSPs!</p>
<p>Estão previstas para as próximas releases funcionalidades como a exposição de <span style="font-style: italic;">form beans</span> de Struts e <span style="font-style: italic;">managed beans</span> de JSF e de um editor para Signatures.</p>
<p>promete!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zonaj.org/2007/03/06/novo-plugin-de-dwr-para-netbeans-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
