<br><br><div class="gmail_quote">2011/1/13 Eden Cardim <span dir="ltr">&lt;<a href="mailto:edencardim@gmail.com">edencardim@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<div class="im">&gt;&gt;&gt;&gt;&gt; &quot;Alexei&quot; == Alexei Znamensky &lt;<a href="mailto:russoz@gmail.com">russoz@gmail.com</a>&gt; writes:<br>
<br>
</div>    Alexei&gt; O meu cotidiano no trabalho, right now, consiste, dentre<br>
    Alexei&gt; outras coisas, de instalar binários (.class compilados em<br>
    Alexei&gt; máquinas Windows/Intel de desenvolvimento) para executar em<br>
    Alexei&gt; JVMs que rodam em AIX/PowerPC. Seria muito difícil ter isso<br>
    Alexei&gt; sem VMs. Sem VMs, todos os developers (quase<br>
    Alexei&gt; que-independentemente da linguagem a ser escolhida) seriam<br>
    Alexei&gt; obrigados a usar algum servidor AIX para compilar e testar<br>
    Alexei&gt; seu código. Como os ciclos de desenvolvimento, hoje, estão<br>
    Alexei&gt; extremamente calcados em tentativa-e-erro (por vários<br>
    Alexei&gt; motivos que não vou entrar no mérito agora), o tempo gasto<br>
    Alexei&gt; para desenvolver o mesmo código caiu drasticamente, pois o<br>
    Alexei&gt; developer pode usar sua CPU e SO baratos para malhar o<br>
    Alexei&gt; código e rodar testes unitários, e o binário que ele gera<br>
    Alexei&gt; localmente pode ser simplesmente copiado para o servidor de<br>
    Alexei&gt; testes, onde será novamente, e mais duramente,<br>
    Alexei&gt; sabatinado. Não é preciso recompilar (ou, não seria, mas<br>
    Alexei&gt; nunca subestime a estupidez humana).<br>
<br>
    Alexei&gt; Por outro lado, VMs têm o custo de performance associado à<br>
    Alexei&gt; interpretação/execução dos opcodes virtuais, então com o<br>
    Alexei&gt; tempo, os implementadores de JVMs acabaram fazendo essas<br>
    Alexei&gt; &quot;traduções&quot; de opcodes virtuais para nativos em tempo de<br>
    Alexei&gt; execução, para melhorar esse ponto. Me parece uma evolução<br>
    Alexei&gt; quase que &quot;natural&quot; do conceito.<br>
<br>
Certo, mas porque não pegar os opcodes, distribuir, e compilar para<br>
código nativo na máquina-alvo antes de rodar, já que tudo vai<br>
eventualmente ser compilado de qualquer forma.<br></blockquote><div><br></div><div>Para que inventar um passo a mais no processo? Manda o bytecode em um formato padrão, e cada JVM que se vire. Essa &#39;recompilação&#39;, que eles chamam de JIT (&quot;Just In Time&quot; Compiling) é feita uma vez somente, então o impacto disso a longo prazo no tempo de execução é diluído, praticamente desprezível se pensarmos em termos de aplicações Java em servidores 24x7.</div>

<div><br></div><div>Além disso, o JIT é habilitado por default nos servidores, mas ele pode ser desabilitado no ambiente de desenvolvimento - o código &#39;inlined&#39; pelo JIT não gera algumas informações específicas em stack traces (por exemplo, o código executado em JIT não informa o número da linha, na &#39;recompilação&#39; essa informação se perde).</div>

<div><br></div><div>Além disso, para efetivamente gerar binários da plataforma-alvo você entra em uma outra categoria de problemas, envolvendo linkers, bibliotecas instaladas, pacotes, ferramentas de compilação específicas de cada plataforma, etc... você vai ter algum ganho de desempenho no executável, ok, enquanto que o seu processo de build vai deixar de rodar uma vez e vai ter de rodar em cada plataforma-alvo. Do ponto de vista de processo, me parece uma grande cagada.</div>

<div><br></div><div>[...]</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">   Alexei&gt; Digo mais (sob o risco de polemizar ainda mais o tópico): se<br>
    Alexei&gt; o Perl tivesse uma versão que gerasse bytecode no padrão de<br>
    Alexei&gt; JVM, aí sim a linguagem iria abocanhar de volta uma gorda e<br>
    Alexei&gt; suculenta fatia do mercado (claro que não seria somente<br>
    Alexei&gt; isso, não é bala de prata, mas isso ajudaria bastante,<br>
    Alexei&gt; IMHO).  &lt;/disclaimer&gt;<br>
<br>
É isso que o pessoal do parrot está tentando fazer.<br></blockquote><div><br></div><div>What&#39;s keeping them?</div><div> </div><div>Já posso rodar:</div><div><br></div></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">

<div class="gmail_quote"><div>java -jar Papagaio.jar -MData::Dumper -E &#39;say Data::Dumper( { a =&gt; 1, b =&gt; 2, c =&gt; 3 } )&#39;</div></div></blockquote><div class="gmail_quote"><div><br></div><div>???</div></div>

<div><br></div>[]s,<br>-- <br><font face="georgia, serif">Alexei Znamensky [russoz_gmail_com] [<a href="http://russoz.wordpress.com" target="_blank">russoz.wordpress.com</a>] [<a href="http://www.flickr.com/photos/alexeiz" target="_blank">www.flickr.com/photos/alexeiz</a>]<br>

<span style="border-collapse:collapse"><div>«Only love / Can bring the rain / That makes you yearn to the sky»</div></span></font><br>