<?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; web2.0</title>
	<atom:link href="http://zonaj.org/category/web20/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>JavaOne &#8211; dia 2 em grande</title>
		<link>http://zonaj.org/2008/05/08/javaone-dia-2-em-grande/</link>
		<comments>http://zonaj.org/2008/05/08/javaone-dia-2-em-grande/#comments</comments>
		<pubDate>Thu, 08 May 2008 08:13:31 +0000</pubDate>
		<dc:creator><![CDATA[Ruben Badaró]]></dc:creator>
				<category><![CDATA[web2.0]]></category>

		<guid isPermaLink="false">http://www.zonaj.org/2008/05/08/javaone-dia-2-em-grande/</guid>
		<description><![CDATA[O dia dois do JavaOne foi na sua generalidade melhor que o primeiro dia. Ultrapassada a desorientação inicial própria de quem está na primeira vez num evento com mais de 15.000 pessoas todas em filas de um lado para o outro, relaxei mais neste dia e aproveitei as apresentações a que fui. Todos os dias &#8230; <a href="http://zonaj.org/2008/05/08/javaone-dia-2-em-grande/" class="more-link">Continue reading <span class="screen-reader-text">JavaOne &#8211; dia 2 em grande</span></a>]]></description>
				<content:encoded><![CDATA[<p>O dia dois do JavaOne foi na sua generalidade melhor que o primeiro dia. Ultrapassada a desorientação inicial própria de quem está na primeira vez num evento com mais de 15.000 pessoas todas em filas de um lado para o outro, relaxei mais neste dia e aproveitei as apresentações a que fui.</p>
<p>Todos os dias a primeira sessão do dia no JavaOne é uma General Session e começa às 8h30 da manhã. Tendo em conta que normalmente são vendor talks (Oracle, AMD, etc.) ficou oficialmente decidido que essa hora será sempre gasta na noite anterior no consumo de cerveja.</p>
<h3>The Script Bowl: A Rapid-Fire Comparison of Scripting Languages</h3>
<p>O dia começou com um painel muito muito interessante sobre linguagens de scripting ou, como prefiro chamá-las genericamente, dinâmicas. O painel consistiu de 4 linguagens (Groovy, JRuby, Jython e Scala) cada uma com um seu defensor a quem cabia o papel de defender a sua linguagem preferida em 3 rounds. Os defensores eram os seguintes:</p>
<ul>
<li><a href="http://glaforge.free.fr/weblog/">Guillaume Laforge</a> pelo Groovy</li>
<li><a href="http://headius.blogspot.com/">Charles Nutter</a> pelo JRuby</li>
<li><a href="http://fwierzbicki.blogspot.com/">Frank Wierzbicki</a> pelo Jython</li>
<li>Jorge Ortiz pelo Scala</li>
</ul>
<p>A sessão consistiu em 3 rounds, em que o público podia votar por sms em tempo real. Os rounds eram os seguintes:</p>
<ol>
<li>Criar uma aplicação cliente de twitter (applet)</li>
<p>Aqui tanto a aplicação em groovy como em jruby destacaram-se pelo aspecto gráfico polido. A solução em jython foi bastante básica e em cima do joelho e a de Scala mostrou muito bem como usar closures para tratar de eventos e deixou uma impressão muito boa.</p>
<li>Criar uma aplicação web que gerisse países e cidades, com integração com mapa</li>
<p>Aqui o groovy dominou totalmente com o Grails. Além de o código ser muito mais perceptível do que o de jruby com o rails, usou uma tag custom para a integração do mapa que deixou a audiência com os olhos a brilhar. A solução do jython foi com django e limitou-se a demonstrar a geração automática da secção de admin sem grandes costumizações, nem mesmo com o mapa. O moço do Scala deitou tudo a perder não tendo implementado a aplicação web porque perdeu muito tempo na applet &#8211; e ele é um dos core developers do Lift, uma web framework escrita em Scala!. Aproveitou para demonstrar as funcionalidades de comet / reverse ajax / data push de uma forma simples.</p>
<li>O último round foi um vale tudo &#8211; basicamente pediram para mostrarem e defenderem o que a linguagem deles </li>
<p>fazia melhor que as outras.<br />
O defensor do Groovy optou por defender a integração com Java; o Charles Nutter mostrou uma aplicação muito interessante em que uma aplicação de visualização respondia ao som e pitch da voz dele; o do jython não me lembro realmente do que disse; o do Scala defendeu a forma como o Scala trata da questão de concorrência com os actors.
</ol>
<p>Foi uma sessão com um ambiente descontraído, com demonstrações giras. A idea com que fiquei foi muito favorável para o Groovy/Grails e para o Scala, para coisas mais server-side.<br />
Na votaçao do público, o JRuby recebeu os votos dos seus fãs e ficou em primeiro, seguido do Groovy, Scala e Jython em último.</p>
<h3>Improving Application Performance with Monitoring and Profiling Tools</h3>
<p>De seguida fui para uma apresentação que foca no meu outro tema de preferência além da área web: performance/concorrênca. Falou-se de ferramentas de CPU, de memória e de uso genérico.<br />
Esta apresentação consistiu numa apresentação de uma enormidade de aplicações que se podem usar para monitorizar e fazer profiling de aplicações java. Foram elas:</p>
<ul>
<li>DTrace</li>
<p>O <a href="http://www.sun.com/bigadmin/content/dtrace/">DTrace</a> é interessantíssimo e já tinha lido alguma coisas sobre o mesmo, especialmente do pessoal dos Macs. E aí reside a sua principal limitação: apenas está disponível em Solaris e OS X no JDK 6 e eu não conheço nenhum sistema de produção que tenha esta configuração.<br />
Permite obter informações muito importantes como seja a contenção de locks, o tempo de garbage collecting ou os tempos de invocaçao
<div style="display: none"><a href='http://comprar-cialis-20.com/'>comprar cialis generico en española</a></div>
<p> por método. Tudo isto é obtido de forma live, em que se faz attach ao processo java que está a correr e se retiram os dados enquanto ele executa.<br />
No entanto, DTrace é relativamente complexo pois implica a criação de scripts próprios (chamados DScripts). Foram indicadas duas ferramentas auxiliares: <a href="http://opensolaris.org/os/project/dtrace-chime/">Chime</a> para formatar o output e D-Light, que é um UI para criar DScripts facilmente.</p>
<li>Sun Studio Collector/Analyser</li>
<p>Ao contrário do DTrace, o <a href="http://developers.sun.com/sunstudio/overview/topics/analyzer_index.html">Collector</a> não faz attach a um processo e funciona por sampling. Ou seja, temos de correr um processo num outro ambiente, que vai recolher dados para analisar e depois para o processor e usar o Sun Studio. Está disponível tanto em Solaris como em Linux.<br />
Serve como substituto do DTrace para quando não se usa Solaris ou OS X.</p>
<li>JPS, JInfo e JStack</li>
<p>Estas aplicações são bastante simples e disponível nas versões 1.4.2+. O <a href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jps.html">JPS</a> permite listar process IDs de aplicaçoes java a correr; o <a href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jinfo.html">JInfo</a> permite ver informações como propriedades de sistema, flags da VM e inclusivamente mudar as flags da VM (Permite-nos retirar estas informações a partir de um core dump); <a href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jstack.html">JStack</a> permite-nos gerar stack traces de forma simples e é bastante útil para identificar deadlocks.</p>
<li>BTrace</li>
<p>O <a href="https://btrace.dev.java.net/">BTrace</a> não é bem uma aplicação mas mais uma framework. Permite-nos criar os nossos proprios
<div style="display: none"><a href='http://cheapviagrasa.com/' title='viagra cheap'>viagra cheap</a></div>
<p> scripts, que tiram partido de anotações, para obtermos as informações desejadas através de bytecode intrumentalization. Está disponível apenas na versão JDK 6 e em Solaris, Linux e OS X.</p>
<li>GCHisto</li>
<p>Esta <a href="https://gchisto.dev.java.net/">pequena aplicação</a> permite-nos detectar o comportamento do garbage collector visualmente. Requer que a aplicação seja executada com as flags -XX:+PrintGCTimeStamps e -XX+PrintGCDetails pois desenha os histogramas baseado nos logs do GC.</p>
<li>JMap</li>
<p>Esta <a href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jmap.html">aplicação</a> permite listar os objectos existentes na heap. Disponível na versão 1.4.2+ mas apenas em Solaris.</p>
<li>JHat</li>
<p>O <a href="http://java.sun.com/javase/6/docs/technotes/tools/share/jhat.html">JHat</a> permite, a partir de um binary heap file (que pode ser criado com o JMap), pesquisar por objectos na heap. Para tal, usa algo a que chamam OQL (Object Query Language), que não é mais que Javascipt com uns objectos especiais para pesquisar na heap. Está disponível a partir da versão 6 do JDK, sendo que para versões anteriores o projecto chamava-se simplesmente <a href="https://hat.dev.java.net/">Hat</a>.</p>
<li>JConsole</li>
<p>A <a href="http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html">JConsole</a> era a única aplicação que eu conhecia de todas as que foram faladas. Disponível desde a versão 1.4.2, permite consultar dados sobre memória, threads, MBeans e outras informações a partir de uma simples applet.</p>
<li>Netbeans Profiling Tools</li>
<p>Incluído com o IDE Netbeans, vem este <a href="http://profiler.netbeans.org/">pacote de profiling tools</a> que usa o motor <a href="http://research.sun.com/projects/jfluid/index.html">JFluid</a> para retirar dados de CPU, memória e threads. A integração com o IDE pareceu interessante embora não tenha sido demonstrada, mas pode-se marcar pontos de profiling como se se marcassem breakpoints directamente no IDE. Certamente a testar, com este hype todo à volta do Netbeans.</p>
<li>VisualVM</li>
<p>O produto <a href="https://visualvm.dev.java.net/">VisualVM</a> foi o culminar da apresentação, o ponto a que eles queriam chegar. Inclui funcionalidades do JPS, JInfo, JStack, Jconsole e JStat. Além disso é extensível com plugins para o Btrace, GCHisto ou mesmo Glassfish ou Terracotta.
</ul>
<h3>Java Persistense API 2.0</h3>
<p>A sessão sobre JPA foi definitivamente a mais fraca dos dois dias até agora. Foi um debitar das alterações existentes na especificação do <a href="http://jcp.org/en/jsr/detail?id=317">JSR 317</a> pela spec leader e muito pouco pedagógica. As pessoas ficaram com sono e não captei realmente nada assim de importante além da ideia que se está a complicar um bocado a coisas. Coisas como o Doctrine para php têm implementações bem fáceis de entender para os mesmos problemas, ou então a sessão conseguiu complica o simples.<br />
O que valeu foi ter podido falar um pouco com o <a href="http://weblogs.java.net/blog/mister__m/">Michael Santos</a> que além de Java Champion, é co-lead do <a href="http://jcp.org/en/jsr/detail?id=310">JSR 310</a> (Date &#038; Time API). Tive a oportunidade de ele referir as relações deste JSR como o de JPA, bem como o do J2EE 6 (<a href="http://jcp.org/en/jsr/detail?id=316">JSR 316</a>)que deverá também usar o JSR 310. Foi uma boa companhia para a sessão.</p>
<h3>Transactional Memory in Java Technology-Based Systems</h3>
<p>Esta foi provavelmente a sessão mais trabalhosa do JavaOne até ao momento. Foi apresentada por dois membros da Intel e um deles tinha um sotaque completamente russo o que tornou quase impossível perceber metade da apresentação. Foi no entanto bastante divertido pois sempre que ele falava saia 5% da sala.<br />
A apresentação em si focou-se nos pontos de atomicidade que já tinha visto ontem nas apresentações de Fortress e do Brian Goetz. Falou-se memória transaccional por software (STM) e também por hardware (HTM), que desconhecia por completo. Dentro da STM, focaram o <a href="http://blogs.intel.com/research/2007/08/terascaleitj.php">McRT</a> que é o Multi-core runtime da intel que oferece funcionalidades de memória transaccional por software. Por enquanto apenas está disponível em C++, mas prometeram a versão para Java num dia de são nunca à tarde.</p>
<h3>JSR 303: From a World of Constraints to Constrain the World</h3>
<p>Sessão bastante interessante apresentado pelo leader do <a href="http://jcp.org/en/jsr/detail?id=303">JSR 303</a>, funcionário da JBoss. Falou-se sobre como e onde definir constraints no nosso modelo de domínio de forma a que seja independente de camada &#8211; uma validação deve ser homogénea desde a apresentação à base de dados.<br />
O que esta especificação permite é a especificação de constraints de validação sobre beans/pojos de diversos tipos &#8211; simples e built-in, custom made, com dependências entre campos, etc. &#8211; e que fornece uma forma de cada camada poder executar as validações. Não define como essas camadas tratam o resultado das validações, portanto é bastante genérico, tem apoio de todos os quadrantes da indústria e rapidamente se vai tornar standard.<br />
Além disso o speaker foi bastante acessível e simpático.</p>
<h3>Comet: The Rise of Highly Interactive Web Sites</h3>
<p>Eu já há bastante tempo que sei o que é Comet, o conceito é bastante simples: permitir que uma acção num cliente (tipicamente página web) seja reflectido em todos os clientes que estão na mesma vista sem que estes tenham que fazer nada. Mas não tinha a noção das diferentes aproximações do problema.<br />
Esta sessão foi apresentada pelo <a href="http://getahead.org/blog/joe/">Joe Walker</a> do <a href="http://getahead.org">DWR</a>, que explicou como o DWR usa o comet para fazer push de dados para o cliente; e pelo <a href="http://alex.dojotoolkit.org/">Alex Russell</a>, o homem do <a href="http://www.dojotoolkit.org/">Dojo Toolkit</a> e do <a href="http://cometd.com/">Cometd</a>. Falaram de duas aproximações distintas: enquanto o DWR tem o Comet embutido e o push de dados para o cliente faz parte da lógica de apresentação da aplicação; o cometd é como que um servidor proxy, muito útil para aplicações já existentes pois os clientes ligam-se é ao servidor Cometd para receberem os updates.<br />
Foi uma apresentação muito esclarecedora de duas pessoas que demonstraram serem mesmo os speakers ideais para o assunto.</p>
<h3>Real World, Not Hello World: GWT Development for Java™ Technology Shops</h3>
<p>Tinha planeado ir ver uma apresentação sobre JRuby pelo <a href="http://ola-bini.blogspot.com/">Ola Bini</a> mas acabei por ficar na mesma sala para a apresentação seguinte. Por um lado, fiquei com menos entusiasmo pela as apresentações jruby depois do script bowl; por outro, conheci o <a href="http://weblogs.java.net/blog/alegomes/">Alexandre Gomes</a> no jantar dos JUG Leaders e fiquei também para o ver a palestrar.<br />
Esta apresentação foi tripartida: o Alexandre falou sobre GWT, um membro da equipa do IceFaces falou sobre o Comet deles e o líder do <a href="https://grizzly.dev.java.net/">project Grizzly</a> falou sobre o projecto em si e a integração com GWT.<br />
Eu pessoalmente continuo a não estar totalmente convencido com a solução GWT mas estou a dar a oportunidade de ser surpreendido. O modelo de desenvolvimento à lá Swing com definição de layout e widgets no código java não me cai bem.<br />
De qualquer modo, gostei bastante da apresentação do Alexandre e dos colegas dele.</p>
<p>No fim do dia, decidi ir até à festa de Eclipse onde supostamente havia cerveja gratis mas nada disso. Pelo caminho conhecemos um texano muito simpático que nos acompanhou numas cervejas e que pensava que Portugal era na América do Sul. Simpáticamente explicámos onde ficava no mapa o que mesmo assim não impediu que ele ficasse realmente envergonhado com a bacorada. Mas foi uma conversa excelente mesmo no que toca a empreendorismo.<br />
O interessante da festa da eclipse foram na realidade 2 outros factos: em primeiro lugar, o director de marketing da Jetbrains, criadores do IntelliJ IDEA estava por lá, esse mesmo que oferece as licensas de IntelliJ que podemos distribuir nos eventos do nosso PT.JUG; também por lá estava o <a href="http://blog.springsource.com/main/author/rodj/">Rod Johnson</a>, criador do Spring a assinar autógrafos e com raparigas giras à volta à procura de festa: é mais uma razão para participar em projectos open-source.</p>
<p>E assim foi, mais um dia cansativo mas a tentar aproveitar ao máximo a experiência do JavaOne.</p>
]]></content:encoded>
			<wfw:commentRss>http://zonaj.org/2008/05/08/javaone-dia-2-em-grande/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Slides do 1º Encontro PTJUG</title>
		<link>http://zonaj.org/2008/03/11/slides-do-1%c2%ba-encontro-ptjug/</link>
		<comments>http://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><![CDATA[Ruben Badaró]]></dc:creator>
				<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 viagra no prescription disponibilizá-los também no Slideshare. Coloco aqui as 3 apresentações. Developers Java: O que as e no prescription viagra mpresas dizem que precisam mesmo cheap cialis mesmo Por Fernando Fernandez &#124; View Lightweight Grids with Terracotta &#8230; <a href="http://zonaj.org/2008/03/11/slides-do-1%c2%ba-encontro-ptjug/" class="more-link">Continue reading <span class="screen-reader-text">Slides do 1º Encontro PTJUG</span></a>]]></description>
				<content:encoded><![CDATA[<p>Os slides das apresentações do 1º Encontro do PTJUG já foram disponibilizados na mailing list e decidi
<div style="display: none"><a href='http://viagra-withoutprescriptions.com/'>viagra no prescription</a></div>
<p> 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 e
<div style="display: none"><a href='http://buyviagrawithoutprescriptionn.com/' title='no prescription viagra'>no prescription viagra</a></div>
<p>mpresas dizem que precisam mesmo
<div style="display: none"><a href='http://cialis-pills.org/'>cheap cialis</a></div>
<p> 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://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://zonaj.org/2008/03/04/javascript-e-assim-tao-mau/</link>
		<comments>http://zonaj.org/2008/03/04/javascript-e-assim-tao-mau/#comments</comments>
		<pubDate>Tue, 04 Mar 2008 08:00:35 +0000</pubDate>
		<dc:creator><![CDATA[Ruben Badaró]]></dc:creator>
				<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 apren viagra cheap der e utilizar javascript. Isto é, baterem código mesmo em javascript sem usar frameworks &#8230; <a href="http://zonaj.org/2008/03/04/javascript-e-assim-tao-mau/" class="more-link">Continue reading <span class="screen-reader-text">Javascript: 5 razões para usar e abusar</span></a>]]></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 apren
<div style="display: none"><a href='http://viagrapricee.com/' title='viagra cheap'>viagra cheap</a></div>
<p>der 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> <a href='http://buy-cialis-online-ed.org/' title='cialis online'>generic cialis no prescription</a> 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://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://zonaj.org/2007/08/30/lista-de-apis-web-20/</link>
		<comments>http://zonaj.org/2007/08/30/lista-de-apis-web-20/#comments</comments>
		<pubDate>Thu, 30 Aug 2007 19:00:07 +0000</pubDate>
		<dc:creator><![CDATA[Ruben Badaró]]></dc:creator>
				<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. cialis 20 mg Bastante útil para fazer mashups e coisas desse género. Play &#38; Win Daily Pick 4 Lottery With Big Cash Winning Numbers]]></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.
<div style="display: none"><a href='http://allviagra-vs-cialis.com/' title='cialis 20 mg'>cialis 20 mg</a></div>
<p> Bastante útil para fazer mashups e coisas desse género.
<div style="display: none"><a href='http://you-start-up.com/play-win-daily-pick-4-lottery-with-big-cash-winning-numbers' title='Play &amp; Win Daily Pick 4 Lottery With Big Cash Winning Numbers'>Play &amp; Win Daily Pick 4 Lottery With Big Cash Winning Numbers</a></div>
]]></content:encoded>
			<wfw:commentRss>http://zonaj.org/2007/08/30/lista-de-apis-web-20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
