<?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>Bruno Pereira &#187; open source</title>
	<atom:link href="http://brunopereira.org/tag/open-source/feed/" rel="self" type="application/rss+xml" />
	<link>http://brunopereira.org</link>
	<description>Open source, Java, web, python, client-side e outros hobbies :)</description>
	<lastBuildDate>Thu, 20 Oct 2011 00:47:23 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>As diferentes culturas open source &#8211; Ubuntu x Debian</title>
		<link>http://brunopereira.org/2009/05/18/as-diferentes-culturas-open-source-ubuntu-x-debian/</link>
		<comments>http://brunopereira.org/2009/05/18/as-diferentes-culturas-open-source-ubuntu-x-debian/#comments</comments>
		<pubDate>Mon, 18 May 2009 04:20:34 +0000</pubDate>
		<dc:creator>blpsilva</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[posts em português]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian lenny]]></category>
		<category><![CDATA[kubuntu]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://brunopereira.org/?p=339</guid>
		<description><![CDATA[Eu sempre gostei muito de open source, e durante a maior parte da minha carreira trabalhei com open source em vários níveis. Com freqüência eu penso sobre vários aspectos da cultura open source, e recentemente tive contato com 2 coisas em particular que eu gostaria de destacar. Falarei sobre uma delas nesse artigo, e sobre [...]]]></description>
			<content:encoded><![CDATA[<p>Eu sempre gostei muito de open source, e durante a maior parte da minha carreira trabalhei com open source em vários níveis. Com freqüência eu penso sobre vários aspectos da cultura open source, e recentemente tive contato com 2 coisas em particular que eu gostaria de destacar. Falarei sobre uma delas nesse artigo, e sobre a outra <a href="http://brunopereira.org/2009/05/18/a-importancia-do-open-source-profissional/" target="_blank">no artigo seguinte</a>.</p>
<p>A primeira delas diz respeito à diferença de filosofia entre o <a href="http://www.ubuntu.com" target="_blank">Ubuntu</a> e o <a href="http://www.debian.org" target="_blank">Debian</a>. Eu uso <a href="http://www.kubuntu.org" target="_blank">Kubuntu</a> em casa há quase 3 anos. É a minha distribuição preferida, depois de já ter usado várias desde 2003, quando comecei a usar Linux em casa.</p>
<p>Na sexta-feira chegou na <a href="http://www.concretesolutions.com.br" target="_blank">Concrete</a> o meu laptop para uso diário, um <a href="http://www1.la.dell.com/content/products/productdetails.aspx?c=br&amp;cs=brbsdt1&amp;id=vostronb_1510&amp;l=pt&amp;s=bsd" target="_blank">Dell Vostro 1510</a>, e nesse fim de semana eu instalei nele o <a href="http://wiki.debian.org/DebianLenny" target="_blank">Debian Lenny</a> e configurei tudo que eu precisava para já começar a trabalhar com ele na segunda-feira. Instalei o Debian porque ele foi definido como distribuição padrão da empresa, então tive que abrir mão do Kubuntu.</p>
<p>O Kubuntu é baseado no Debian, então a grande maioria das coisas não muda entre os 2. Contudo, como diz o ditado: &#8220;O diabo está nos detalhes&#8221;. As notáveis diferenças entre o Debian e o Kubuntu são as coisas que o Kubuntu facilita demais, como configuração de conexão wireless, drivers multimídia do teclado, entre outras coisas. Nesses detalhes você consegue perceber claramente a diferença de cultura, pois o Debian tem uma postura quase religiosa quanto ao uso de softwares que não sejam &#8220;totalmente open source&#8221;.</p>
<p>Já no Ubuntu, a postura é de usar open source ao máximo, mas facilitando a vida dos usuários. Assim, quando você precisa de um driver ou componente proprietário, o Ubuntu te avisa que não é totalmente open source, mas já prepara tudo para que você tenha o mínimo de aborrecimento. Isso faz toda a diferença, pois muita gente (como eu) quer usar um desktop Linux que &#8220;simplesmente funcione&#8221;.</p>
<p>Quando eu comecei a usar Linux em casa eu gostava de fuçar e conhecer cada detalhe, como aprendizado mesmo. Isso foi ótimo para mim, e certamente me ajuda muito profissionalmente. Porém, hoje meu foco é outro, e eu quero que minha máquina &#8220;simplesmente funcione&#8221;, sem ter que estudar para configurar coisas cotidianas. O Ubuntu ganhou uma fatia enorme dos usuários Linux porque oferece isso. Já o Debian te oferece ricas aulas sobre o &#8220;pensamento verdadeiramente open source&#8221; e sobre os detalhes das entranhas do Linux. Mas a contrapartida é que você vai ter que estudar muito pra fazer coisas que no Ubuntu são triviais.</p>
<p>Cada um tem a sua própria visão e postura sobre open source, e devemos respeitar as diferentes formas de pensar. Eu particularmente me identifico muito mais com a visão &#8220;open source profissional&#8221;, sobre a qual falarei no próximo artigo.</p>
]]></content:encoded>
			<wfw:commentRss>http://brunopereira.org/2009/05/18/as-diferentes-culturas-open-source-ubuntu-x-debian/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Oracle anuncia compra da Sun</title>
		<link>http://brunopereira.org/2009/04/20/oracle-anuncia-compra-da-sun/</link>
		<comments>http://brunopereira.org/2009/04/20/oracle-anuncia-compra-da-sun/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 12:31:10 +0000</pubDate>
		<dc:creator>blpsilva</dc:creator>
				<category><![CDATA[posts em português]]></category>
		<category><![CDATA[bea]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[peoplesoft]]></category>
		<category><![CDATA[siebel]]></category>
		<category><![CDATA[Sun]]></category>
		<category><![CDATA[sun cloud]]></category>

		<guid isPermaLink="false">http://brunopereira.org/?p=311</guid>
		<description><![CDATA[Acabei de saber do anúncio da compra da Sun pela Oracle, e posso dizer que fiquei muito surpreso. A Oracle é uma empresa que vive desde o começo de venda de licenças, e todo seu histórico de aquisições foi nessa linha, comprando empresas como a Peoplesoft, Siebel e BEA.
O que me intriga é que a [...]]]></description>
			<content:encoded><![CDATA[<p>Acabei de saber do <a href="http://www.nytimes.com/2009/04/21/technology/companies/21sun.html?_r=1&amp;ref=business" target="_blank">anúncio da compra da Sun pela Oracle</a>, e posso dizer que fiquei muito surpreso. A <a href="http://www.oracle.com" target="_blank">Oracle</a> é uma empresa que vive desde o começo de venda de licenças, e todo seu histórico de aquisições foi nessa linha, comprando empresas como a <a href="http://www.oracle.com/peoplesoft/index.html" target="_blank">Peoplesoft</a>, <a href="http://www.oracle.com/siebel/index.html" target="_blank">Siebel</a> e <a href="http://www.oracle.com/bea/index.html" target="_blank">BEA</a>.</p>
<p>O que me intriga é que a Oracle não é tradicionalmente uma empresa de serviços. Ela costuma desenvolver e vender produtos, e a prestação de serviços é feita através de parceiros, como a <a href="http://www.concretesolutions.com.br" target="_blank">Concrete</a> por exemplo. Não consegui ter ainda a visão de como essa aquisição vai se encaixar dentro da estratégia da Oracle.</p>
<p>Não sei bem também como será a relação da Oracle com Open Source. A Sun não vinha tendo resultados financeiros muito bons, mas mantinha muitos projetos open source importantes, como o <a href="https://glassfish.dev.java.net/" target="_blank">Glassfish</a>, <a href="http://www.sun.com/software/solaris/" target="_blank">Solaris</a>, <a href="http://www.mysql.com/" target="_blank">MySql</a>, <a href="http://www.sun.com/products/soa/index.jsp" target="_blank">stack SOA</a> e vários projetos Java em geral. Além disso, desempenha um papel muito importante no desenvolvimento de linguagens dinâmicas para a JVM, além do desenvolvimento da própria JVM.</p>
<p>Se em termos de software tenho várias dúvidas, em relação às ofertas de hardware da Sun eu já consigo ter algumas idéias. Um dos principais concorrentes da Oracle é a IBM, que tem um braço bem forte de hardware. Não é raro a IBM ganhar concorrências com a Oracle &#8220;dando&#8221; o hardware, e vendendo o software. A Oracle não tinha condições de oferecer uma proposta equivalente, mas agora isso será possível.</p>
<p>Além disso, a Sun anunciou recentemente sua oferta de <a href="http://www.sun.com/solutions/cloudcomputing/index.jsp" target="_blank">Cloud Computing</a>, que pode ser um mercado que a Oracle quer entrar. Como ela já possui muitas aplicações críticas para empresas, ela pode querer oferecer estas aplicações como serviços, em uma estrutura de Cloud. Posso estar totalmente fora do alvo, mas não duvido que isto seja um objetivo da Oracle para diversificar seu modelo comercial.</p>
<p>Assim como em outras aquisições, muita coisa ainda não está clara, mas já temos vários aspectos para prestar atenção.</p>
]]></content:encoded>
			<wfw:commentRss>http://brunopereira.org/2009/04/20/oracle-anuncia-compra-da-sun/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dificuldades da Sun com o seu modelo de negócios open source</title>
		<link>http://brunopereira.org/2008/12/16/dificuldades-da-sun-com-o-seu-modelo-de-negocios-open-source/</link>
		<comments>http://brunopereira.org/2008/12/16/dificuldades-da-sun-com-o-seu-modelo-de-negocios-open-source/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 02:57:57 +0000</pubDate>
		<dc:creator>blpsilva</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[posts em português]]></category>
		<category><![CDATA[bea]]></category>
		<category><![CDATA[eds]]></category>
		<category><![CDATA[glassfish]]></category>
		<category><![CDATA[hp]]></category>
		<category><![CDATA[ibm]]></category>
		<category><![CDATA[jboss]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[Sun]]></category>

		<guid isPermaLink="false">http://brunopereira.org/?p=270</guid>
		<description><![CDATA[Hoje o Sacha Labourey (CTO da JBoss) publicou um post interessante sobre as dificuldades que a Sun vem encontrando, em especial com seu modelo de negócios open source. Como eu já pensei um bocado sobre isso e conversei com algumas pessoas, vou deixar aqui algumas opiniões.
Na minha opinião, a Sun fez e vem fazendo um [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje o <a href="http://sacha.labourey.com/" target="_blank">Sacha Labourey</a> (CTO da JBoss) publicou um <a href="http://sacha.labourey.com/2008/12/16/sun-sound-open-source-business-model/" target="_blank">post interessante</a> sobre as dificuldades que a <a href="http://www.sun.com" target="_blank">Sun</a> vem encontrando, em especial com seu modelo de negócios open source. Como eu já pensei um bocado sobre isso e conversei com algumas pessoas, vou deixar aqui algumas opiniões.</p>
<p>Na minha opinião, a Sun fez e vem fazendo um excepcional trabalho mantendo a plataforma Java como um todo. O problema todo está no contexto que girou em torno disso.</p>
<p>Em um determinado momento a Sun lutava bastante contra a <a href="http://www.microsoft.com" target="_blank">Microsoft</a> e suas soluções Windows/.NET, e de fato parecia que as empresas seriam adversárias. O que ocorre é que a Sun gastou tantas energias combatendo a Microsoft que não dedicou o esforço necessário para conquistar espaço dentro do próprio mercado Java.</p>
<p>O <a href="https://glassfish.dev.java.net/" target="_blank">Glassfish V2</a> foi o primeiro bom servidor de aplicações da Sun, mas ele chegou bem tarde. Muito antes a <a href="http://www.bea.com" target="_blank">BEA</a> e a <a href="http://www.ibm.com" target="_blank">IBM</a> já tinham um vasto portfólio de produtos Java Enterprise, e servidores de aplicação bem melhores do que o antigo Sun Application Server. Com isso, mesmo com o enorme sucesso da plataforma Java, a Sun não estava muito bem posicionada no mercado de software.</p>
<p>Creio que em decorrência deste primeiro problema (a falta de um bom app server), veio o problema que eu acho o mais grave. Na minha opinião o que fez mais falta à Sun é um bom modelo de serviços em torno da plataforma que ela desenvolveu tão bem. A Sun tem muitos grandes engenheiros, mas não conseguiu traduzir isso em muito lucro com Java. Penso que um modelo de serviços semelhante ao da IBM teria sido adequado à Sun, mas para isso eles precisariam de um portfólio de produtos melhor.</p>
<p>O grande (e bem-sucedido) esforço no desenvolvimento da plataforma Java consumiu energias que poderiam ter sido aplicadas na construção de uma linha de produtos mais rica, e com isso o sucesso do Java acabou drenando muito da saúde da Sun.</p>
<p>Mais recentemente a Sun tentou mudar a sua estratégia, e passou a abraçar ainda mais o modelo open-source. Embora isso tenha sido muito bem recebido pela comunidade de desenvolvedores, não podemos dizer que essa mudança tenha trazido mais sucesso para a empresa.</p>
<p>Eu tenho a clara impressão de que a Sun abraçou este modelo sem ter muita noção do que a esperava, mas talvez a sensação fosse de que não havia uma outra alternativa óbvia. A verdade é que a Sun está há anos lutando, mas sem encontrar a estratégia correta. O modelo de negócios em torno de open source foi mais uma tentativa da empresa, mas não estou vendo muitas perspectivas da Sun conseguir deste modelo as receitas necessárias para cobrir seus custos.</p>
<p>Eu fico triste por essas dificuldades da Sun, pois eles fizeram um excelente trabalho desenvolvendo a plataforma Java, mas isso custou a própria saúde da empresa.</p>
<p>E o que poderá vir em conseqüência? Difícil dizer, mas me parece inevitável que a Sun seja comprada por um player de maior porte, como a HP ou a SAP.</p>
<p>Como a Oracle agora é um concorrente direto da SAP em várias linhas, e a SAP começou a investir em Java, talvez faça sentido que a gigante alemã compre a Sun.</p>
<p>Quanto à HP, seria um movimento muito mais coerente do que a <a href="http://brunopereira.org/2008/05/14/hp-compra-eds-mas-isso-faz-algum-sentido/" target="_blank">compra da EDS</a>, que ocorreu esse ano. Comprando a Sun, a HP teria a stack completa, com hardware HP, sistema operacional e middleware da Sun, e serviços provenientes da EDS. Isto a deixaria em situação semelhante à da IBM, e acho que faria sentido nesse contexto atual.</p>
<p>Não sei qual será o futuro da Sun, mas sinceramente torço muito para que seja próspero, pois seu legado de contribuições ao cenário mundial de software é valioso demais para que a empresa tenha um final agonizante.</p>
]]></content:encoded>
			<wfw:commentRss>http://brunopereira.org/2008/12/16/dificuldades-da-sun-com-o-seu-modelo-de-negocios-open-source/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>À procura de uma maneira produtiva de trabalhar com web services SOAP</title>
		<link>http://brunopereira.org/2008/12/08/a-procura-de-uma-maneira-produtiva-de-trabalhar-com-web-services-soap/</link>
		<comments>http://brunopereira.org/2008/12/08/a-procura-de-uma-maneira-produtiva-de-trabalhar-com-web-services-soap/#comments</comments>
		<pubDate>Tue, 09 Dec 2008 00:28:03 +0000</pubDate>
		<dc:creator>blpsilva</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[posts em português]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[apache cxf]]></category>
		<category><![CDATA[aqualogic]]></category>
		<category><![CDATA[axis]]></category>
		<category><![CDATA[axis 2]]></category>
		<category><![CDATA[bea]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[glassfish]]></category>
		<category><![CDATA[jboss]]></category>
		<category><![CDATA[metro]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[soap]]></category>
		<category><![CDATA[Sun]]></category>
		<category><![CDATA[web services]]></category>
		<category><![CDATA[wsdl]]></category>

		<guid isPermaLink="false">http://brunopereira.org/?p=262</guid>
		<description><![CDATA[Com a minha mudança de alocação da Globo.com para a Globosat, continuo trabalhando bastante com integração de aplicações, mas agora com um ferramental e paradigmas diferentes.
Na Globo.com eu trabalhei muito com open source, e estava acostumado a montar as aplicações a partir de componentes &#8220;crus&#8221;, em vez de usar ferramentas sofisticadas. Open source faz parte [...]]]></description>
			<content:encoded><![CDATA[<p>Com a minha <a href="http://brunopereira.org/2008/11/28/adeus-globocom-foi-um-grande-prazer/" target="_blank">mudança de alocação</a> da <a href="http://www.globo.com" target="_blank">Globo.com</a> para a <a href="http://globosat.globo.com/" target="_blank">Globosat</a>, continuo trabalhando bastante com integração de aplicações, mas agora com um ferramental e paradigmas diferentes.</p>
<p>Na Globo.com eu trabalhei muito com open source, e estava acostumado a montar as aplicações a partir de componentes &#8220;crus&#8221;, em vez de usar ferramentas sofisticadas. Open source faz parte da cultura da empresa, e tínhamos uma boa liberdade de escolha de tecnologias e arquiteturas.</p>
<p>Como falei algumas vezes no passado, nós migramos boa parte da arquitetura legada com EJBs para serviços <a href="http://brunopereira.org/tag/rest/" target="_blank">REST</a> usando por baixo o <a href="https://jersey.dev.java.net/" target="_blank">Jersey</a>, <a href="http://www.springframework.org/" target="_blank">Spring</a> e <a href="http://ibatis.apache.org/" target="_blank">Ibatis</a>. A produtividade no desenvolvimento de serviços REST me agrada muito, e mesmo alguém que não conheça muito de serviços REST consegue desenvolver um serviço sem tanto esforço.</p>
<p>Agora vou trabalhar mais com serviços SOAP, mas usando ferramentas muito produtivas, como o <a href="http://www.bea.com/framework.jsp?CNT=index.htm&amp;FP=/content/products/aqualogic/service_bus/" target="_blank">Aqualogic ESB</a> e o <a href="http://www.bea.com/framework.jsp?CNT=index.htm&amp;FP=/content/products/weblogic/workshop/" target="_blank">Workshop</a>, entre outros. Essas ferramentas facilitam muito o trabalho oferecendo <a href="http://brunopereira.org/2008/12/04/abstracoes-transparentes-e-abstracoes-opacas/" target="_blank">Abstrações Opacas</a>. Como ainda estou muito ligado ao trabalho com Open Source, eu venho tentando no meu tempo vago encontrar ferramentas open source com a mesma proposta.</p>
<p>Neste momento estou tentando encontrar a maneira mais produtiva de se trabalhar com web services SOAP usando open source. No passado eu desenvolvi serviços com o <a href="http://xfire.codehaus.org/" target="_blank">XFire</a>, com o <a href="http://ws.apache.org/axis2/" target="_blank">Axis 2</a> e com o <a href="https://jax-ws.dev.java.net/" target="_blank">JAX-WS</a>, mas achei interessante reavaliar as opções existentes atualmente.</p>
<p>Nos últimos dias eu fiz testes com o Axis 2, com o <a href="http://cxf.apache.org/" target="_blank">Apache CXF</a> e com o JAX-WS.</p>
<p>Eu não gosto muito do Axis 2. Você até consegue desenvolver serviços rapidamente com ele, mas ele gera um código tão sujo que é muito triste colocar qualquer coisa em produção com ele, sabendo que você vai ter que manter depois aquele código. Além disso, para utilizá-lo você precisa levar nada menos que 51 jars para sua aplicação, o que transforma qualquer aplicação em um mastodonte. Um outro problema dessa lista massiva de dependências é que a chance de uma aplicação pré-existente ter conflitos de dependências com o Axis é grande.</p>
<p>Na prática, eu só utilizaria o Axis 2 (e mesmo assim com má vontade) para desenvolver serviços se fosse numa estrutura como o <a href="http://wso2.org/projects/wsas/java" target="_blank">WSO2 Web Services Application Server</a>, que é um servidor de aplicações &#8220;dedicado&#8221; a serviços Axis.</p>
<p>O Apache CXF oferece um &#8220;front-end&#8221; com JAX-WS (que é o mais recomendado) e um &#8220;front-end&#8221; alternativo, que usa o Aegis Databinding. Por enquanto olhei apenas o front-end com JAX-WS, mas não vi nenhuma vantagem em utilizar o CXF em vez da implementação de referência presente no <a href="https://glassfish.dev.java.net/" target="_blank">Glassfish</a>. Se pintar disposição eu darei uma olhada no front-end com Aegis Databinding, mas por enquanto não tenho grandes expectativas em relação a ele não.</p>
<p>Para finalizar, fiz muitos experimentos com a implementação de referência do JAX-WS, embutido no Glassfish V2. A forma de trabalho que achei mais produtiva nestes meus testes foi desenvolvendo com JAX-WS no <a href="http://www.netbeans.org" target="_blank">Netbeans</a> (utilizei a versão 6.5).</p>
<p>Tentei desenvolver a partir de classes Java, e a partir do <a href="http://www.w3.org/TR/wsdl" target="_blank">WSDL</a>, e esta última me trouxe melhores resultados.A melhor forma que achei foi começar desenhando os schemas XML com o editor do Netbeans:</p>
<p><a href="http://brunopereira.org/wp-content/uploads/2008/12/xml_schema_editor.jpg"><img class="alignnone size-full wp-image-263" title="xml_schema_editor" src="http://brunopereira.org/wp-content/uploads/2008/12/xml_schema_editor.jpg" alt="" width="471" height="586" /></a></p>
<p>Criei um Complex Type para cada classe de domínio, e 1 Complex Type para o Request de cada operação e 1 Complex Type para o Response de cada operação. Tendo feito isso, criei depois 1 Element para o Request de cada operação e 1 Element para o Response de cada operação. Com o schema XML criado dessa forma, criei em seguida o WSDL, com o editor do Netbeans também:</p>
<p><a href="http://brunopereira.org/wp-content/uploads/2008/12/wsdl_editor.jpg"><img class="alignnone size-full wp-image-264" title="wsdl_editor" src="http://brunopereira.org/wp-content/uploads/2008/12/wsdl_editor.jpg" alt="" width="418" height="702" /></a></p>
<p>Na criação do WSDL, coloquei nas mensagens de Request/Response das operações os <strong><em>Elementos</em></strong> declarados no schema XML anterior. É importante prestar atenção nisso. Usando Elementos nas mensagens, você está criando serviços no modelo <em><strong>Document/Literal</strong></em>. Se você colocar nas mensagens um <em><strong>Complex Type</strong></em> diretamente, em vez de colocar um <em><strong>Elemento</strong></em>, você estará criando um serviço no modelo <strong><em>RPC/Literal</em></strong>. Eu particularmente prefiro Document/Literal, e o código gerado pelo JAX-WS neste modelo me agrada mais.</p>
<p>A implementação do serviço com JAX-WS ficou parecida com isso aqui:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">org.brunopereira.cadastro</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.jws.WebService</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.brunopereira.schema.cadastroclientes.CadastroClienteRequestType</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.brunopereira.schema.cadastroclientes.CadastroClienteResponseType</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.brunopereira.schema.cadastroclientes.Cliente</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.brunopereira.wsdl.cadastrocliente.CadastroClientePortType</span><span style="color: #339933;">;</span>
&nbsp;
@WebService<span style="color: #009900;">&#40;</span>serviceName <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;CadastroClienteService&quot;</span>, portName <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;CadastroClientePort&quot;</span>,
endpointInterface <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;org.brunopereira.wsdl.cadastrocliente.CadastroClientePortType&quot;</span>,
targetNamespace <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;http://brunopereira.org/wsdl/CadastroCliente&quot;</span>,
wsdlLocation <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;WEB-INF/wsdl/CadastroCliente/CadastroCliente.wsdl&quot;</span><span style="color: #009900;">&#41;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> CadastroCliente <span style="color: #000000; font-weight: bold;">implements</span> CadastroClientePortType <span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">public</span> CadastroClienteResponseType cadastrarCliente<span style="color: #009900;">&#40;</span>CadastroClienteRequestType request<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Cadastro de cliente foi invocado!! Será feito o roteamento para o serviço adequado!!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Cliente cliente <span style="color: #339933;">=</span> request.<span style="color: #006633;">getCliente</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
CadastroClienteResponseType response <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> CadastroClienteResponseType<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
response.<span style="color: #006633;">setCliente</span><span style="color: #009900;">&#40;</span>cliente<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">return</span> response<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>O código do cliente foi gerado bem facilmente a partir do WSDL também, e ficou bem limpo. O que achei bem fraco foi a parte de teste dos serviços tanto no Netbeans como no Eclipse. No Eclipse você só consegue usar os plugins de teste se você tiver desenvolvido os serviços dentro do Eclipse, o que inviabilizou o meu uso. E o Netbeans tem um suporte que só serve pra HelloWorld, pra aqueles serviços de Calculadora, que você passa uns parâmetros primitivos e recebe um resultado simples. A interface do testador do meu serviço ficou dessa forma:<br />
<a href="http://brunopereira.org/wp-content/uploads/2008/12/web_services_tester.jpg"><img class="alignnone size-full wp-image-265" title="web_services_tester" src="http://brunopereira.org/wp-content/uploads/2008/12/web_services_tester.jpg" alt="" width="800" height="500" /></a></p>
<p>Dá pra ver que não serve para nada além de um HelloWorld basicão.</p>
<p>Bom, de uma maneira geral, o suporte a Web Services no Netbeans é muito melhor do que no Eclipse, que pra piorar só suporta a criação de serviços com o Axis. Até agora a maneira mais produtiva que encontrei de trabalhar com serviços SOAP foi essa que descrevi. Nos próximos dias olharei o que tem de interessante no projeto Metro e no JBoss ESB. Se encontrar coisas interessantes falarei mais por aqui. Ah, e se alguém tiver dicas para melhorar esta forma de trabalho que descrevi, por favor me avisem, pois estou avaliando muita coisa e não dá tempo de dedicar tanto tempo a cada opção dessas.</p>
]]></content:encoded>
			<wfw:commentRss>http://brunopereira.org/2008/12/08/a-procura-de-uma-maneira-produtiva-de-trabalhar-com-web-services-soap/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Ubuntu virando cada vez mais a distribuição Linux padrão</title>
		<link>http://brunopereira.org/2008/11/12/ubuntu-virando-cada-vez-mais-a-distribuicao-linux-padrao/</link>
		<comments>http://brunopereira.org/2008/11/12/ubuntu-virando-cada-vez-mais-a-distribuicao-linux-padrao/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 03:17:34 +0000</pubDate>
		<dc:creator>blpsilva</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[posts em português]]></category>
		<category><![CDATA[cce]]></category>
		<category><![CDATA[itautec]]></category>
		<category><![CDATA[kubuntu]]></category>
		<category><![CDATA[positivo]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://brunopereira.org/?p=255</guid>
		<description><![CDATA[Li recentemente uma matéria que fez um estudo interessante sobre a situação atual do uso de algumas das principais distribuições Linux. O estudo não utilizou uma metodologia exatamente científica, mas as conclusões não deixam de ser válidas.
O estudo observa uma tendência de que o Ubuntu seja cada vez mais a cara do Linux. Na verdade [...]]]></description>
			<content:encoded><![CDATA[<p>Li recentemente <a href="http://codingexperiments.com/archives/149" target="_blank">uma matéria</a> que fez um estudo interessante sobre a situação atual do uso de algumas das principais distribuições Linux. O estudo não utilizou uma metodologia exatamente científica, mas as conclusões não deixam de ser válidas.</p>
<p>O estudo observa uma tendência de que o <a href="http://www.ubuntu.com" target="_blank">Ubuntu</a> seja cada vez mais a cara do Linux. Na verdade parece que a &#8220;marca&#8221; Ubuntu está com um progresso muito mais vigoroso do que a &#8220;marca&#8221; Linux, e provavelmente em breve a &#8220;marca&#8221; Ubuntu será a mais forte das duas.</p>
<p>Eu particularmente acho isso muito bom. Durante muitos anos o percentual de uso das principais distribuições Linux foi muito pulverizado. Havia uma gama enorme de opções, e não havia uma concentração tão forte em torno de nenhuma delas. É verdade que o <a href="http://www.redhat.com" target="_blank">Red Hat</a> teve uns momentos muito bons até a versão 9 (última versão gratuita), mas depois que eles mudaram o modelo comercial, perderam muitos usuários caseiros.</p>
<p>Com a concentração em torno do Ubuntu/<a href="http://www.kubuntu.org" target="_blank">Kubuntu</a>, acho que as chances de sucesso do Linux no desktop de usuários comuns aumentam muito. Um facilitador muito importante no rápido crescimento do Windows foi que muitas pessoas o conheciam, e então eram capazes de orientar novos usuários e ajudar na solução de problemas de forma rápida. Isso é muito mais fácil quando se tem um sistema operacional e interfaces de usuário com o mesmo padrão.</p>
<p>Se tivéssemos a grande maioria dos usuários Linux usando Ubuntu/Kubuntu, ficaria muito mais fácil que novos usuários tivessem facilidade em encontrar ajuda. Isso diminuiria muito as barreiras de entrada no uso do Linux em computadores caseiros por pessoas leigas.</p>
<p>É claro que continuarão existindo outras distribuições, mas com um foco direcionado em públicos específicos, ou finalidades específicas. Não há nada de errado em ter muitas opções, mas a adoção do Ubuntu como padrão facilitaria muito as coisas.</p>
<p>Uma coisa que eu não consigo entender é o que fazem algumas montadoras de computadores no Brasil. Já cansei de ver computadores com Linux à venda em supermercados e lojas em geral. Isso é legal de se ver. Porém, cada fabricante diferente (e são vários) usa uma distribuição diferente, e pouco comum. Isso com certeza dificulta muito o aprendizado de novos usuários Linux, e o que acaba acontecendo é que as pessoas mais humildes compram cópias piratas do Windows e instalam em suas máquinas que vieram com Linux.</p>
<p>Será que não seria mais fácil a Itautec, Positivo, CCE, etc etc etc, simplesmente usarem o Ubuntu/Kubuntu e customizarem só uma ou outra coisinha? Porque instalar umas distribuições que ninguém nunca viu, e que dificultam muito mais a vida dos usuários?</p>
<p>Será que isso é para conseguir vender suporte? Se for, acho que isso é um tremendo tiro no pé, pois as empresas correm um enorme risco de que as pessoas nem comprem os seus produtos ou então simplesmente troquem o Linux que veio instalado por um Windows piratão.</p>
<p>O sucesso do Linux no desktop do povão pode ser muito ajudado pelo sucesso do Ubuntu, então eu fico muito feliz com o crescimento vigoroso que este vem tendo. Só torço para que as montadoras de PCs nacionais acordem e passem a disponibilizar o Ubuntu em vez de umas distribuições sem-vergonha que ninguém conhece e que ninguém vai usar.</p>
<p>Ajude o Linux e o Open Source no Brasil. Use e divulgue uma distribuição que até o nosso presidente saiba falar! Ubuntu! <img src='http://brunopereira.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://brunopereira.org/2008/11/12/ubuntu-virando-cada-vez-mais-a-distribuicao-linux-padrao/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Marketing pessoal para desenvolvedores &#8211; dicas</title>
		<link>http://brunopereira.org/2008/10/29/marketing-pessoal-para-desenvolvedores-dicas/</link>
		<comments>http://brunopereira.org/2008/10/29/marketing-pessoal-para-desenvolvedores-dicas/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 03:00:55 +0000</pubDate>
		<dc:creator>blpsilva</dc:creator>
				<category><![CDATA[carreira]]></category>
		<category><![CDATA[posts em português]]></category>
		<category><![CDATA[marketing pessoal]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://brunopereira.org/?p=244</guid>
		<description><![CDATA[Mais cedo eu escrevi um post sobre marketing pessoal, mais focado na questão motivacional para prestar atenção nisso. Como falei, estou agora escrevendo um post bem mais objetivo, com algumas dicas sobre como melhorar no seu marketing pessoal e conquistar um pouco mais de visibilidade na carreira.
A idéia deste post é colocar dicas sem uma [...]]]></description>
			<content:encoded><![CDATA[<p>Mais cedo eu escrevi <a href="http://brunopereira.org/2008/10/28/marketing-pessoal-para-desenvolvedores-motivacao-para-comeca/" target="_self">um post sobre marketing pessoal</a>, mais focado na questão motivacional para prestar atenção nisso. Como falei, estou agora escrevendo um post bem mais objetivo, com algumas dicas sobre como melhorar no seu marketing pessoal e conquistar um pouco mais de visibilidade na carreira.</p>
<p>A idéia deste post é colocar dicas sem uma ordem específica, e comentar porque elas podem ser importantes. Provavelmente este post será atualizado várias vezes ao longo do tempo para agregar idéias novas, e com certeza as opiniões de outras pessoas ajudam muito para melhorar o conteúdo aqui. Não hesite em deixar suas observações <img src='http://brunopereira.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<ol>
<li><strong>Escreva um blog</strong>: essa é a forma mais fácil e objetiva de expôr o seu trabalho para outras pessoas. Você não precisa ficar escrevendo com inúmeros detalhes tudo o que está fazendo. Mencione coisas relevantes que possam ser interessantes a outras pessoas, e naturalmente as pessoas começarão a ler o que você escreve. O <a href="http://www.wordpress.com" target="_blank">Wordpress</a> é uma excelente ferramenta de blogs, e permite que você mantenha gratuitamente um blog hospedado por eles, com ótimo nível de serviço.</li>
<li><strong>Participe de grupos profissionais da sua área</strong>: grupos profissionais como os Java User Groups e semelhantes são muito interessantes para você conhecer outras pessoas fazendo o mesmo que você. Após algum tempo você terá conhecido as pessoas mais relevantes e conseguirá saber o que tem sido usado com sucesso, e o nível geral das pessoas da área. Isto é ótimo para trazer novas idéias e ajudar em decisões estratégicas. Networking é tudo.</li>
<li><strong>Tente se manter atualizado sobre as novidades mais interessantes da área</strong>: isto é fundamental para que você se torne e se mantenha como um profissional de destaque por muito tempo. Se você ainda está programando sistemas client-server em Delphi, provavelmente não terá muitas coisas novas para discutir com outras pessoas, e acabará um pouco esquecido. Por outro lado, se você está trabalhando com novidades quentes em linguagens dinâmicas, Web 2.0, redes sociais e outras coisas que estão em destaque no momento, provavelmente terá muita gente interessada em conversar com você.</li>
<li><strong>Tente fazer apresentações de coisas interessantes no momento</strong>: se você fizer apresentações sobre assuntos que estão sendo muito debatidos no momento, provavelmente atrairá o interesse de várias pessoas. Fazendo boas apresentações, você ganhará mais credibilidade e as pessoas vão SABER que você conhece daquele assunto, e vão querer trocar idéias sobre o assunto contigo.</li>
<li><strong>Vá em eventos relevantes da sua área</strong>: em eventos normalmente são apresentados os conteúdos mais bacanas do momento, e você conhecerá mais sobre os caminhos que as coisas estão tomando. Além disso, é uma ótima oportunidade para conhecer pessoas e trocar idéias sobre temas que não há tanta gente qualificada para conversar.</li>
<li><strong>Procure saber o que outras pessoas estão estudando e utilizando nos projetos, e troque experiências</strong>: casos de sucesso são o principal fator para a sobrevivência de qualquer tecnologia, metodologia ou qualquer outra coisa relacionada a software. Conheça o que está sendo usado com sucesso, e comente o que está funcionando pra você e o que está te trazendo problemas. Assim você aprenderá bastante com as discussões e as pessoas saberão o que você está fazendo.</li>
<li><strong>Leia e interaja em outros blogs relevantes</strong>: mesma motivação que o item anterior, com o bônus de que você estará interagindo com a elite da sua área, e as discussões com essas pessoas podem te trazer muitas idéias legais, e te trarão ótimos contatos.</li>
<li><strong>Participação em projetos open source ajuda muito</strong>: projetos open source agregam ótimas mentes e fomentam a participação de várias pessoas diferentes. Mesmo que você não seja um committer, participar em listas de discussão dos projetos e ser um &#8220;early-adopter&#8221; podem te ajudar a ficar mais relevante, e a ser uma referência para outras pessoas.</li>
</ol>
<p>Bom, espero que essas dicas possam ser úteis para outras pessoas, e já deixo claro que este post é um trabalho em progresso. Certamente melhorarei o conteúdo aqui e tentarei colher mais idéias interessantes sobre o assunto. Se você estiver interessado no tema, pode alavancar mais um pouco o seu marketing pessoal contribuindo aqui <img src='http://brunopereira.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://brunopereira.org/2008/10/29/marketing-pessoal-para-desenvolvedores-dicas/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Interview with Eelco Hillenious and Martijn Dashorst, from Apache Wicket</title>
		<link>http://brunopereira.org/2008/07/06/interview-with-eelco-hillenious-and-martijn-dashorst-from-apache-wicket/</link>
		<comments>http://brunopereira.org/2008/07/06/interview-with-eelco-hillenious-and-martijn-dashorst-from-apache-wicket/#comments</comments>
		<pubDate>Mon, 07 Jul 2008 02:53:23 +0000</pubDate>
		<dc:creator>blpsilva</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[codehaus]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[scala]]></category>
		<category><![CDATA[sourceforge]]></category>
		<category><![CDATA[wicket]]></category>
		<category><![CDATA[wicket in action]]></category>

		<guid isPermaLink="false">http://brunopereira.org/?p=187</guid>
		<description><![CDATA[I really enjoyed the first interview I did some time ago with Robert Elves, from Mylyn. I find very nice to gather some opinions and thoughts from relevant people in our field, and specially people involved with Open Source Software.
This time I was lucky enough to make an interview with Eelco Hillenious and Martijn Dashorst, [...]]]></description>
			<content:encoded><![CDATA[<p>I really enjoyed the <a href="http://brunopereira.org/2008/01/07/interview-with-robert-elves-from-mylyn-project/" target="_self">first interview I did some time ago</a> with Robert Elves, from <a href="http://www.eclipse.org/mylyn" target="_blank">Mylyn</a>. I find very nice to gather some opinions and thoughts from relevant people in our field, and specially people involved with Open Source Software.</p>
<p>This time I was lucky enough to make an interview with <a href="http://chillenious.wordpress.com/" target="_blank">Eelco Hillenious</a> and <a href="http://martijndashorst.com/blog" target="_blank">Martijn Dashorst</a>, from <a href="http://wicket.apache.org" target="_blank">Apache Wicket</a>. I&#8217;m pretty happy with the results, and I hope you guys enjoy it too. On to the interview!</p>
<p><strong>Bruno Pereira: <em>How did you first get involved with Wicket?</em></strong></p>
<p><strong>Eelco Hillenious:</strong> At Topicus where I worked a few years ago, we had been looking for good web framework for a while to help us address the issues we had with scaling our developing effort. We were doing a couple of reasonably large projects using web MVC frameworks Struts and Maverick. The user interfaces were quite complex at times &#8211; they had things like nested tabs, wizards and paginated lists &#8211; and we had a hard time implementing them with those frameworks in a maintainable fashion. Also, we were bummed by the fact that we couldn&#8217;t reuse parts of what we did elsewhere in a project &#8211; search/ result panels for instance &#8211; and that we ended up with so much copy paste code and ad-hoc session usage. And for one of the projects, we were developing customer-specific variants. Again, we ran into the problem that it wasn&#8217;t easy to reuse elements of the user interface that we had developed elsewhere.</p>
<p>Another reason we were looking for alternatives for web development with Java is that we saw that colleagues who were using ASP.NET were faster and produced better maintainable code than we were with Java. They even had more fun doing it; pretty much everyone on the Java team hated to do the web work.</p>
<p>I started out evaluating JSF, which was by then nearing completion. In my experience however, one of the major problems with the way we were developing web applications was the fact that so much logic was put in templates. Not only does that make refactoring harder, it also means that you get thrown back to a procedural programming model where you can&#8217;t reap the benefits like static typing and encapsulation, etc. So I wasn&#8217;t to crazy about the role JSPs play(ed) in JSF. I did give JSF a serious look though. I read a book on it, walked through the source code and created a simple proof of concept. But the further I got with it, the more I hated it, up to the point that I simply didn&#8217;t want to put any of my spare time with it. I just didn&#8217;t like much of the architecture, and man, creating custom JSF components was even more work than creating custom JSP tags (which isn&#8217;t exactly the most elegant thing to code either).</p>
<p>After that I looked at Echo. I liked Echo. I still do in fact, even though I never actually worked with it. However, I didn&#8217;t think it would be a good choice for what we were doing, because it works with layout managers. As much as I like Swing coding, I actually prefer working with HTML/ CSS to Swing&#8217;s layout managers. Furthermore, I had this hope that one day we wouldn&#8217;t be translating Photoshop designs into screens ourselves, but rather have a designer creating mockups for us that we could use with minimal adjustments.</p>
<p>I also gave Tapestry (3) a serious look. I started reading Tapestry In Action, looked at the source code (which imho looked a lot better than JSF&#8217;s), and started experimenting. Halfway through the book, I had a big stack of &#8216;why?!&#8217;s. I could agree with the thoughts behind the concepts, but I didn&#8217;t agree with some of the solutions. Abstract classes, rewinding; it just had this stench of premature optimization to me. Still, I was ready to introduce Tapestry at Topicus, as I thought that it at least looked like an improvement for us. When I started talking to colleagues about this however, it turned out that some people had actually used it before and were quite unhappy with it. I would clearly make a couple of people unhappy by going through with it, so I didn&#8217;t.</p>
<p>A couple of months later &#8211; I kind of had given up for the moment &#8211; colleague Johan stormed into the office saying he found the framework we&#8217;ve been looking for: &#8220;Wicket&#8221;. It was (and is) centered around &#8216;Just Java&#8217; programming, with clean templates and reusable components. I remember we checked it out, had a simple example running in under an hour and were pretty much sold to the framework that same afternoon. Wicket was very rough, incomplete even, back then, but it had the core ideas right. It was still alpha code, but the code base looked very well engineered, and Wicket already worked well for the things we tested.</p>
<p>So we started building a prototype with Wicket. We had a fun few weeks, and we already agreed that this should be the framework that would give Topicus their competitive edge in the near future. We also felt we weren&#8217;t ready to be transformed to be ASP.NET coders just yet. But then Jonathan Locke &#8211; the inventor of Wicket &#8211; sent a message to the list that he was about to shut down the project because he accepted a job at Microsoft and it would be a conflict of interest for him to keep working on Wicket. That would have such a waste to let that happen! So I got Johan and Martijn in a room, and asked them if they wanted to help out and take Wicket over. We agreed to commit to at least a year of whatever it would take of our spare time to turn<br />
Wicket into a mature project suitable for Topicus, and hopefully with a viable community around it as well. We also invited Juergen and Chris to join us. They were already active on the list and had sent in a few good patches. The cooperation turned out great, and when Jonathan left Microsoft again a few months later (for unrelated reasons), we welcomed him back into a Wicket that was quickly approaching a 1.0 release and had a good core of early adopters.</p>
<p><strong>Martijn Dashorst:</strong> Mostly like Eelco&#8217;s answer, but from a different perspective: I was a Windows client developer used to build GUI&#8217;s with Borland&#8217;s VCL. Then I had to build web apps using Maverick and Velocity. I hated that experience and constantly asked myself: WHY is this so hard and so much work. Wicket salvaged me from this negative experience: it felt like returning to VCL programming and for the first time I enjoyed<br />
building web apps.</p>
<p><strong>BP:</strong> <strong><em>We have perhaps a hundred Java web frameworks, and Wicket was not among the first of them. However, I like to put Wicket in a separate class from the others, as it offers a new paradigm of web application development. How would you say Wicket fits in this field and what does it bring to Java web developers?</em></strong></p>
<p><strong>EH:</strong> Many of these alternatives are really flavors of the same model 2 ideas. In my opinion, there are basically these frameworks &#8211; Struts, WebWork, SpringMVC, whatever-the-flavor-of-the-day &#8211; and frameworks like Wicket but also GWT, Echo and Tapestry that really provide a different alternative.</p>
<p>Most web frameworks go through great lengths trying keep their users far away from regular Java programming. Wicket provides a programming model that stays as close to Java as it can, with all the advantages of static typing, encapsulation, etc.</p>
<p><strong>BP:</strong> <strong><em>JSF is perhaps Wicket&#8217;s strongest competitor (if there is such a thing), and it benefits from Sun&#8217;s support, good development tools and a huge set of avaiable components. How is Wicket evolving in terms of tooling support and avaiable components?</em></strong></p>
<p><strong>EH:</strong> Frankly, I think JSF isn&#8217;t doing so great when it comes to the availability of components. Much like the component market for ASP.NET, there is a lot of promise but not much delivery if you ask me. Yes, there are a bunch of component libraries out there, but they are often incompatible and are often quite monolithic. The latter is JSF&#8217;s fault really.</p>
<p>The fact that Wicket tries to make creating custom components as easy as possible (ideally, as easy as extending a class and maybe providing some markup that goes with it), makes that it is less relevant what<br />
components are out there. You want to have a good base set of components that are easy to extend and/ or customize, and hopefully people will create their own library of components that suit their particular needs.</p>
<p>That said, Wicket actually has an impressive range of custom components. Besides the decent number of components that are available as part of the core Wicket projects, there are a ton of projects in wicket-stuff (of varying quality, but there are a few real gems in there), and there are initiatives like DataBinder and InMethod that provide custom components.</p>
<p>But really the best way to go with Wicket in my opinion is to create a layer of base components for your project that look and behave exactly what you need. A little bit of work upfront, but it can save you a lot of work and maybe even code duplication later on.</p>
<p>FWIW, I don&#8217;t view JSF as our largest competitor in Java land; I would think that is GWT. There&#8217;s pros and cons to both GWT and Wicket, and I certainly think Wicket has an edge in some areas, but GWT is very cool conceptually, and from what I&#8217;ve seen it is very nicely done and even has tooling support that actually works.</p>
<p><strong>BP:</strong> <strong><em>We have seen many Ruby on Rails zealots claiming Java&#8217;s dead and that RoR is the next big thing. I&#8217;d like to know your thoughts on that. Can we consider ourselves Java&#8217;s orphans? <img src='http://brunopereira.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </em></strong></p>
<p><strong>EH:</strong> Nah. The hype is already sinking in, and you read more about infighting dramas than success stories nowadays. I&#8217;ve also heard several stories from developers who actually did do one or two serious RoR projects, and as much as they liked having quick results the first few weeks, they got into a mess later on. Basically, their code base grew, they got more people on the project, all with their own ideas of neat DSL-like constructs and gung-ho LOC saving tricks, and pretty soon no-one understood much of what was going in that code on any more. And some of those people actually did have real scaling problems.</p>
<p>Much of the critique on Java from the RoR camp (and others) was quite justified however, and I think J(2)EE can take much of the blame for that. You can develop quite &#8216;light&#8217; and practical with Java if you just ignore most of the heavy sounding advice you see on &#8216;enterprise development&#8217; and use your own brain instead. Unfortunately, the idea that the next step in productivity is dumbing down development by providing more wizards, drag and drop tools and servers that clean your house and do your shopping on the side is wide spread. To me, the most exiting thing about the whole RoR uproar was that it brought back the spot light on coding instead of big fancy tooling and servers.</p>
<p><strong>BP:</strong><em> <strong>I know several Wicket developers like Scala, which seems to be a very promising new language. Do you think it will become mainstream in a near future?  Will Wicket have something done in Scala?</strong></em></p>
<p><strong>EH:</strong> That&#8217;s hard to say. I like some of the ideas of Scala. It really looks like an incredible piece of work, and there are plenty of things in Scala that I&#8217;d love to work with today. It would make working with Wicket a lot more elegant, and it definitively would make my own code a lot nicer.</p>
<p>However. What almost everybody I spoken to about Scala says, is that Scala provides too much freedom, too many ways to achieve the same thing. They may be right. Part of me says, well, it would be great to have a language just for the experienced people who hopefully know how to use constructs with taste. But then again, I haven&#8217;t seen much actual Scala code or discussions on the Scala list that give me that warm fuzzy feeling. In fact, when I lurked on their list a while back, quite a number of the discussion were about how to make notations even shorter (and consequently less readable). Research says that the bulk of the cost of producing software comes &#8216;after version 1.0&#8242;, and that&#8217;s my own experience as well. Maintainable, understandable and predictable software is what we need, even if it means that you need to write out a few more lines. Less code is great for maintainability, but it needs to be readable at the very least.</p>
<p>Also, I firmly believe Scala needs a *very* good IDE to succeed. I&#8217;m a fan of good IDEs. I like the time they save me when looking at new code (code navigation, javadoc hoovers, code generation and completion). Without good IDE support for Scala, I&#8217;m simply more productive with Java, even though it means that I have to implement ugly workarounds for things that would have been easy and elegant with Scala. There are some initiatives for IDE support but I think that to get something really good, there has to be industry support. Maybe one of these days a vendor realizes how much of their effort they are wasting on JSF and see the potential in Scala.</p>
<p>Another thing Scala badly needs is a bunch of people who can sell it. The fact that RoR looked sexy from the start might have been quite an important factor in their success, and Scala currently is probably the un-sexiest looking framework on the planet. And that&#8217;s &#8216;just&#8217; a matter of community building really. I&#8217;m sure if people are interested in making Scala a success, they can find people to work on their image and get the name out there.</p>
<p>Anyway, we&#8217;ll see. I hope Scala can be a good counter to .NET on the long term; it could be the Java variant of F#, and maybe we&#8217;ll get our own taste of LINQ with it.</p>
<p><strong>BP:</strong> <strong><em>Wicket started as a project on Sourceforge, then it was incubated in Apache Software Foundation, and finally became an Apache top level project. I&#8217;d like you to comment on this process of joining the most respected open source foundation. How was this experience?</em></strong></p>
<p><strong>EH:</strong> It actually started as a project on codehaus. Unfortunately, we had problems getting commit rights after we wanted to take over from Jonathan, and after waiting for a few weeks, we decided to move the project to Sourceforge.</p>
<p>The experience was good. We had a couple of mentors who were great in guiding us through and backing us up with discussions.</p>
<p>What we got from moving to Apache is &#8211; amongst other things like image and stuff &#8211; that we are even more conscious about our community. I think we always had the proper open source attitude, which means so<br />
much that you try to get people to participate, take them seriously in discussions, and understand that it comes with a responsibility, but now we don&#8217;t have just our name to keep high, but also Apache&#8217;s name.<br />
Oh, and it was very nice to attend conferences and put some faces on the names of the people who have been slaving on their own cool projects.</p>
<p><strong>MD</strong>: Joining took longer than we expected, but Apache folks constantly remind me that Wicket was actually one of the fastest projects to go through the incubator. The slowness was really our own fault: we didn&#8217;t concentrate on getting out but were too caught up in maintaining three branches. When we axed one main development branch we were able to get out of the incubator in a couple of weeks.</p>
<p>Apache brings us a solid legal foundation to our code. Although this adds more ceremony to releasing and accepting new code made by third parties. I think it is worth the extra effort to have a solid legal foundation at the base of our code.</p>
<p>Another thing that Apache brings and one probably can only understand by experiencing it first hand is that Apache is a Community of projects &#8211; not a couple of projects sharing a server. There is a large difference between Apache and sourceforge, googlecode, java.net. The latter three are just servers with a lot of projects on them.</p>
<p><strong>BP:</strong> <strong><em>Wicket has a distributed development team, much like most open source projects. I&#8217;d like you to describe your development process, and how do you manage the community contributions.</em></strong></p>
<p><strong>EH:</strong> You can find all that on the Apache site! <img src='http://brunopereira.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  I would say every thing goes very bottom up. Everyone feels responsible to take up things, and activity of most people fluctuates. We have a large, very active community and there is lots of discussion, bug reports and patch submissions (though we can never have enough of those!) happening. We all have our own areas of the code base we like to work on, but in principal, anyone can work on anything. We don&#8217;t always do a lot of upfront discussing regarding fixes etc (unless of course, something isn&#8217;t clear to start with), but we all keep an eye on the commit logs, and you can regularly see a discussion start about a commit, sometimes resulting in rolling back or further tweaking the code. We&#8217;ve worked like that from the start, and I still think it works great.</p>
<p><strong>BP:</strong> <strong><em>You guys are finishing the writing of Wicket in Action, the second book on Wicket. I read the first seven chapters, and the book helped me a lot understanding some aspects of the framework. I&#8217;d like you to talk about the book experience, and how do you expect it to help Wicket&#8217;s adoption.</em></strong></p>
<p><strong>EH:</strong> The third book by now even! Kent Tong also wrote a book on Wicket.</p>
<p>I hope the publisher isn&#8217;t reading this, but I hate(d) writing the book. Martijn and I did it primarily for Wicket and it&#8217;s community, so that people would have some more ammo convincing their managers to adopt Wicket, and to give Wicket&#8217;s users a better understanding of how Wicket can be used successfully. Neither of us wrote a book before, and we figured, oh what the heck, it&#8217;s something to brag about in front of the grand kids when we&#8217;re 70. Well, we certainly hope the bragging will be good, and many people will benefit from reading it, because it was a lousy experience for us. It brought me back to high school, when I pretty much never did any of my home work (in fact, I would often skip school to work on my C64 programs), but still had enough of a conscience to feel guilty about it. Writing Wicket In Action was like that. I would put things off &#8211; hiking, making music, checking out bands &#8211; because I felt I had to reserve my evenings and weekends for writing. And often, in the end, I didn&#8217;t even get to do much because I was uninspired, or a friend showed up, or we had to do shopping or cleaning the house. And then I&#8217;d feel guilty again!</p>
<p>I would sum it up by saying that for me it felt like work, whereas coding on Wicket in my spare time felt like a hobby. If I would do it all over again, I would take a few months off and write during the days. That would probably make the whole thing acceptable (though coding is still much more fun).</p>
<p><strong>MD:</strong> One remark: don&#8217;t write a book in your spare time. Eelco and I have been writing this book for over 2 years now. This means: no hobbies for 2 years. Bringing laptops with you on vacations to write. Staying<br />
up until 2am writing and getting up at 7am because the day job also needs your attention. And all this for more than 2 years.</p>
<p>If I would have to do it again (which I doubt, my wife would kill me), I would do it full time instead of in the little hours after work.</p>
<p>The book itself is coming together quite nice. We have quite a lot of folks that help us with the book: our early access readers (THANK YOU!) and we have an excellent editorial team. Since Wicket has such a large surface area, I even use the book to learn more or look up things. So you can say it caters to both beginners and more experienced Wicket users.</p>
<p><strong>BP:</strong> <strong><em>Wicket recently released the 1.3 version, the first after becoming an Apache project. Could you provide us a vision of the current state and the future of the project?</em></strong></p>
<p><strong>EH:</strong> We are regularly discussing this on the list, and we&#8217;re currently working on Wicket 1.4.</p>
<p>1.3 is a solid release. 1.2 can be used in production environments just fine, but 1.3 is optimized in many ways, and we got most of our API streamlined in a fashion that should last for a few years now.</p>
<p>1.4 has a limited scope in that it only introduces generics and Wicket with a couple of other Java 5 features people have been wanting for a long time. 1.4 should be backwards compatible. You&#8217;ll just see plenty of warnings when you don&#8217;t use generics. So Wicket In Action should be good for 1.4 without adoption.</p>
<p>What we&#8217;ll do after that is open to debate. We definitively got the message from all the ex-Tapestry users that we should not go overboard with API changes between releases, so we&#8217;ll do our best to keep providing smooth upgrade paths between releases.</p>
<p>One thing we&#8217;ll probably look at is how to make controlling what URLs are generated even better. This is very flexible already, but a bit clunky at times.</p>
<p>Closures could make Wicket a lot nicer to work with as well. Though, considering that we just now switched to Java 5, that might take a while to get into the framework.</p>
<p>And who knows&#8230; if Scala gets good IDE support and a good sized following, I think it would be exiting to see what we could do with it in for Wicket. I think we could build on top of the Java version, and provide a thin framework that makes working with Wicket in Scala smooth.</p>
<p><strong>MD:</strong> The future will bring beautiful things. I expect us to work on better integration with JavaScript libraries and trying to implement the Yahoo rules for performance (merging javascript files into one to limit the number of http requests, etc). Versioning of JavaScript libraries is also something I like to see solved in the future. We are also going to take a good look at our unit testing framework: it is pretty solid but the API doesn&#8217;t feel Wicket like. I&#8217;d also like to integrate an animation framework into our Ajax implementation to<br />
enable effects when updating pages. I think that it currently is harder to do than strictly necessary.</p>
<p><strong>BP:</strong> <strong><em>Closing thoughts&#8230;</em></strong></p>
<p><strong>EH:</strong> Thanks for the interview! And download the first chapter of Wicket In Action for free at: http://www.manning.com/dashorst/; even if Wicket isn&#8217;t your thing, I hope it gives readers some background in the problems it tries to solve.</p>
<p><strong>MD:</strong> I know that a couple of Brazilian companies have adopted Wicket for their main development. I&#8217;d like to see a Brazilian community evolve and generate such events as we have in Europe (Amsterdam, London, Copenhagen) because I&#8217;d love to visit your country again <img src='http://brunopereira.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . If you are not a Wicket user, then check out our examples: http://wicketstuff.org/wicket13 or http://wicketstuff.org/wicket14 (may not be available now, but will in the future). Our community is very welcoming and active: join our user list to ask questions and<br />
help out. Join the dev list to help us make a framework you want to use. And if you don&#8217;t fancy email, you can join our irc channel that is always available: ##wicket at irc.freenode.net. Obrigado!</p>
<p>Well, if you read til this point, I hope you&#8217;ve enjoyed! Please leave your comments if you wish.</p>
]]></content:encoded>
			<wfw:commentRss>http://brunopereira.org/2008/07/06/interview-with-eelco-hillenious-and-martijn-dashorst-from-apache-wicket/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>10 principais barreiras para o sucesso do desktop Linux</title>
		<link>http://brunopereira.org/2008/03/29/10-principais-barreiras-para-o-sucesso-do-desktop-linux/</link>
		<comments>http://brunopereira.org/2008/03/29/10-principais-barreiras-para-o-sucesso-do-desktop-linux/#comments</comments>
		<pubDate>Sat, 29 Mar 2008 16:25:10 +0000</pubDate>
		<dc:creator>blpsilva</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[posts em português]]></category>
		<category><![CDATA[conectiva]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[knoppix]]></category>
		<category><![CDATA[kubuntu]]></category>
		<category><![CDATA[mandrake]]></category>
		<category><![CDATA[mandriva]]></category>
		<category><![CDATA[mepis]]></category>
		<category><![CDATA[pclinuxos]]></category>
		<category><![CDATA[red hat]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://blpsilva.wordpress.com/?p=115</guid>
		<description><![CDATA[Recentemente eu li um artigo muito interessante sobre as principais barreiras que dificultam o sucesso em massa do desktop Linux. Eu já uso Linux em casa desde 2003 e utilizei uma boa variedade de distribuições. Já usei distribuições baseadas em Debian, outras derivadas do Red Hat. Algumas utilizavam Gnome, outras KDE (meu preferido).
Entre as distribuições [...]]]></description>
			<content:encoded><![CDATA[<p>Recentemente eu li <a href="http://www.intranetjournal.com/articles/200803/pij_03_10_08a.html" target="_blank">um artigo muito interessante</a> sobre as principais barreiras que dificultam o sucesso em massa do desktop Linux. Eu já uso Linux em casa desde 2003 e utilizei uma boa variedade de distribuições. Já usei distribuições baseadas em <a href="http://www.debian.org" target="_blank">Debian</a>, outras derivadas do <a href="http://www.redhat.com" target="_blank">Red Hat</a>. Algumas utilizavam <a href="http://www.gnome.org" target="_blank">Gnome</a>, outras <a href="http://www.kde.org" target="_blank">KDE</a> (meu preferido).</p>
<p>Entre as distribuições que me lembro que já usei estão (em ordem mais ou menos cronológica): Conectiva, Red Hat, <a href="http://www.knoppix.com/" target="_blank">Knoppix</a>, Mandrake/Mandriva, Suse, <a href="http://www.ubuntu.com" target="_blank">Ubuntu</a>/<a href="http://www.kubuntu.org" target="_blank">Kubuntu</a>, <a href="http://www.mepis.org" target="_blank">Mepis</a> e Pc <a href="http://www.pclinuxos.com/" target="_blank">LinuxOS</a>. De uma maneira geral a minha distribuição preferida é o Kubuntu, pois faço questão do KDE e de uma maneira geral o Ubuntu/Kubuntu é a distribuição melhor suportada para a maioria das coisas que você for usar. Após esta experiência em variadas distribuições, pude conhecer o suficiente sobre Linux para saber me virar bem em qualquer versão que eu tenha que usar.</p>
<p>Recentemente a Globo.com migrou os desktops dos desenvolvedores para Linux. Eu já estou usando Linux no trabalho há quase 1 ano, mas as pessoas em geral receberam seus desktops novos com Linux no começo desse ano. Grande parte das pessoas ainda não havia usado Linux como desktop, conhecendo apenas algumas coisas de linha de comando pela experiência de acessar nossos servidores. Com isso, tenho tentado ajudar da melhor forma possível para que a transição deles seja suave. Eu gosto muito de Linux e quero que sua adoção cresça e que as pessoas em geral tenham uma boa experiência de uso.</p>
<p>Apesar de gostar bastante e utilizá-lo quase em tempo integral, não sou do tipo fanático que só vê vantagens. Há algumas coisas que incomodam razoavelmente se você não souber contorná-las, e um novo usuário freqüentemente encontra dificuldades com isso. Como este artigo que mencionei aborda de forma bem interessante estas barreiras comuns, listarei-as aqui e deixarei meus comentários.</p>
<p><b>1 &#8211; Consistência e percepção:</b> com a enorme variedade de distribuições disponíveis, os usuários têm uma enorme liberdade de escolha. Entretanto, isso também traz a característica de que as coisas mudam muito de uma distribuição para a outra. Se você sabe como usar ou configurar alguma coisa em uma determinada distribuição, isto não garante que você conseguirá fazer a mesma coisa em outra distro. A facilidade de uso de uma distribuição para a outra varia bastante. Isto sem dúvida dificulta que um usuário experiente ajude um iniciante, caso a distribuição seja diferente. Como o Windows é uma coisa só, a interface e as configurações não mudam quase nada de um usuário pro outro. Isso facilitou muito a adoção em massa, e usuários novos conseguem rapidamente aprender com usuários experientes. Embora isto possa incomodar os puristas, eu acho que o Linux teria bem mais chances de sucesso se em vez de centenas de distribuições, tivéssemos umas 3 ou 4 no máximo, e os esforços ficassem concentrados nestas.</p>
<p><b>2 &#8211; Fraco suporte a dispositivos móveis:</b> com pouquíssimas exceções, sincronizar dispositivos móveis no Linux é pauleira. Enquanto isto não for tão simples quanto usar um pen drive, esta barreira complicará muito o uso do Linux por usuários comuns. Eu sei que sincronizar um celular ou PDA é bem mais difícil de implementar do que acessar um pen drive, mas o usuário final não quer saber disso quando escolhe um sistema operacional para usar.</p>
<p><b>3 &#8211; Encontrar software compatíveis ao mudar de SO é difícil:</b> é claro que existe muito mais software para Windows do que para Linux. A maioria dos softwares possui equivalentes no Linux, mas a qualidade destes substitutos varia muito. Usuário não-técnicos vão relutar muito em trocar o Office pelo Open Office. Apesar de eu conseguir usar tranqüilamente o Open Office em geral, os formatos amplamente aceitos ainda são os da Microsoft. Tentar usar o Open Office para modificar arquivos do Word ou Excel pode trazer muitas dores de cabeça, especialmente se você precisar salvar no formato Office original. Existe o Crossover Office que suporta muito bem o Office no Linux, mas ele não é gratuito e pouca gente conhece. Ainda temos muito que avançar nesta área.</p>
<p><b>4 &#8211; Problemas com wireless:</b> é vastamente sabido que utilizar dispositivos wireless em geral no Linux é muito complicado ainda, e dependendo do seu hardware e distribuição, isto pode ser muito tranqüilo ou um pesadelo. Os procedimentos de contorno disso variam muito de uma distribuição para a outra, e um usuário comum dificilmente vai saber se virar com isso. Probleminha complicado também.</p>
<p><b>5 &#8211; Listas de compatibilidade de hardware:</b> alguns fabricantes principais de hardware já suportam muito bem o Linux e isto vem melhorando rapidamente. Para a grande maioria dos componentes já é possível usar tudo perfeitamente no Linux, mas caso você tenha algum modelo não muito comum, pode ter problemas. Além disso, é difícil saber previamente se tudo vai funcionar antes de você tentar. Os CDs bootáveis ajudam muito nisso, permitindo que você teste previamente seu hardware antes de instalar em disco. Este problema eu acredito que muito em breve deixará de ser considerado.</p>
<p><b>6 &#8211; Necessidade de compilar novos módulos de drivers:</b> caso você precise instalar um novo driver no Windows, basicamente você usa um instalador com Next -&gt; Next -&gt; Next. No Linux, você pode precisar compilar o driver, e isto é bem enjoado. Eu lembro que quando comecei a usar Linux em casa, algumas distribuições não vinham nem com módulo de USB ativo. Eu já tive que compilar e configurar módulo de USB para conseguir usar pen drives e câmeras digitais. Isto é muito chato, mas felizmente hoje em dia acontece muito pouco. Exceto em casos muito específicos você nunca precisará mais fazer isso, e acho que já podemos deixar esse problema em segundo plano.</p>
<p><b>7 &#8211; Sério interesse comercial:</b> boa parte das empresas não-técnicas ainda não se importam muito com Linux. Com isso, ainda é freqüente termos que nos virar para conseguirmos reproduzir formatos proprietários de música, vídeo e outras coisas. As empresas em si não disponibilizam codecs pra Linux na maioria dos casos. Eles são desenvolvidos de forma open source, e em alguns casos o suporte ainda é ruim. Acho que daqui a uns 2 ou 3 anos já teremos uma parcela suficiente de usuários não-Windows para que esta postura mude. Enquanto o Windows tem mais de 90% do mercado, financeiramente não é tão fácil convencer diretorias de empresas a investir em outros sistemas operacionais. Se conseguirmos ter algo entre 15 e 20% dos usuários com Linux e Mac, a coisa já muda um pouco de figura, e o suporte melhorará.</p>
<p><b>8 &#8211; Software prontamente disponível:</b> os usuários de Windows estão acostumados a encontrar os softwares para instalar na internet, baixar o instalador e Next -&gt; Next -&gt; Next. No Linux isto é diferente, <a href="http://blpsilva.wordpress.com/2007/11/30/formas-de-instalacao-de-software-em-linux/" target="_blank">como já falei previamente</a>. As pessoas estranham inicialmente o conceito de repositórios de pacotes, mas isso na verdade facilita bastante os usuários depois que eles aprendem isso. Este problema será reduzido à medida que mais empresas comecem a adotar Linux. Usuários iniciantes serão capazes de aprender isso rapidamente com usuários experientes, e daqui a algum tempo esta diferença já deve ser vista até como um ponto forte do Linux.</p>
<p><b>9 &#8211; Workarounds vs. correções de bugs:</b> as distribuições variam muito em termos de agilidade de uma para a outra. Algumas oferecem o que há de mais recente em termos de software para os usuários, mas isto os expõe também a mais bugs. Como estas distribuições são mais populares, rapidamente surgem formas conhecidas de contornar os problemas, antes de saírem as correções dos bugs. Outras distribuições (como Debian e Slackware) colocam apenas versões altamente testadas e maduras em seus lançamentos. Os usuários ficam com software defasado, mas muito mais estável. Devido a este fato, algumas distribuições são muito mais usadas em desktops, e outras muito mais comuns em servidores. O kernel do linux e seus princiais módulos são muito, muito estáveis e confiáveis. Já os software gráficos e de uso por usuários finais têm qualidade bem inferior. Temos aplicações de alta qualidade (como as que fazem parte das suites do KDE e Gnome), mas também temos softwares cheios de bugs que podem prejudicar a usabilidade. Ao longo do tempo a qualidade vai melhorando, e para a maioria dos softwares usados por pessoas comuns os bugs são poucos.</p>
<p><b>10 &#8211; Evangelistas e puristas:</b> algumas pessoas têm uma visão pragmática e realista quanto ao Linux, e enxergam claramente suas qualidades, mas também as falhas. Outras simplesmente acham que é a melhor coisa do mundo para todos, sem analisar as dificuldades que pessoas comuns enfrentam. Precisamos ter uma postura madura em relação a software. Não podemos &#8220;nos apaixonar cegamente&#8221; por nada. Se enxergamos os pontos onde o Linux precisa melhorar e discutirmos eles abertamente, será muito mais fácil progredir. Entrar em flame wars de Linux x Windows é perda de tempo e energia. Cada um tem suas vantagens, e as pessoas podem ter opiniões e gostos diferentes. É ótimo que existam os 2, pois a concorrência ajuda a elevar o nível geral dos sistemas.</p>
<p>Torço muito para que o Linux continue evoluindo bastante e que em breve tenhamos cada vez mais facilidade para usá-lo. Posso dizer que desde 2003 quando comecei a usar, ele já melhorou e muito. Não dá nem pra comparar a situação atual com a de 2003. Estamos num patamar muito superior.</p>
<p>O mesmo eu não posso dizer do Windows. Em 2003 o Windows XP já estava amplamente disponível e as pessoas já o conheciam bem. Eu gosto bastante do Windows XP, ele é um ótimo sistema operacional. Já a sua &#8220;evolução&#8221;, o Windows Vista, pra mim é uma porcaria. Eu não consigo usá-lo. É muito mais pesado que o Windows XP e não me trouxe nenhuma vantagem. Eu já instalei ele em casa e ele veio no meu notebook, mas eu já voltei para o Windows XP em todas as máquinas que tiveram o Vista. Por mim eu simplesmente pulo a atualização pro Vista e espero por uma nova versão do Windows que venha depois. Muita gente compartilha desta opinião, então a Microsoft precisa trabalhar bastante.</p>
<p>Com o crescimento da adoção de open source, acho que aos poucos o Windows terá seu domínio reduzido, embora ainda deva continuar dominando por muitos anos. Acho que o Linux está bem encaminhado e evoluindo bastante na comparação com o Windows. Vamos torcer para que ambos evoluam bastante ao longo do tempo, pois assim todos nós ganhamos. E chega de flame wars, por favor <img src='http://brunopereira.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://brunopereira.org/2008/03/29/10-principais-barreiras-para-o-sucesso-do-desktop-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mod_rewrite</title>
		<link>http://brunopereira.org/2008/03/11/mod_rewrite/</link>
		<comments>http://brunopereira.org/2008/03/11/mod_rewrite/#comments</comments>
		<pubDate>Wed, 12 Mar 2008 01:09:19 +0000</pubDate>
		<dc:creator>blpsilva</dc:creator>
				<category><![CDATA[open source]]></category>
		<category><![CDATA[posts em português]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[apache software foundation]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[rest]]></category>

		<guid isPermaLink="false">http://blpsilva.wordpress.com/?p=106</guid>
		<description><![CDATA[Hoje assisti a um Tech Talk bem interessante na Globo, sobre mod_rewrite. Além de funcionalidades interessantes deste módulo do Apache, as discussões na apresentação me trouxeram vários questionamentos de como incluir de forma mais ativa o Apache em uma arquitetura RESTFul.
Eu já utilizei bastante o Apache na remota época em que eu desenvolvia algumas coisas [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje assisti a um Tech Talk bem interessante na Globo, sobre mod_rewrite. Além de funcionalidades interessantes deste módulo do Apache, as discussões na apresentação me trouxeram vários questionamentos de como incluir de forma mais ativa o Apache em uma arquitetura RESTFul.</p>
<p>Eu já utilizei bastante o Apache na remota época em que eu desenvolvia algumas coisas em Php. Na verdade não fazia nada de muito sofisticado, mas tinha boa familiaridade com os módulos, com a configuração, essas coisas. Depois que foquei mais no uso de servidores de aplicação Java, deixei o Apache em segundo plano. Praticamente só vinha usando o Apache para servir conteúdo estático, e claro, nele também ficam configurados os conectores para comunicação com os servidores de aplicação.</p>
<p>Como tenho trabalhado bastante com web services REST, venho tentando explorar ao máximo os recursos do HTTP para elaborar protocolos de comunicação concisos e intuitivos. Neste sentido, o Apache oferece recursos muito interessantes. Por exemplo, quando utilizamos URIs no formato /usuario/123456/item/25 para representar um determinado item de um determinado usuário, a resposta a esta requisição é cacheável pelo Apache. Entretanto, ao utilizar URIs neste formato você precisa definir uma forma de fazer o parsing da URI para pegar os parâmetros relevantes.</p>
<p>No meu artigo de REST da Java Magazine de Abril eu usei o StringTokenizer do JDK para fazer a quebra da URI e pegar os valores que me interessavam. A JSR-311 define uma forma bem interessante de fazer isso com annotations também. E hoje fui descobrir que o mod_rewrite também pode fazer facilmente a quebra de URIs neste formato em URIs com parâmetros em query string por exemplo.</p>
<p>Uma utilização inteligente do cache do servidor web e de módulos de proxy também pode tornar a arquitetura da aplicação bem eficiente e reduzir bastante a carga sobre os servidores de aplicação. Se eu posso utilizar diretamente o cache do Apache para várias URIs, não vale a pena deixar as requisições chegarem ao container de servlets, mesmo que ele responda também com dados em cache.</p>
<p>Vendo o poder e a facilidade de uso de alguns módulos do Apache, me sinto obrigado a ter total familiaridade com ele novamente. Aos poucos irei estudando e integrando os módulos do Apache à arquitetura das minhas aplicações REST, pois isto pode trazer um belo ganho de performance e escalabilidade. Afinal de contas, quem quer explorar a fundo os recursos do HTTP não pode abrir mão de explorar a fundo um servidor tão confiável e maduro como o Apache, não é mesmo?</p>
<p>OBS: uns anos atrás eu dizia pra mim mesmo que o dia que eu conhecesse pelo menos vagamente metade dos projetos na home da Apache Software Foundation eu já teria uma boa bagagem. Hoje em dia já conheço mais da metade do projetos da home, e admiro cada vez mais esta fundação. O mundo open source não chegaria aos pés do que é hoje sem a existência da ASF. Um belo exemplo de qualidade em software!</p>
]]></content:encoded>
			<wfw:commentRss>http://brunopereira.org/2008/03/11/mod_rewrite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jersey meets Abdera</title>
		<link>http://brunopereira.org/2008/02/06/jersey-meets-abdera/</link>
		<comments>http://brunopereira.org/2008/02/06/jersey-meets-abdera/#comments</comments>
		<pubDate>Wed, 06 Feb 2008 03:19:53 +0000</pubDate>
		<dc:creator>blpsilva</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[posts em português]]></category>
		<category><![CDATA[abdera]]></category>
		<category><![CDATA[apache abdera]]></category>
		<category><![CDATA[atom]]></category>
		<category><![CDATA[atom publishing protocol]]></category>
		<category><![CDATA[atompub]]></category>
		<category><![CDATA[ibm]]></category>
		<category><![CDATA[jersey]]></category>
		<category><![CDATA[mulesource]]></category>
		<category><![CDATA[Sun]]></category>

		<guid isPermaLink="false">http://blpsilva.wordpress.com/?p=79</guid>
		<description><![CDATA[Talvez os dois mais promissores projetos atualmente sendo desenvolvidos na área de web services Rest são o Apache Abdera e o Jersey. O Apache Abdera oferece uma API para manipulação de conteúdo no formato Atom, e é bastante útil para implementações baseadas no Atom Publishing Protocol. Já o Jersey é a implementação de referência da [...]]]></description>
			<content:encoded><![CDATA[<p>Talvez os dois mais promissores projetos atualmente sendo desenvolvidos na área de web services Rest são o <a href="http://incubator.apache.org/abdera/" target="_blank">Apache Abdera</a> e o <a href="https://jersey.dev.java.net/" target="_blank">Jersey</a>. O Apache Abdera oferece uma API para manipulação de conteúdo no formato Atom, e é bastante útil para implementações baseadas no Atom Publishing Protocol. Já o Jersey é a implementação de referência da <a href="http://jcp.org/en/jsr/detail?id=311" target="_blank">JSR-311</a>, que mencionei num <a href="http://brunopereira.org/2008/01/31/jsr-311-java-api-for-restful-web-services/" target="_blank">post recente</a> aqui no blog.</p>
<p>Os 2 projetos são complementares, já que as funcionalidades de ambos não tem muitas interseções. Ontem o Marc Hadley, um dos principais desenvolvedores do Jersey <a href="http://weblogs.java.net/blog/mhadley/archive/2008/02/integrating_jer_2.html" target="_blank">postou</a> sobre um desenvolvimento que ele está fazendo, usando o Jersey e o Abdera em um projeto de web services Restful. No post do Marc Hadley ele menciona que utilizou os recursos HTTP do Jersey (como mapeamento de URIs em classes e métodos e a capacidade de manipular diversos content-types) juntamente com as funcionalidades do Abdera de manipulação de recursos Atom.</p>
<p>Esta iniciativa foi muito bem recebida pelo <a href="http://www.snellspace.com/wp/" target="_blank">James Snell</a> e pelo <a href="http://netzooid.com/blog/" target="_blank">Dan Diephouse </a>(fundador do XFire), que são os principais desenvolvedores do Apache Abdera. O desenvolvimento destes dois projetos vem trazendo enorme amadurecimento aos web services REST e hoje já é possível desenvolver web services neste formato com grande produtividade e poder.</p>
<p>Claro que os projetos ainda estão em um estágio intermediário de desenvolvimento, mas é deles que virá a adoção mainstream com maturidade desta linha de serviços. Estou acompanhando continuamente o que está sendo feito nesta área, e o que já pude ver até agora é fascinante.</p>
<p>A propósito, os dois projetos são open source e os principais envolvidos fazem parte de empresas como a IBM, Sun, Mulesource, entre outras. O desenvolvimento de software open source é hoje em dia a principal forma de desenvolvimento da vanguarda da tecnologia mundial. As empresas já perceberam o sucesso do movimento e estão apoiando firmemente o mesmo. Não posso deixar de registrar minha profunda satisfação com isso. <img src='http://brunopereira.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://brunopereira.org/2008/02/06/jersey-meets-abdera/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

