<?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>CØdeZØne! &#187; jruby</title>
	<atom:link href="http://leandrosilva.com.br/category/jruby/feed/" rel="self" type="application/rss+xml" />
	<link>http://leandrosilva.com.br</link>
	<description>Coisas sobre desenvolvimento de software</description>
	<lastBuildDate>Mon, 23 Aug 2010 13:04:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Você pode ter o seu próprio GitHub</title>
		<link>http://leandrosilva.com.br/2009/06/02/voce-pode-ter-o-seu-proprio-github/</link>
		<comments>http://leandrosilva.com.br/2009/06/02/voce-pode-ter-o-seu-proprio-github/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 17:34:32 +0000</pubDate>
		<dc:creator>Leandro Silva</dc:creator>
				<category><![CDATA[github]]></category>
		<category><![CDATA[jetty]]></category>
		<category><![CDATA[jruby]]></category>

		<guid isPermaLink="false">http://leandrosilva.com.br/?p=348</guid>
		<description><![CDATA[Quem é que &#8220;não&#8221; conhece e adora o GitHub? Com certeza o número de pessoas que respondem &#8220;sim&#8221; a está pergunta só tem diminuido, porque o GitHub cresce em popularidade e sucesso a cada dia. Também pudera, né? Bem, mas indo direto ao assunto, a novidade que fiquei sabendo hoje é que agora é possível [...]]]></description>
			<content:encoded><![CDATA[<p>Quem é que &#8220;não&#8221; conhece e adora o <a href="http://github.com" target="_blank">GitHub</a>? Com certeza o número de pessoas que respondem &#8220;sim&#8221; a está pergunta só tem diminuido, porque o GitHub cresce em popularidade e sucesso a cada dia. Também pudera, né?</p>
<p>Bem, mas indo direto ao assunto, a novidade <a href="http://twitter.com/AkitaOnRails/status/2003307588" target="_blank">que fiquei sabendo hoje</a> é que agora é possível para qualquer empresa ter sua própria instalação de GitHub.</p>
<p><a href="http://fi.github.com/"><img class="aligncenter" src="http://fi.github.com/images/modules/overview/firewall.png" alt="" width="365" height="249" /></a></p>
<p><a href="http://fi.github.com/" target="_blank">GitHub:FI</a> é o novo produto que a moçada da <span id="profile_company"><a href="http://logicalawesome.com/" target="_blank">Logical Awesome</a> está colocando no mercado. Ele é basicamente o mesmo bom e <span style="text-decoration: line-through;">velho</span> jovem GitHub de sempre, mas instalado na infra-estrutura privada da sua empresa, rodando sobre <a href="http://jruby.codehaus.org" target="_blank">JRuby</a> + <a href="http://www.mortbay.org/jetty" target="_blank">Jetty</a> em vez do clássico <a href="http://www.ruby-lang.org" target="_blank">Ruby</a> + <a href="http://mongrel.rubyforge.org" target="_blank">Mogrel</a>.</span></p>
<p><span>Você pode saber mais no <a href="http://github.com/blog/441-announcing-github-fi" target="_blank">post oficial</a> de anúncio dele.<br />
</span></p>
<p><span>Taí, mais um ponto para o JRuby! \o/<br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://leandrosilva.com.br/2009/06/02/voce-pode-ter-o-seu-proprio-github/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sua gem funciona bem com JRuby?</title>
		<link>http://leandrosilva.com.br/2009/06/02/sua-gem-funciona-bem-com-jruby/</link>
		<comments>http://leandrosilva.com.br/2009/06/02/sua-gem-funciona-bem-com-jruby/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 12:53:08 +0000</pubDate>
		<dc:creator>Leandro Silva</dc:creator>
				<category><![CDATA[jruby]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://leandrosilva.com.br/?p=339</guid>
		<description><![CDATA[Acabei de ler no post Notícias do Front #5 do Fábio Akita uma notícias que me deixou muito feliz: is it jruby? – recentemente a Brightbox lançou o site is it ruby 1.9?, onde a comunidade poderia testar gems e dizer nesse site se ela é ou não compatível, em seus testes, com o ruby [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://isitjruby.com"><img class="alignleft" src="http://isitjruby.com/images/misc/logo.png" alt="" width="216" height="55" /></a></p>
<p>Acabei de ler no post <a href="http://www.akitaonrails.com/2009/06/01/not-cias-do-front-5" target="_blank">Notícias do Front #5</a> do <a href="http://www.akitaonrails.com" target="_blank">Fábio Akita</a> uma notícias que me deixou muito feliz:</p>
<blockquote><p><em><a href="http://isitjruby.com/">is it jruby?</a> – recentemente a Brightbox lançou o site <a href="http://isitruby19.com/">is it ruby 1.9?</a>, onde a comunidade poderia testar gems e dizer nesse site se ela é ou não compatível, em seus testes, com o ruby 1.9. Agora foi lançado mais uma com o mesmo objetivo mas desta vez para avaliar a compatibilidade de gems com o jruby. Mais e mais a comunidade está se conscientizando que as gems precisam receber mais tratamento para ficarem compatíveis com múltiplas virtual machines. Isso é muito bom e espero que todos colaborem.</em></p></blockquote>
<p>Isto porque sou usuário de <a href="http://kenai.com/projects/jruby/pages/Home" target="_blank">JRuby</a> e volta e meia tenho problema com alguma gem que não funciona com ele, por conta de extensões nativas em C.</p>
<p>Então, por caridade, quando fizer uma gem, veja se ela funciona bem com JRuby também. <img src='http://leandrosilva.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://leandrosilva.com.br/2009/06/02/sua-gem-funciona-bem-com-jruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Entrevista com Ola Bini: Ioke, JVM, .NET e mais!</title>
		<link>http://leandrosilva.com.br/2009/04/28/entrevista-com-ola-bini-ioke-jvm-net-e-mais/</link>
		<comments>http://leandrosilva.com.br/2009/04/28/entrevista-com-ola-bini-ioke-jvm-net-e-mais/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 03:34:35 +0000</pubDate>
		<dc:creator>Leandro Silva</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[ioke]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jruby]]></category>

		<guid isPermaLink="false">http://leandrosilva.com.br/?p=309</guid>
		<description><![CDATA[Quem me conhece há algum tempo ou acompanha este meu blog, sabe que eu sou totalmente meio fissurado por linguagens de programação. Sempre estou dando uma olhada em uma aqui e outra ali. Lendo, fuçando&#8230; Mas tem um cara que com certeza é ainda muito mais fissurado em linguagens de programação do que eu - [...]]]></description>
			<content:encoded><![CDATA[<p>Quem me conhece há algum tempo ou acompanha este meu blog, sabe que eu sou <span style="text-decoration: line-through;">totalmente</span> meio fissurado por linguagens de programação. Sempre estou dando uma olhada em uma aqui e outra ali. Lendo, fuçando&#8230;</p>
<p>Mas tem um cara que com certeza é ainda muito mais fissurado em linguagens de programação do que eu <em>- e diferente de mim, manja pra caramba.</em> Esse cara é o <a href="http://olabini.com" target="_blank">Ola Bini</a>, membro do core team do <a href="http://www.jruby.org" target="_self">JRuby</a>, consultor da <a href="http://www.thoughtworks.com/" target="_blank">ThoughtWorks</a>, escritor do livro <a href="http://www.amazon.com/Practical-JRuby-Rails-Web-Projects/dp/1590598814" target="_blank">JRuby on Rails</a>, membro do <a href="http://jcp.org/en/jsr/detail?id=292" target="_blank"><em>expert group</em> da JSR-292</a> e criador da linguagem <a href="http://ioke.org/" target="_blank">Ioke</a>.</p>
<p>Bem, como não podia deixar de ser, eu resolvi fazer uma pequena entrevista com ele sobre Ioke, linguagens para a <a href="http://www.java.com/pt_BR/download/faq/jvm.xml" target="_blank">JVM</a> e a <a href="http://www.microsoft.com/NET/" target="_blank">Microsoft CLR</a>, e uma coisinha ou duas mais. Confira!</p>
<div class="wp-caption aligncenter" style="width: 510px"><a href="http://www.akitaonrails.com/2008/11/22/rails-podcast-brasil-qcon-special-ola-bini-jruby-ioke" target="_blank"><img title="Ola Bini e o nosso patrício Fábio Akita (QCon 2008)" src="http://www.akitaonrails.com/assets/2008/11/22/DSC05872.JPG" alt="Ola Bini e nosso compatriota Fábio Akita" width="500" height="426" /></a><p class="wp-caption-text">Ola Bini e o nosso patrício Fábio Akita (QCon 2008)</p></div>
<p><strong>Fale-nos um pouco sobre sua paixão por linguagens de programação. Quando isto começou? O que mais te motivou?<br />
</strong><br />
Oh wow. Boa pergunta. Eu não sei quando isto começou. Em algum momento obscuro do passado &#8211; muito longe para me lembrar. =)</p>
<p>Eu comecei bem cedo, com Basic no Apple IIc. Fiz muito C e assembler na minha adolecencia, e então, aprendi C++, Java e Lisp.</p>
<p>Penso que minha atual facinação por linguagens começou quanto eu percebi como diferentes linguagens são e como muitas coisas ruins são usadas. Esta percepção levou algum tempo, mas ficou cada vez maior.</p>
<p>Eu comecei com a implementação de outra linguagem há 5-6 anos atrás.</p>
<p><strong>Além de contribuir com o projeto JRuby, você também criou a linguagem Ioke <em>do zero</em>. O que você tem a dizer sobre a JVM com plataforma para outras linguagens (além da linguagem Java)?<br />
</strong><br />
Sim. Então, a JVM é uma excelente plataforma para linguagens. Você tem um <a href="http://en.wikipedia.org/wiki/Java_Virtual_Machine" target="_blank">JIT</a> muito maduro no <a href="http://en.wikipedia.org/wiki/HotSpot_(Java)" target="_blank">Hotspot</a>. Você tem <a href="http://www.ibm.com/developerworks/java/library/j-jtp11253/" target="_blank"><em>garbage collectors</em></a> fantásticos; e você tem um monte de bibliotecas e ferramentas disponíveis. A parte ruim é que a JVM atualmente está muito amarrada a linguagens que se parecem com Java, no nível do <em>bytecode</em>. É possível contornar isto, e nós estamos trabalhando na <a href="http://jcp.org/aboutJava/communityprocess/edr/jsr292/index.html" target="_blank">JSR292</a> para dar suporte a invocações dinâmicas na JVM.</p>
<p>Mas atualmente a JVM ainda está um bocado ligada a linguagens como Java. Isto não é necessário a tudo (muitas das tecnologias Java começaram em <a href="http://pt.wikipedia.org/wiki/Smalltalk" target="_blank">Smalltalk</a> e <a href="http://en.wikipedia.org/wiki/Strongtalk" target="_blank">Strongtalk</a>).</p>
<p><strong>Você acredita que a linguagem Java está caminhando para se tornar em uma linguagem de infra-estrutura? (Uma linguagem para escrever linguagens e outros componentes críticos de infra-estrutura.)<br />
</strong><br />
Espero que sim. Java não é uma boa linguagem para escrever aplicações &#8211; ela é realmente muito baixo nível.</p>
<p><strong>Sobre Ioke. O que levou você a começar o projeto desta linguagem? Onde você pensa chegar com ela? O que você planeja para o futuro de Ioke?<br />
</strong><br />
Basicamente, a ideia com Ioke é ver o quão expressiva você pode fazer uma linguagem; e isto é o que tenho feito. Isto tem dado características linguísticas bastante avançadas; você pode fazer coisas nela que muitas pessoas inicialmente tem problemas para entender &#8211; mas ela permite você escrever código bastante sucinto e legível, que capture suas intenções.</p>
<p>O que acontecerá exatamente no futuro está no ar. Tenho muitas idéias, mas nada concreto no momento.</p>
<p><strong>Recentemente, você também portou a linguagem Ioke para a Microsoft CLR. O que te motivou a fazer isto? O que você pensa sobre a plataform Microsft .NET como plataforma host para novas linguagens?<br />
</strong><br />
Sim! Eu fiz isto porque não queria que Ioke fosse somente uma linguagem da JVM. Queria ver como a CLR funcionaria para implementa-la e queria amplicar um pouco a base de usuário. A plataforma .NET é mais ou menos tão boa quanto a JVM. Algumas coisas são piores, outras são melhores.</p>
<p><strong>O que você recomenda a aqueles que gostariam de, como você, serem designers de linguagens para a JVM? Esta recomendação seria mais ou menos a mesma para a plataforma .NET?<br />
</strong><br />
Há duas coisas que você precisa fazer. A primeira é ter uma boa idéia de como diferentes linguagens funcionam. Você precisa aprender linguagens de diferentes paradigmas e tentar entender como elas podem ser implementadas. Então, você precisa começar a fazer. Esta é a parte mais importante.</p>
<p>Comece realmente a implementar e ver o que acontece.</p>
<p><strong>Finalmente, sinta-se à vontade para dizer o que quiser sobre Ioke.</strong></p>
<p>Ela é muito &#8220;louca&#8221;. Ela é expressiva. Ela é muito lenta.</p>
<p>Penso que esta coisa de expressividade vai ser importante no futuro &#8211; já que nós estamos fazendo coisas mais e mais avançadas. Texto não escala<strong></strong> se não podemos ter uma abstração estrutural<strong> (1)</strong>. Ioke permite isto.</p>
<h5><strong><em>(1) N.T.: O que o Ola Bini quis dizer é que &#8220;texto, por si só, não pode ir a um nível superior, não pode evoluir, crescer, se não pudermos ter uma abstração estrutural sobre ele&#8221;. <img src='http://leandrosilva.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
</em></strong></h5>
]]></content:encoded>
			<wfw:commentRss>http://leandrosilva.com.br/2009/04/28/entrevista-com-ola-bini-ioke-jvm-net-e-mais/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Ruby + Rails no mundo Real 2009: Como foi?</title>
		<link>http://leandrosilva.com.br/2009/04/05/ruby-rails-no-mundo-real-2009-como-foi/</link>
		<comments>http://leandrosilva.com.br/2009/04/05/ruby-rails-no-mundo-real-2009-como-foi/#comments</comments>
		<pubDate>Sun, 05 Apr 2009 15:16:36 +0000</pubDate>
		<dc:creator>Leandro Silva</dc:creator>
				<category><![CDATA[eventos]]></category>
		<category><![CDATA[glassfish]]></category>
		<category><![CDATA[jruby]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://leandrosilva.com.br/?p=271</guid>
		<description><![CDATA[Ontem aconteceu aqui em São Paulo o primeiro evento do GURU-SP, com co-participação da Tempo Real Eventos. Eu estive por lá e vou dizer - sob a minha ótica, claro - como é que foi. Preço O preço foi bem razoável para quem comprou antecipadamente, R$ 69,00; mas um pouco carinho para quem comprou na [...]]]></description>
			<content:encoded><![CDATA[<p>Ontem aconteceu aqui em São Paulo o primeiro evento do <a href="http://www.guru-sp.com/" target="_blank">GURU-SP</a>, com co-participação da <a href="http://www.temporealeventos.com.br/" target="_blank">Tempo Real Eventos</a>. Eu estive por lá e vou dizer <em>- sob a minha ótica, claro -</em> como é que foi.</p>
<p><strong>P</strong><strong>reço</strong></p>
<p>O preço foi bem razoável para quem comprou antecipadamente, R$ 69,00; mas um pouco carinho para quem comprou na hora, R$ 129,00.</p>
<p><strong>Local</strong></p>
<p>O local, em geral, foi bom. Perto do metrô, pra quem foi de condução; estacionamento a R$ 10,00, pra quem foi de carro; opções de almoço perto não faltaram; o auditório acomodou todo mundo; o ar condicionado estava na medida certa; e o coffe-break, apesar de bem simples, também atendeu. No entanto <strong>não havia WI-FI</strong>. Isso foi realmente decepcionante, porque evento de programação, sem WI-FI pra galera que levou note, é russo.</p>
<p><strong>Palestras</strong></p>
<p>As palestras, sinceramente, me decepcionaram um pouco. Achei que foram muito introdutórias, muito superficiais. O que salvou o dia dos mais experiêntes foi a palestra do <a href="http://fabiokung.com/" target="_blank">Fábio Kung</a> e a do <a href="http://rubista.info/" target="_blank">Caffo</a>. Mas, sei lá, talvez tenha sido a estratégia do evento.</p>
<p>O track foi o seguinte:</p>
<p><em>1. </em><em>Vinícius Baggio Fuentes: Criando um Instant Messenger usando Rails</em></p>
<p><a href="http://xmpp.org/" target="_blank">XMPP</a> é uma de minha áreas de interesse, então, estava realmente interessado nessa palestra.</p>
<p>O conteúdo estava legal, eu gostei do formato como a palestra foi estruturada, no entanto, acho que o Vinícius estava um pouco inseguro; e isso acabou atrapalhou um pouco em alguns momentos.</p>
<p><em>2. Hugo Lima Borges: Ruby, Rails e empreendedorismo</em></p>
<p>Esse é um assunto que tem sido muito recorrente em eventos de Ruby on Rails,  o que, com toda certeza, é um ponto muito positivo. Eu não me lembro de ter visto este tema rolar em eventos de Java, por exemplo. Mas a palestra, em si, achei meio frustrante pela superficialidade como o assunto foi abordado.</p>
<p>(Aliás, Hugo, você já empreendeu seu próprio negócio? Se sim, queria trocar umas figurinhas com você.)</p>
<p><em>3. Marcelo Castellani: Ruby no desktop</em></p>
<p>Não era para ser <em>&#8220;Integrando Ruby e Java para facilitar a vida&#8221;</em>?</p>
<p>Achei legal os comparativos e as dicas de quais toolkits funcionam melhor em cada SO, mas acho que faltou uma porção caprichada de código <em>ao vivo</em>. Código só no slide é um pouco chato. O legal é ver o código no slide, mas rodando no terminal também. Fica a dica.<em></em></p>
<p><em>4. Rodrigo Franco: Outsorcing, ou como trabalhar para empresas gringas</em></p>
<p>Para quem não sabe, esse cara é o Caffo, fundador da lista <a href="http://groups.google.com.br/group/rails-br" target="_blank">Rails-BR</a>, que além de ser veiaco de Rails, também é muito experiente no que se propos a palestrar. Ele trabalhar com outsourcing, se não estou enganado, desde 2004.</p>
<p>Sua palestra foi muito, muito, interessante e todo mundo ficou muito intere$$ado mesmo. <img src='http://leandrosilva.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>A grande dia foi: <em>Quer ser um pinguim com colar de ouro?</em> <a href="http://www.odesk.com/" target="_blank">oDesk</a>.</p>
<p>Mas para isso, antes de mais nada, tenha uma conta ativa no <a href="http://github.com" target="_blank">GitHub</a>; um blog que apenas copia notícias de outras fontes, mas que fala do que você pensa e sabe; uma página de portifólio e depoimentos também vai muito bem (segundo o Caffo, é indisponsável).</p>
<p><em>5. Mauricio Leal: GlassFish on Rails: Escalabilidade e Confiabilidade</em></p>
<p>Tema interessantíssimo <a href="http://leandrosilva.com.br/2009/03/22/de-0-a-100-com-jruby-on-glassfish/" target="_blank">para mim</a>, uma palestra que eu estava realmente ansioso para ver. Acho que foi a que mais me decepcionou.</p>
<p>O Mauricio tem uma boa desenvolvura como palestrante, domina a oratória, mas sua palestra foi mais marketing <em>- a Sun apoia Ruby, Rails e Open Source! -</em> do que uma palestra técnica sobre o <a href="http://wiki.glassfish.java.net/" target="_blank">GlassFish</a>. Como o próprio Fábio Kung, convidado pelo Mauricio, disse: O GlassFish é muito bom, mas o modo que a Sun tem o vendido à comunidade Ruby tem sido bem desadequada.</p>
<p><em>6. Carlos Brando: Só imaturos não testam</em></p>
<p>O Carlos é um cara que fala bem, sabe se expressar e sua palestra foi legal. Foi mais voltada a iniciantes em testes, mas bem legal. Na minha opinião, da próxima vez ele poderia abordar tópicos mais avançados de testes, cenários mais elaborados, etc.</p>
<p>Mas no geral, a palestra foi boa. Rolou até um marketzinho do <a href="http://www.nomedojogo.com/2009/02/02/remarkable-217/" target="_blank">Remarkable</a>.</p>
<p><em>7. Willian Molinari: O que é e como funciona o RubyLearning</em></p>
<p>O <a href="http://www.rubylearning.org" target="_blank">RubyLearning</a> é um site bem legal mesmo, ótimo não só pra quem está começando, mas para quem já tem algum conhecimento. Mas uma mini palestra para falar dele, não sei, não achei muito legal não. Acho que um post do tipo FAQ no <a href="http://rubyinside.com.br/" target="_blank">RubyInside</a> e no <a href="http://www.guru-sp.com/" target="_blank">GURU-SP</a> seria um apoio muito mais eficiente ao ótimo trabalho que o pessoal do RubyLearning tem feito.</p>
<p>Não posso deixar de dizer que o Willian, apesar de parecer bem jovem, soube conduzir muito bem a apresentação.</p>
<p><em>8. Fábio Kung: Ruby, muito mais do que reflexivo!</em></p>
<p>Palestra excepcional. O Kung realmente é um ótimo palestrante <em>- instrutor da <a href="http://www.caelum.com.br" target="_blank">Caelum</a>, não podia ser diferente.</em><a href="http://www.slideshare.net/fabiokung/ruby-muito-mais-que-reflexivo" target="_blank"></a></p>
<p><a href="http://www.slideshare.net/fabiokung/ruby-muito-mais-que-reflexivo" target="_blank">A palestra dele</a> abordou temas <em>high level</em> de metaprogramação com Ruby. <a href="http://rubyforge.org/projects/parsetree/" target="_blank">ParseTree</a>, <a href="http://rubyforge.org/forum/forum.php?forum_id=31012" target="_blank">Flog</a>, <a href="http://rubyforge.org/projects/roodi/" target="_blank">roodi</a>, <a href="http://rubyforge.org/projects/seattlerb" target="_blank">Heckle</a> e <a href="http://rubyforge.org/projects/seattlerb/" target="_blank">Ruby2Ruby</a> foram alguns dos mandraques que ele nos apresentou. Foi o momento hacker do dia.</p>
<p>Ah! Além das ferramentas apresentadas, como o Carlos Brando, ele também fez marketing do seu projeto <a href="http://github.com/fabiokung/rfactor/tree" target="_blank">Rfactor</a>.</p>
<p><strong>Conclusão</strong></p>
<p>Valeu a pena participar do evento, trocar idéia com os camaradas e tudo mais. Apesar dos pontos negativos, o resultado final é que o evento foi legal; e os pontos negativos ficam como <em>um toque</em>, para que o próximo evento seja ainda melhor.</p>
<p>Nos vemos no próximo evento!</p>
]]></content:encoded>
			<wfw:commentRss>http://leandrosilva.com.br/2009/04/05/ruby-rails-no-mundo-real-2009-como-foi/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>De 0 a 100 com JRuby on GlassFish</title>
		<link>http://leandrosilva.com.br/2009/03/22/de-0-a-100-com-jruby-on-glassfish/</link>
		<comments>http://leandrosilva.com.br/2009/03/22/de-0-a-100-com-jruby-on-glassfish/#comments</comments>
		<pubDate>Sun, 22 Mar 2009 16:52:18 +0000</pubDate>
		<dc:creator>Leandro Silva</dc:creator>
				<category><![CDATA[glassfish]]></category>
		<category><![CDATA[jruby]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://leandrosilva.com.br/?p=239</guid>
		<description><![CDATA[O objetivo deste post é guiar você em sua primeira viagem com JRuby on GlassFish, partindo do zero e terminando com uma pequena aplicação JRuby on Rails rodando num servidor de aplicações GlassFish. A idéia aqui não é explanar muito profundamente os produtos e assuntos relacionados, mas proporcionar um começo rápido e deixar fontes de [...]]]></description>
			<content:encoded><![CDATA[<p>O objetivo deste post é guiar você em sua primeira viagem com <strong><a href="http://wiki.glassfish.java.net/Wiki.jsp?page=JRuby" target="_blank">JRuby on GlassFish</a></strong>, partindo do zero e terminando com uma pequena aplicação <strong><a href="http://www.jruby.org" target="_blank">JRuby</a> on <a href="http://rubyonrails.org/" target="_blank">Rails</a></strong> rodando num servidor de aplicações <strong><a href="http://br.sun.com/practice/software/glassfish/?cid=927082" target="_blank">GlassFish</a></strong>.</p>
<p>A idéia aqui não é explanar muito profundamente os produtos e assuntos relacionados, mas proporcionar um começo rápido e deixar fontes de pesquisa onde você poderá se aprofundar à medida que desejar.</p>
<h3>Por que trabalhar com essa combinação?</h3>
<p>A maioria das pessoas que trabalham com desenvolvimento sério de aplicações corporativas, grandes portais e sistemas complexos, que precisam de integração eficiente com sistemas em alta ou baixa plataforma, sabem que a <a href="http://leandrosilva.com.br/2008/02/04/a-plataforma-java-nao-e-sobre-a-linguagem-java/" target="_blank">Plataforma Java</a> é excelente para isso.</p>
<p>A linguagem Java, por sua vez, todos nós também sabemos que é um tanto verbosa, isto é verdade, mas ainda assim é muito poderosa; e a combinação desse poder somado à excelência da plataforma e às inumeras API&#8217;s, frameworks e ferramentas,  tem se mostrado ser uma ótima opção para implementar outras linguagens. E é aqui que começa a nossa história com JRuby on GlassFish.</p>
<ul>
<li><strong>JRuby</strong> é a combinação da beleza e pragmatismo incontestável da linguagem <a href="http://ruby-lang.org" target="_blank">Ruby</a>, com a robustez e credibilidade da consolidada plataforma Java.</li>
<li><strong>GlassFish</strong> é um reconhecido servidor de aplicações Java EE, parrudão e totalmente compliant com a <a href="http://java.sun.com/javaee/" target="_blank">especificação Java EE 5</a>.</li>
</ul>
<p>Usar essa a combinação para prover aplicações <strong>Rails</strong> é sinônimo de:</p>
<ul>
<li>Ambiente de produção maduro e parrudo</li>
<li>Deployment facilitado</li>
<li>Ferramentas de monitoramento e gerenciamento de aplicação</li>
<li>Transação, mensageria, segurança</li>
<li>Integração completamente transparente com qualquer código Java</li>
<li>&#8230; e muito mais!!!</li>
</ul>
<p>E ai, está motivado a continuar com esse tutorial?</p>
<blockquote><p><em>É fato que JRuby é uma implementação de Ruby muito poderosa, rápida, confiável, thread-safe, etc, etc, etc. Mas não acho que faça muito sentido usar JRuby se você não precisa de integração com código Java, seja de um software legado ou mesmo uma API </em><em>xyz específica. Se este não é o seu caso, aconselho dar uma olhada na combinação <a href="http://www.rubyenterpriseedition.com/" target="_blank">Ruby Enterprise Edition</a> + <a href="http://www.modrails.com/" target="_blank">Passenger</a> (a.k.a. <strong>mod_rails</strong>) da <a href="http://www.phusion.nl/" target="_blank">Phusion</a>.</em></p></blockquote>
<h3>Mãos à obra!</h3>
<p>Antes da primeira coisa a fazer, você precisa se certificar de que possui o requisito mínimo necessário para esse tutorial: Um <a href="http://java.sun.com/javase/technologies/core/index.jsp" target="_blank">Java SDK</a> instalado em sua máquina. No meu caso, estou com a versão 1.6.0_07. O ideal é que você tenha ao menos a versão 1.5.0. Caso não tenha, você pode <a href="http://java.sun.com/javase/downloads/index.jsp" target="_blank">fazer o donwload</a> da versão apropriada ao seu SO e instalar conforme as instruções do produto, ou usar seu gerenciador de pacotes favorito. Você decide!</p>
<p><strong>A primeira coisa a fazer: Instalar o JRuby</strong></p>
<p>1- Baixe <a href="http://dist.codehaus.org/jruby/" target="_blank">aqui</a> a versão do JRuby mais atual (eu estou com a 1.2.0RC2);</p>
<p>2- Descompacte ele no diretório onde você deseja manter sua instalação;</p>
<p>3- Defina as variáveis de ambiênte conforme o exemplo a seguir:</p>
<pre class="brush: ruby;">
# JRUBY-HOME, CLASSPATH and PATH to JRuby 1.2.0RC2
JRUBY_HOME=/home/leandro/ruby/tools/jruby-1.2.0RC2
CLASSPATH=$JRUBY_HOME/lib/jruby.jar:$CLASSPATH
PATH=$JRUBY_HOME/bin:$PATH
export JRUBY_HOME CLASSPATH PATH
</pre>
<p>4- Veja se está tudo funcionando, digitando no terminal:</p>
<pre class="brush: ruby;">
$ jruby --version
</pre>
<p>A saída deve ser algo mais ou menos assim:<br />
<code><br />
<span style="color: #0000ff;"> jruby 1.2.0RC2 (ruby 1.8.6 patchlevel 287) (2009-03-06 rev 9369) [i386-java]</span></code></p>
<p>Se você teve uma saída semelhante a essa, ótimo, tudo parece estar funcionando perfeitamente. Hora de ir para o próximo passo.</p>
<p><strong>A segunda coisa a fazer: Instalar as gem necessárias</strong></p>
<p>Instalar as gems pode demorar um pouquinho, dependendo de o quaão boa é sua conexão de internet. Tenha paciência! <img src='http://leandrosilva.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Bem, vamos lá. No terminal&#8230;</p>
<p>1- Instale a gem jruby-openssl:</p>
<pre class="brush: ruby;">
$ jruby -S gem install jruby-openssl
</pre>
<p>Isso se faz necessário porque o JRuby não suporta o openssl padrão do Ruby. Um pequeno detalhe. <img src='http://leandrosilva.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<blockquote><p><em><strong>-S, pra que isso?</strong></em></p>
<p><em>O parâmetro <strong>-S</strong> serve para dizer ao JRuby que você quer que ele use prioritariamente os scripts que estão em seu diretório <strong>bin</strong>; ou, em segundo caso, no <strong>PATH</strong> do sistema.</em></p></blockquote>
<p>2- Instale o Rails:</p>
<pre class="brush: ruby;">
$ jruby -S gem install rails --include-dependencies
</pre>
<p>Esse comando instalará a versão mais atual do Rails, que no caso deste tutorial é a 2.3.2.</p>
<p>3- Instale o adaptador <a href="http://java.sun.com/docs/books/tutorial/jdbc/index.html" target="_blank">JDBC</a>:</p>
<pre class="brush: ruby;">
$ jruby -S gem install activerecord-jdbc-adapter
</pre>
<p>Este adaptador é genérico e possibilita conectar qualquer banco de dados que suporte JDBC. No entanto, ele faz necessário que você configure uma ou duas coisinhas a mais. Mas como no nosso caso vamos tratalhar com <a href="http://www.mysql.com/" target="_blank">MySQL</a>, vamos instalar também o adaptador JDBC especifico para MySQL. (Aliás, assegure-se de ter MySQL 5 instalado.)</p>
<pre class="brush: ruby;">
$ jruby -S gem install activerecord-jdbcmysql-adapter
</pre>
<p>4- Instale o <a href="http://rubyforge.org/projects/glassfishgem/" target="_blank">GlassFish v3 GEM</a>:</p>
<pre class="brush: ruby;">
$ jruby -S gem install glassfish
</pre>
<p>Pronto! Todas as ferramentas necessárias já estão instaladas. Vamos para o próximo [e mais interessante passo].</p>
<p><strong>A terceira coisa a fazer: Criar uma aplicação</strong></p>
<p>Em seu diretório de trabalho, faça o seguinte:</p>
<p>1- Crie uma aplicação Rails:</p>
<pre class="brush: ruby;">
$ jruby -S rails jogapp
</pre>
<p>Como somos todos aficcionados por siglas, mandamos uma aqui: jogapp &#8211; JRuby on GlassFish Application. <img src='http://leandrosilva.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<blockquote><p><strong><em>Atenção!</em></strong></p>
<p><em>A partir daqui, entre no diretório da aplicação jogapp e execute todos os script neste diretório.</em></p></blockquote>
<p>2- Configure o banco de dados <strong>development</strong><em> </em>no arquivo <strong>config/database.yml</strong>:</p>
<pre class="brush: ruby;">
adapter: jdbcmysql
database: jogapp_development
username: root
password: senhadoroot
hostname: localhost
</pre>
<p>Lembre-se: Estamos usando uma instalação de MySQL 5 local.</p>
<p>3- Crie um cadastro <span style="text-decoration: line-through;">bizarrão</span> básicão:</p>
<pre class="brush: ruby;">
$ jruby -S script/generate scaffold contato nome:string telefone:string
</pre>
<p>4- No terminal do MySQL, criar o banco de dados de desenvolvimento:</p>
<pre class="brush: ruby;">
mysql&gt; create database jogapp_development;
</pre>
<p>5- Migrar o esquema de banco de dados [para o banco de desenvolvimento]:</p>
<pre class="brush: ruby;">
$ jruby -S rake db:migrate
</pre>
<p>Excelente! Tudo está criado e devidamente configurado. Agora&#8230;</p>
<p><strong>A quarta coisa a fazer: Rodar a aplicação<br />
</strong></p>
<p>Essa é a parte mais dificil. Prepare-se!</p>
<pre class="brush: ruby;">
$ jruby -S glassfish_rails
</pre>
<p>É isso. Aqui na minha máquina, que nem é tão parruda assim, em 1 segundo, o GlassFish está de pé.</p>
<p>Agora você já pode abri seu browser preferido &#8211; que certamente não é o IE &#8211; apontar para a URL <a href="http://localhost:3000" target="_blank">http://localhost:3000</a> para ver sua aplicação rodando no JRuby on GlassFish.</p>
<p>Dificil, não? <img src='http://leandrosilva.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Pra finalizar, a quinta e última coisa a fazer: Se divertir!<br />
</strong></p>
<p>Basta acessar <a href="http://localhost:3000/contatos" target="_blank">http://localhost:3000/contatos</a> e mandar bala! <img src='http://leandrosilva.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Espero que você tenha se divertido até aqui, porque eu tenho me divertido bastante mesmo com essa combinação explosiva.</p>
<p>Como você pôde ver nesse tutorial, não há segredo. É muito trivial colocar uma aplicação para todar no GlassFish. É claro que eu também não mostrei nada de mais, além de usar um adaptado JDBC para tirar proveito dessa  ferramenta lapidadíssima e largamente usada no mercado. Vamos ver se logo, logo, eu escrevo um outro artigo mostrando um truque ou dois bem legal de integração com aplicações Java legadas (<a href="http://java.sun.com/products/ejb/" target="_blank">EJB</a>, por exemplo).</p>
<p>É isso ai. Comentários são bem-vindos!</p>
]]></content:encoded>
			<wfw:commentRss>http://leandrosilva.com.br/2009/03/22/de-0-a-100-com-jruby-on-glassfish/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Sparrow, um cliente JMS baseado em JRuby</title>
		<link>http://leandrosilva.com.br/2009/03/08/sparrow-um-cliente-jms-baseado-em-jruby/</link>
		<comments>http://leandrosilva.com.br/2009/03/08/sparrow-um-cliente-jms-baseado-em-jruby/#comments</comments>
		<pubDate>Sun, 08 Mar 2009 04:50:50 +0000</pubDate>
		<dc:creator>Leandro Silva</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[jms]]></category>
		<category><![CDATA[jruby]]></category>
		<category><![CDATA[mom]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://leandrosilva.com.br/?p=220</guid>
		<description><![CDATA[Mês passado comecei a tocar um projeto na CVC Turismo que, entre outras coisas, envolve troca mensagens assíncronas usando JMS. Esse trabalho foi está sendo tão divertido que me inspirou a escrever um post sobre Message-Driven Beans e Transações; e mais recentemente, a começar um novo projeto pessoal. Sparrow é um cliente JMS implementado sobre [...]]]></description>
			<content:encoded><![CDATA[<p>Mês passado comecei a tocar um projeto na <a href="http://www.cvc.com.br" target="_blank">CVC Turismo</a> que, entre outras coisas, envolve troca mensagens assíncronas usando <a href="http://pt.wikipedia.org/wiki/JMS" target="_blank">JMS</a>. Esse trabalho <span style="text-decoration: line-through;">foi</span> está sendo tão divertido que me inspirou a escrever um post sobre <a href="http://leandrosilva.com.br/2009/02/22/message-driven-beans-e-transacoes/" target="_self">Message-Driven Beans e Transações</a>; e mais recentemente, a começar um novo projeto pessoal.</p>
<p><strong><a href="http://github.com/leandrosilva/sparrow" target="_blank">Sparrow</a></strong> é um cliente JMS implementado sobre <a href="http://www.jruby.org" target="_blank">JRuby</a> e distribuido como uma <a href="http://www.rubygems.org/" target="_blank">Rubygem</a> &#8211; hospedada no <a href="http://github.com" target="_blank">Github</a>,  é claro. Ele é uma boa opção para quem precisa integrar sistemas <a href="http://www.ruby-lang.org/" target="_blank">Ruby</a> com servidores de aplicações <a href="http://java.sun.com/javaee/" target="_blank">Java EE</a>, provedores de mensageria JMS.</p>
<p>É pá, pum! Quer ver?</p>
<pre class="brush: ruby;">
require 'rubygems'
require 'sparrow'

# Configuração que tem que ser feita uma única vez
jms_client = Sparrow::JMS::Connection::Client.new do |props|
  props.client_jar_file         = '/oc4j_extended_101330/j2ee/home/oc4jclient.jar'
  props.initial_context_factory = 'oracle.j2ee.naming.ApplicationClientInitialContextFactory'
  props.provider_url            = 'ormi://localhost:23791'
  props.security_principal      = 'oc4jadmin'
  props.security_credentials    = 'welcome'
end

jms_client.enable_connection_factories(
    :queue_connection_factory =&gt; 'jms/MyQueueCF'
  )

jms_client.enable_queues(
    :my_queue =&gt; 'jms/MyQueue'
  )

# Envio
jms_client.queue_sender(:my_queue).send_text_message('sparrow rocks!') do |msg|
  msg.set_string_property('recipient', 'sparrow-example')
end

# Recebimento
jms_client.queue_receiver(:my_queue).receive_message(
    :timeout  =&gt; 5000,
    :selector =&gt; &quot;recipient = 'sparrow-example'&quot;
  ) do |msg|

  puts msg.is_text_message?    # true
  puts msg.text                # sparrow rocks!
end
</pre>
<p>Fácil, não? <img src='http://leandrosilva.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Se você quiser saber mais sobre <a href="http://github.com/leandrosilva/sparrow" target="_blank">o projeto</a>, testá-lo, critica-lo, ou algo assim, por favor, <span style="text-decoration: line-through;">não fique acanhado</span> fique à vontade. E se não for pedir demais, deixe um comentário nesse post, como um feedback, para eu saber o quanto ainda preciso melhorá-lo e evoluí-lo.</p>
<p>Valeu!</p>
]]></content:encoded>
			<wfw:commentRss>http://leandrosilva.com.br/2009/03/08/sparrow-um-cliente-jms-baseado-em-jruby/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Foi lançado o JRuby 1.1.4</title>
		<link>http://leandrosilva.com.br/2008/08/31/foi-lancado-o-jruby-114/</link>
		<comments>http://leandrosilva.com.br/2008/08/31/foi-lancado-o-jruby-114/#comments</comments>
		<pubDate>Sun, 31 Aug 2008 02:19:00 +0000</pubDate>
		<dc:creator>Leandro Silva</dc:creator>
				<category><![CDATA[jruby]]></category>

		<guid isPermaLink="false">http://codezone.wordpress.com/?p=216</guid>
		<description><![CDATA[Foi lançada a versão 1.1.4 do JRuby. O release notes, além de bugs corrigidos, também destaca: Refatoração massiva da camada de integração com Java 2 a 20x mais rápido em muitas funcionalidades (chamadas, construções, arrays) Muitos bugs de longa data na integração com Ruby/Java Funcionalidades existentes mais consistentes e confiáveis Closures podem ser passadas como [...]]]></description>
			<content:encoded><![CDATA[<p>Foi lançada a <a href="http://docs.codehaus.org/display/JRUBY/2008/08/28/JRuby+1.1.4+Released" target="_blank">versão 1.1.4</a> do <a href="http://www.jruby.org/" target="_blank">JRuby</a>. O release notes, além de bugs corrigidos, também destaca:</p>
<ul>
<li>Refatoração massiva da camada de integração com Java</li>
<li>2 a 20x mais rápido em muitas funcionalidades (chamadas, construções, arrays)</li>
<li>Muitos bugs de longa data na integração com Ruby/Java</li>
<li>Funcionalidades existentes mais consistentes e confiáveis</li>
<li>Closures podem ser passadas como interfaces para métodos estáticos e construtores</li>
<li>Exceptions Java podem ser ser lançadas/resgatadas diretamente a partir do Ruby</li>
<li>Melhorias massivas na eficiência da memória (muito menos GC)</li>
<li>Início do suporte ao Ruby 1.9 (disponível com flag &#8211;1.9)</li>
<li>Complexo/rational nativo</li>
<li>Eficiência adicional e performance no trabalho do interpretador</li>
<li>Menor vazamento de memória &#8211;controle de reparos</li>
<li>Subsistemas FFI para chamada de bibliotecas C</li>
<li>Módulo syslog do Rubinius está funcionando e incluido</li>
<li>Iniciado suporte a API win32</li>
<li>Thread pooling melhorado (pelo menos usada em produção agora)</li>
<li>Acessos concorrentes a array melhorados</li>
<li>72 casos resolvidos desde JRuby 1.1.3</li>
</ul>
<p>Fico feliz de ver o JRuby crescendo e amadurecendo.</p>
<p>Este é um projeto promissor. Muito promissor!</p>
]]></content:encoded>
			<wfw:commentRss>http://leandrosilva.com.br/2008/08/31/foi-lancado-o-jruby-114/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Executar JRuby a partir do Java</title>
		<link>http://leandrosilva.com.br/2008/08/14/executar-jruby-a-partir-do-java/</link>
		<comments>http://leandrosilva.com.br/2008/08/14/executar-jruby-a-partir-do-java/#comments</comments>
		<pubDate>Thu, 14 Aug 2008 03:57:36 +0000</pubDate>
		<dc:creator>Leandro Silva</dc:creator>
				<category><![CDATA[arquitetura]]></category>
		<category><![CDATA[dicas]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jruby]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://codezone.wordpress.com/?p=143</guid>
		<description><![CDATA[Nos últimos tempos tenho dedicado boa parte do meu tempo livre estudando JRuby. Tem sido uma verdadeira diversão! Com o objetivo de compartilhar um pouco do que tenho aprendido, eis aqui este post&#8230; Quer dizer que o osrevni inverso também é verdade? Muito se fala da capacidade do JRuby de acessar código Java de maneira [...]]]></description>
			<content:encoded><![CDATA[<p>Nos últimos tempos tenho dedicado boa parte do meu tempo livre estudando <a href="http://en.wikipedia.org/wiki/JRuby" target="_blank">JRuby</a>. Tem sido uma verdadeira diversão!</p>
<p>Com o objetivo de compartilhar um pouco do que tenho aprendido, eis aqui este post&#8230;</p>
<p><strong>Quer dizer que o <span style="text-decoration:line-through;">osrevni</span> inverso também é verdade?</strong></p>
<p>Muito se fala da capacidade do JRuby de acessar código Java de maneira tão natural quanto o faz com seu próprio código &#8211; o que é definitivamente fantástico. Mas não tenho visto muitos exemplos de código Java acessando código JRuby. Por quê? Não sei dizer. Talvez porque não tenham visto tanta utilidade nisso. Essa não é minha opinião, já que tenho interesse em implementar algumas coisas em JRuby e usar a partir do Java.</p>
<p>Uma das coisas que fiz nesses meus estudos sobre usar JRuby a partir de Java foi testar o compilador <strong>jrubyc</strong> para gerar <em>.class</em>, mas não cheguei bem onde eu queria &#8211; até troque umas palavras com <a href="http://blog.headius.com/" target="_blank">Charles Nutter</a> a respeito -, porque o <em>.class</em> gerado por ele não é do tipo que se pode instanciar e usar diretamente num código Java, dada a natureza totalmente dinâmica de Ruby. Nas palavras do próprio Charles:</p>
<blockquote><p>The code compiled by jrubyc is not a &#8220;normal&#8221; Java class[...] This is not a Java class you can instantiate and call methods on directly from Java[...].</p></blockquote>
<p>Como não desisti, tenho algumas alternativas para compartilhar.</p>
<p><em>OBS.: Para executar os exemplos apresentados é necessário ter <strong>jruby.jar</strong> no classpath do seu projeto. Quando escrevi este post estava usando a versão 1.0, porque não havia uma versão mais atual na máquina que eu estava usando. Mas agora já atualizei o código para a versão 1.1.3.<br />
</em></p>
<p><strong>Primeira alternativa: JRuby puramente Ruby</strong></p>
<p>No exemplo abaixo, criou uma classe Ruby comum &#8211; sem qualquer recurso específico do JRuby &#8211; e, logo após, a carrego, instancio e executo seu método a partir do Java.</p>
<p><em>matematica_apenas_ruby.rb</em></p>
<pre class="brush: ruby;">
class MatematicaApenasRuby
  def soma(a, b)
    a + b
  end
end
</pre>
<p><em>MatematicaApenasRubyTest.java</em></p>
<pre class="brush: java;">
public class MatematicaApenasRubyTest {
    public static void main(String args[]) throws Exception {
        List pathsLoad = new ArrayList();
        pathsLoad.add(&quot;/Workspace/Ruby/IntegracaoJava/lib/&quot;);

        Ruby rubyRuntime = JavaEmbedUtils.initialize(pathsLoad);
        rubyRuntime.getLoadService().load(&quot;matematica_apenas_ruby.rb&quot;, false);

        Object mat_ruby = rubyRuntime.evalScriptlet(&quot;MatematicaApenasRuby.new&quot;);
        Integer res_ruby = (Integer)JavaEmbedUtils.invokeMethod(rubyRuntime, mat_ruby, &quot;soma&quot;, new Integer[] {3, 2}, Integer.class);

        System.out.println(&quot;Soma 3 + 2 invocando diretamente JRuby: &quot; + res_ruby);
    }
}
</pre>
<p>O que esse código Java faz é bem simples, ele:</p>
<p>1- Inicializa um ambiente de runtime para Ruby, indicando onde estão os arquivos <em>.rb</em>;<br />
2- Executa o script de criação da classe MatematicaApenasRuby;<br />
3- Executa o script de instanciação da classe MatematicaApenasRuby;<br />
4- E, por fim, invoca o método soma passando dois parametros.</p>
<p>Que tal, acho simples? Pois muito bem, continuemos&#8230;</p>
<p><strong>Segunda alternativa: JRuby implementando Java</strong></p>
<p>Neste segundo exemplo, o que eu faço é criar uma classe JRuby que estende uma classes Java abstrata, o que facilita ainda mais na hora de usar a partir do Java. Vejamos como fica.</p>
<p><em>matematica_impl_java.rb</em></p>
<pre class="brush: ruby;">
require 'java'

class MatematicaImplJava &lt; Java::IntegracaoPoliglota::Matematica
  def soma(a, b)
    a + b
  end
end
</pre>
<p><em>Matematica.java</em></p>
<pre class="brush: java;">
package integracao.poliglota;

public abstract class Matematica {
    public abstract int soma(int a, int b);
}
</pre>
<p><em>MatematicaImplJavaTest.java</em></p>
<pre class="brush: java;">
public class MatematicaImplJavaTest {
    public static void main(String args[]) throws Exception {
        List pathsLoad = new ArrayList();
        pathsLoad.add(&quot;/Workspace/Ruby/IntegracaoJava/lib/&quot;);

        Ruby rubyRuntime = JavaEmbedUtils.initialize(pathsLoad);
        rubyRuntime.getLoadService().load(&quot;matematica_impl_java.rb&quot;, false);

        Object mat_impl_java = rubyRuntime.evalScriptlet(&quot;MatematicaImplJava.new&quot;);
        Matematica matematica = (Matematica)JavaEmbedUtils.rubyToJava(rubyRuntime, (IRubyObject)mat_impl_java, Matematica.class);

        System.out.println(&quot;Soma 10 + 2 usando a interface Java: &quot; + matematica.soma(10, 2));
    }
}
</pre>
<p>E esta alternativa, gostou? Eu gostei bastante. Porque no meu caso, o que eu quero é poder definir uma interface em Java e implementar com JRuby a la <em>Ruby Way</em> e depois usar no Java. É claro que não estou levando em conta o fator &#8220;performance&#8221;, só estou considerando o fator &#8220;alternativa de implemententação&#8221;. Só isso.</p>
<p>Mas vamos lá, o que esse código faz?</p>
<p>1- A classe JRuby estende uma classe Java abstrata, como dito antes;<br />
2- A classe que faz o teste, em linhas gerais, faz um <em>cast</em> do objeto JRuby para a classe Java abstrata;<br />
3- E no final das contas, invoca o método da classe Java.</p>
<p><strong>Será que programação poliglota é o futuro?</strong></p>
<p>Se é ou não é, eu não sei. Mas sei que deixei de ser um arquiteto de uma nota só há muito tempo; e estou muito emplogado com JRuby &#8211; ele é o melhor dos dois mundos!</p>
<p>E você, o que acha? Deixe um comentário&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://leandrosilva.com.br/2008/08/14/executar-jruby-a-partir-do-java/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Sírius Software em peso na Rails Summit</title>
		<link>http://leandrosilva.com.br/2008/08/09/sirius-software-em-peso-na-rails-summit/</link>
		<comments>http://leandrosilva.com.br/2008/08/09/sirius-software-em-peso-na-rails-summit/#comments</comments>
		<pubDate>Sat, 09 Aug 2008 23:36:14 +0000</pubDate>
		<dc:creator>Leandro Silva</dc:creator>
				<category><![CDATA[eventos]]></category>
		<category><![CDATA[jruby]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://codezone.wordpress.com/?p=109</guid>
		<description><![CDATA[Ontem fizemos as inscrições dos consultores da Sírius Software para a Rails Summit Latim America 2008. E você, vai? A gente se vê por lá&#8230;]]></description>
			<content:encoded><![CDATA[<p>Ontem fizemos as inscrições dos consultores da <a href="http://www.siriussoftware.com.br" target="_blank">Sírius Software</a> para a <a href="http://www.locaweb.com.br/railssummit/" target="_blank">Rails Summit Latim America 2008</a>.</p>
<p>E você, vai? A gente se vê por lá&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://leandrosilva.com.br/2008/08/09/sirius-software-em-peso-na-rails-summit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rails Summit Brazil 2008!</title>
		<link>http://leandrosilva.com.br/2008/07/06/rails-summit-brazil-2008/</link>
		<comments>http://leandrosilva.com.br/2008/07/06/rails-summit-brazil-2008/#comments</comments>
		<pubDate>Sun, 06 Jul 2008 17:33:12 +0000</pubDate>
		<dc:creator>Leandro Silva</dc:creator>
				<category><![CDATA[eventos]]></category>
		<category><![CDATA[jruby]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://codezone.wordpress.com/?p=31</guid>
		<description><![CDATA[Esta foi a melhor notícia que recebi nos últimos tempos: Uma master conferência de Rails Brasuquíssima! OmG! Era tudo que eu queria! Segundo o Akita: Confirmei as presenças do próprio David Hansson (somente ele será via video online, ele estará na Europa nesse dia, os outros serão presenciais); o grande Chad Fowler ; os mantenedores [...]]]></description>
			<content:encoded><![CDATA[<p>Esta foi a melhor notícia que recebi nos últimos tempos: Uma master conferência de Rails Brasuquíssima! OmG! Era tudo que eu queria!</p>
<p>Segundo o <a href="http://www.akitaonrails.com/" target="_self">Akita</a>:</p>
<blockquote><p>Confirmei as presenças do próprio <a href="http://www.loudthinking.com/"><strong>David Hansson</strong></a> (somente ele será via video online, ele estará na Europa nesse dia, os outros serão presenciais); o grande <a href="http://chadfowler.com/"><strong>Chad Fowler</strong></a> ; os mantenedores do JRuby, <a href="http://headius.blogspot.com/"><strong>Charles Nutter</strong></a> e <a href="http://www.bloglines.com/blog/ThomasEEnebo"><strong>Thomas Enebo</strong></a> ; diretamente da Holanda, da <a href="http://phusion.nl/">Phusion</a> teremos <a href="http://ninh.nl/blog/"><strong>Ninh Bui</strong></a> e <a href="http://izumi.plan99.net/blog/"><strong>Hongli Lai</strong></a> ; o mantenedor do <a href="http://rspec.info/">RSpec</a>, <a href="http://blog.davidchelimsky.net/"><strong>David Chelimsky</strong></a> ; o criador do <a href="http://github.com/">Github</a>, <a href="http://errtheblog.com/"><strong>Chris Wanstrath</strong></a> ; ninguém menos que <a href="http://drnicwilliams.com/"><strong>Dr. Nic Williams</strong></a> ; o escritor do livro <em>The Rails Way</em>, <a href="http://www.jroller.com/obie/"><strong>Obie Fernandez</strong></a> ; também <a href="http://blog.jayfields.com/"><strong>Jay Fields</strong></a>, da ThoughtWorks.</p>
<p>E também muitos grandes Railers brasileiros como <a href="http://blogblogs.com.br/"><strong>Manoel Lemos</strong></a>, da <a href="http://www.brasigo.com.br/">Brasigo</a> ; <a href="http://www.treinatom.com.br/"><strong>Carlos Eduardo</strong></a>, da <a href="http://www.egenial.com.br/">e-Genial</a> ; <a href="http://fabiokung.com/"><strong>Fabio Kung</strong></a>, nosso JRuby-man, da <a href="http://www.caelum.com.br/">Caelum</a> ; o grande <a href="http://www.improveit.com.br/"><strong>Vinicius Teles</strong></a> da <a href="http://www.improveit.com.br/">Improve it</a> ; <a href="http://www.pagestacker.com/br/about#george"><strong>George Guimarães</strong></a> do <a href="http://www.pagestacker.com/">Pagestacker</a>.</p></blockquote>
<p>A notícia completa está <a href="http://www.akitaonrails.com/2008/7/4/est-chegando-a-hora-rails-summit-brazil-2008" target="_blank">aqui</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://leandrosilva.com.br/2008/07/06/rails-summit-brazil-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
