<?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>PauloMotta.pro &#187; JVM</title>
	<atom:link href="http://www.paulomotta.pro.br/tag/jvm/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.paulomotta.pro.br</link>
	<description>&#34;Qualquer tecnologia suficientemente avançada é indistinguível da mágica&#34; - Arthur C. Clarke</description>
	<lastBuildDate>Tue, 10 Jan 2012 03:00:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Java 6 e a compatibilidade com Java 1.3</title>
		<link>http://www.paulomotta.pro.br/2011/01/18/java-6-e-a-compatibilidade-com-java-1-3/</link>
		<comments>http://www.paulomotta.pro.br/2011/01/18/java-6-e-a-compatibilidade-com-java-1-3/#comments</comments>
		<pubDate>Tue, 18 Jan 2011 15:48:15 +0000</pubDate>
		<dc:creator>prmottajr</dc:creator>
				<category><![CDATA[Principal]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Testes]]></category>
		<category><![CDATA[APLICAÇÃO]]></category>
		<category><![CDATA[JAVA]]></category>
		<category><![CDATA[JVM]]></category>
		<category><![CDATA[PROGRAMAÇÃO]]></category>
		<category><![CDATA[SISTEMA]]></category>

		<guid isPermaLink="false">http://www.paulomotta.pro.br/?p=1173</guid>
		<description><![CDATA[Eu tinha planejado escrever sobre outra coisa hoje, mas vou contar uma história triste. Em meados de 2002 eu fiz um sistema de controle de condomínios, na época o Java estava na versão 2 release 1.3, e ninguém tinha discutido ainda essa coisa de chamar o Java de versão 2 e ficar lançando releases. Uma [...]]]></description>
			<content:encoded><![CDATA[<p>Eu tinha planejado escrever sobre outra coisa hoje, mas vou contar uma história triste. Em meados de 2002 eu fiz um sistema de controle de condomínios, na época o Java estava na versão 2 release 1.3, e ninguém tinha discutido ainda essa coisa de chamar o Java de versão 2 e ficar lançando releases. Uma das grandes novidades daquele release é que havia suporte para impressoras em ambientes gráficos. Sim, embora você possa não acreditar nisso, houve um tempo em que não era possível usar Java para falar com impressoras ou portas seriais.</p>
<p>Usei então aquela API (hoje eu recomendo fortemente que você use iReport) para fazer os relatórios e boletos de pagamento, tudo impresso manualmente. É claro que quando rodou foi uma grande conquista, foi uma experiência bem legal. Mas vários anos se passaram e o Java evoluiu, até que recentemente colocamos o sistema para rodar sobre uma máquina virtual atual Java 6, tudo funcionou bem, e na hora não nos ocorreu de testar a impressão, já que toda a parte de telas e banco de dados estava funcionando.</p>
<p>Qual não foi nossa surpresa quando foi necessário imprimir boletos? Tudo fora de alinhamento, tudo fora de margem, mexemos, olhamos e nada. Troca a impressora, troca a máquina e nada. Só faltava trocar a máquina virtual, e não deu em outra, imprimiu corretamente.</p>
<p>É por isso que eu sempre falo que precisamos ter muito cuidado quando atualizamos as partes de um sistema, porque não sabemos o que outras pessoas podem ter mudado em suas próprias bibliotecas. É fundamental, antes de migrar, fazer um teste extenso de compatibilidade para garantir que tudo vai funcionar direitinho.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulomotta.pro.br/2011/01/18/java-6-e-a-compatibilidade-com-java-1-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Java é o novo COBOL?</title>
		<link>http://www.paulomotta.pro.br/2010/06/11/java-e-o-novo-cobol/</link>
		<comments>http://www.paulomotta.pro.br/2010/06/11/java-e-o-novo-cobol/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 15:42:34 +0000</pubDate>
		<dc:creator>prmottajr</dc:creator>
				<category><![CDATA[Principal]]></category>
		<category><![CDATA[Tendências]]></category>
		<category><![CDATA[ARQUITETURA]]></category>
		<category><![CDATA[JAVA]]></category>
		<category><![CDATA[JVM]]></category>
		<category><![CDATA[LINGUAGEM]]></category>
		<category><![CDATA[PROGRAMAÇÃO]]></category>
		<category><![CDATA[SISTEMA]]></category>

		<guid isPermaLink="false">http://www.paulomotta.pro.br/?p=568</guid>
		<description><![CDATA[Ontem tive um interessante debate com o Pedro, um grade amigo meu (troquei o link para o blog correto), sobre Java é como a linguagem e plataforma têm evoluído. Recentemente ele participou de uma conferência nos EUA, onde mora atualmente, e comentou que os palestrantes mostravam uma percepção de que o Java é o novo [...]]]></description>
			<content:encoded><![CDATA[<p>Ontem tive um interessante debate com o Pedro, um grade <a href="http://thoughtsforbeans.blogspot.com" target="_blank">amigo meu</a> (troquei o link para o blog correto), sobre Java é como a linguagem e plataforma têm evoluído. Recentemente ele participou de uma conferência nos EUA, onde mora atualmente, e comentou que os palestrantes mostravam uma percepção de que o Java é o novo COBOL, acho que isso fica ainda mais forte com a <a href="http://www.infoworld.com/d/developer-world/java-becoming-new-cobol-204" target="_blank">publicação da InfoWorld</a> inclusive é muito interessante.</p>
<p>Conversamos bastante sobre isso, é existem alguns pontos a se considerar, temos uma grande quantidade de código Java escrito para sistemas corporativos, realmente a representatividade do Java atualmente lembra a do COBOL. Eu ainda não sei se concordo totalmente, mas especula-se que o Java como linguagem esteja em seu momento de declínio, por ser mais difícil que as outras linguagens. Não sei se acho tão complicado assim, na verdade existe um grande fantasma que diz que Java é muito difícil (embora eu concorde que é necessário estudar bastante para dominar.)</p>
<p>Por outro lado a plataforma Java apresenta grande sucesso, tanto na parte de componentização atual quanto na questão do uso da máquina virtual Java mesmo para outras linguagens, atualmente existem implementações de outras linguagens para rodar sobre a máquina virtual, e acredito que principalmente porque é muito chato ter que recompilar a sua linguagem para cada uma das plataformas, se você pensar que já tem uma empresa (Oracle/Sun) que cria uma máquina virtual para diversas plataformas físicas e isso garante que o ambiente da sua linguagem vai rodar em outras plataformas, porque ter esse trabalho todo?</p>
<p>Uma coisa importante para se considerar sempre é o <a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html" target="_blank">índice TIOBE</a> que mantém um ranking das linguagens de programação e Java e C continuam lá no topo, outras linguagens têm subido e descido como sempre. Uma que ganhou muito espaço foi Objective-C, porque? Porque é a forma de criar aplicações para iPhone.</p>
<p>Acredito que outras tecnologias apresentam certas facilidades para desenvolver sistemas de forma rápida, tais como Ruby on Rails e até mesmo PHP, mas quando falamos de implementar a parte que dará suporte às regras de negócio, a parte de lógica ainda acredito em usar o Java, principalmente pela grande quantidade de facilidades que temos disponíveis para ajudar no desenvolvimento.</p>
<p>Vamos continuar acompanhando para saber o rumo dessas mudanças no mundo de desenvolvimento.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulomotta.pro.br/2010/06/11/java-e-o-novo-cobol/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Java e o uso de Máquinas Virtuais</title>
		<link>http://www.paulomotta.pro.br/2009/08/31/java-e-o-uso-de-maquinas-virtuais/</link>
		<comments>http://www.paulomotta.pro.br/2009/08/31/java-e-o-uso-de-maquinas-virtuais/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 20:26:09 +0000</pubDate>
		<dc:creator>prmottajr</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Principal]]></category>
		<category><![CDATA[JAVA]]></category>
		<category><![CDATA[JVM]]></category>
		<category><![CDATA[LINGUAGEM]]></category>
		<category><![CDATA[PROGRAMAÇÃO]]></category>

		<guid isPermaLink="false">http://www.paulomotta.pro.br/2009/08/31/java-e-o-uso-de-maquinas-virtuais/</guid>
		<description><![CDATA[Com o sucesso da linguagem de programaÃ§Ã£o Java comeÃ§amos a ouvir falar muito em mÃ¡quina virtual, no entanto essa Ã© uma prÃ¡tica mais comum e antiga do que se imagina. Para entender toda a atenÃ§Ã£o que foi dada a esse assunto precisamos entender os tipos de mÃ¡quinas virtuais, suas aplicaÃ§Ãµes e benefÃ­cios. A primeira coisa [...]]]></description>
			<content:encoded><![CDATA[<p>Com o sucesso da linguagem de programaÃ§Ã£o Java comeÃ§amos a ouvir falar muito em mÃ¡quina virtual, no entanto essa Ã© uma prÃ¡tica mais comum e antiga do que se imagina. Para entender toda a atenÃ§Ã£o que foi dada a esse assunto precisamos entender os tipos de mÃ¡quinas virtuais, suas aplicaÃ§Ãµes e benefÃ­cios.</p>
<p>A primeira coisa a se considerar e que uma mÃ¡quina virtual Ã© um programa de computador que deve rodar sobre uma mÃ¡quina real. Baseado nisso temos que identificar, de forma simplificada, as possibilidades que existem:</p>
<ul>
<li>Programas para virtualizaÃ§Ã£o de uma mÃ¡quina real igual a mÃ¡quina base &#8211; existem alguns programas que sÃ£o capazes de oferecer ao usuÃ¡rio uma interface como se estivesse trabalhando com uma mÃ¡quina real, mas que na verdade Ã© um programa instalado em um sistema operacional base. Nessa categoria temos por exemplo o vmware que conta com versÃµes gratuitas para windows e linux e permite que o usuÃ¡rio instale um sistema operacional diferente funcionando sobre a mesma arquitetura da mÃ¡quina base.</li>
<li>Programas para virtualizaÃ§Ã£o de uma mÃ¡quina real diferente da mÃ¡quina base &#8211; nesta categoria temos as plataformas para desenvolvimento para celular por exemplo. Muitas vezes o processador de um celular tem arquitetura completamente diferente da mÃ¡quina onde trabalhamos. Temos ainda o simulador para Cell Broadband Engine fornecido pela IBM que pode ser usado no desenvolvimento para o processador que equipa o Playstation 3.</li>
<li>MÃ¡quinas virtuais e interpretadores de linguagens &#8211; nesta categoria encontramos a mÃ¡quina virtual da linguagem Java. SÃ£o programas que atuam para a linguagem de programaÃ§Ã£o como se fossem um computador real, dessa forma podemos criar bibliotecas que funcionam de forma idÃªntica em diferentes sistemas operacionais. Eventualmente Ã© necessÃ¡rio escrever alguma parte do cÃ³digo para a plataforma base nativa, quando isso acontece precisamos fornecer versÃµes compiladas desse trecho para as diversas plataformas onde nossa mÃ¡quina virtual vai executar.</li>
</ul>
<p>As mÃ¡quinas virtuais para linguagens de programaÃ§Ã£o tem um papel muito importante atualmente, pois vivemos uma Ã©poca em que as empresas precisam de flexibilidade para vencer. No passado o modelo que se adotava era ter todos os produtos de uma mesma linha de um mesmo fornecedor. O que aprendemos Ã© que esse tipo de situaÃ§Ã£o acaba por restringir as possibilidades da empresa, isto porque se o fornecedor tira um produto de linha, nÃ£o importa se aquele produto ainda atende os clientes, eles precisarÃ£o de atualizaÃ§Ãµes. EntÃ£o o modelo atual procura o desenvolvimento de sistemas baseado em integraÃ§Ã£o de produtos de fornecedores diferentes, mas que falam padrÃµes abertos e conhecidos, ou seja, ninguÃ©m Ã© o dono da especificaÃ§Ã£o, ela Ã© um acordo entre os fornecedores.</p>
<p>A grande jogada da Sun foi publicar para as pessoas qual era a especificaÃ§Ã£o da mÃ¡quina virtual Java permitindo que qualquer pessoa escrevesse sua prÃ³pria mÃ¡quina virtual para sua plataforma. Originalmente a mÃ¡quina virtual sÃ³ contava com duas versÃµes &#8220;oficiais&#8221; da Sun, uma para seu sistema operacional Solaris e outra para a plataforma Windows. A primeira mÃ¡quina virtual Java para Linux foi um projeto open-source chamadoÂ Blackdown Java, atualmente descontinuado. Com o tempo a Sun passou a fornecer uma implementaÃ§Ã£o oficioal para Linux.</p>
<p>Quando lanÃ§ada em 1995, a linguagem Java competia diretamente com usuÃ¡rios de C e C++ muitos baseados em Windows, entÃ£o a existÃªncia de uma linguagem poderosa, compatÃ­vel com Windows e que tinha um ambiente de programaÃ§Ã£o e execuÃ§Ã£o gratuitos foi uma grande porta de entrada para adoÃ§Ã£o dessa nova tecnologia. Acredito atÃ© que essa estratÃ©gia tenha sido a maior causa do sucesso da linguagem.</p>
<p>Um outro ponto interessante sobre usar esse tipo de plataforma Ã© que temos entÃ£o pelo menos dois nÃ­veis de trabalho independente que podem melhorar o desempenho de nossas aplicaÃ§Ãµes:</p>
<ol>
<li>Engenheiros continuam trabalhando para obter melhores e mais rÃ¡pidas mÃ¡quinas reais, para isso precisam fazer diversas mudanÃ§as, as vezes radicais como Ã© o caso da arquitetura do Cell Broadband Engine. Esse esforÃ§o de forma independente forÃ§aria a recompilaÃ§Ã£o e/ou adaptaÃ§Ã£o de aplicaÃ§Ãµes existentes para a nova arquitetura&#8230;</li>
<li>&#8230;Mas como existem as empresas que fornecem mÃ¡quinas virtuais baseadas em uma especificaÃ§Ã£o, entÃ£o essas equipes adaptam apenas a mÃ¡quina virtual para essas novas arquiteturas de hardware para tirar o melhor proveito das melhorias.</li>
</ol>
<p>Enquanto isso, se aprendermos a usar os <a href="http://www.paulomotta.pro.br/2009/08/28/a-importancia-dos-algoritmos/" target="_blank">algoritmos</a> existentes e nos dedicarmos a melhorar nossas tÃ©cnicas de desenvolvimento para evoluir a partir do <a href="http://www.paulomotta.pro.br/2009/08/12/artesanato-de-software/" target="_blank">artesanato de software</a>, nossas aplicaÃ§Ãµes podem ser executas em mÃºltiplas plataformas sem precisarem ser recompiladas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulomotta.pro.br/2009/08/31/java-e-o-uso-de-maquinas-virtuais/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

