BT

JRuby 1.7 Preview 1: Runtime 1.9 e aumento de desempenho com Invokedynamic

por Mirko Stocker , traduzido por Leonardo Campos em 27 Jun 2012 |

A primeira versão preview do JRuby 1.7 adota por padrão o runtime do Ruby 1.9 e é muito mais rápida graças ao invokedynamic do Java 7. O InfoQ.com ouviu Charles Nutter, criador do JRuby, para saber mais sobre o futuro do projeto no Java 7, os Fibers e a ida da equipe do JRuby para a Red Hat.

O primeiro preview do JRuby 1.7.0 saiu mais de um ano depois do lançamento da primeira versão da série 1.6 do JRuby. O JRuby 1.6 foi a primeira versão compatível com o Ruby 1.9.2. Além de o JRuby 1.7 adotar o Ruby 1.9 como runtime padrão, há várias outras mudanças:

  • Correções de compatibilidade em relação ao Ruby 1.9.x;
  • Suporte para o invokedynamic do Java 7;
  • Melhorias no desempenho e em concorrência e paralelismo;
  • Descontinuação do suporte ao Java 5 (sendo exigido o Java 6 em diante);
  • Atualização para o Rubygems 1.8.24;
  • Atualização para o Rake 0.9.2.2.

O suporte para o invokedynamic é habilitado automaticamente, mas recomenda-se a execução no build mais recente do Java 7 para obtenção do máximo em melhorias de desempenho. O InfoQ.com ouviu Charles Nutter, criador do JRuby, para saber mais sobre o que o JRuby ganha com o suporte do invokedynamic:

InfoQ: Quais o ganhos com o invokedynamic?

Charles Nutter: A utilização do invokedynamic no JRuby nos aproxima muito da nossa meta de ter o Ruby com desempenho igual ao do Java. Agora que a JVM entende exatamente como fazemos chamadas dinâmicas, pode-se otimizá-las da mesma forma que é feito com as chamadas normais de tipagem estática. De repente, todos os truques que tornam o Java rápido passam a poder ser aplicados no código Ruby. É realmente extraordinário.

Há um potencial imenso a ser explorado, tanto no JRuby quanto na própria JVM. As formas que o JRuby atual utiliza o invokedynamic não são 100% otimizadas e em alguns casos, sua demanda por recursos cria uma lentidão artificial. Agora que temos o invokedynamic funcionando e estável, podemos otimizar o uso desse recurso. A versão inicial do Java 7 não tratou bem da otimização do invokedynamic, deixando-o apenas funcional. O Update 2 trouxe suporte sólido ao JIT da JVM, além de otimizações para o compilador do lado do servidor.  O Update 6 deve incluir uma reescrita na lógica do JIT, que tornará mais fácil a aplicação de todas as otimizações da JVM nas chamadas invokedynamic. Trabalharemos com a equipe do Hotspot para garantir que o invokedynamic continue sendo melhorado.

InfoQ: O JRuby agora é a implementação mais rápida do Ruby?

Nutter: Acredito que finalmente pode-se dizer isso com certeza. Sempre haverá casos que não tratamos bem ou que requerem melhorias futuras na JVM, mas em geral o JRuby deveria ser sempre mais rápido que outras implementações. Com o trabalho que estamos fazendo no invokedynamic no JRuby e no OpenJDK, nos distanciaremos ainda mais.

InfoQ: Pode nos falar dos Fibers? Há rumores de que o Java 8 possa trazer algum suporte para "coroutines".

Nutter: Infelizmente não há espaço para a entrada de algo tão grande quanto coroutines no Java 8, mas eles são uma possibilidade para o Java 9. Para aumentar o desempenho da implementação do Fiber do JRuby, estamos trabalhando com um estudante do Google Summer of Code para explorar uma implementação com base no Kilim. Não sabemos se o esforço terá sucesso, mas já houve progresso.

InfoQ: Tom Enebo e você estão saindo da Engine Yard para a Red Hat, mas continuarão trabalhando no JRuby. Vocês também vão trabalhar no Ceylon, a linguagem para a JVM criada pela Red Hat?

Nutter: Tudo é possível! Estou entusiasmado com a mudança, pois será parte do meu trabalho explorar outras linguagens para a JVM e o suporte da JVM para linguagens, além de trabalhar no JRuby. Acredito que a JVM é realmente o melhor ambiente para linguagens, sejam estáticas ou dinâmicas. Agora vou provar isso.


O download do preview 1 pode ser feito no site do JRuby. E se você estiver usando o RVM, pode fazer a instalação com o comando rvm install jruby-1.7.0.preview1.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião
Feedback geral
Bugs
Publicidade
Editorial
Marketing
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2016 C4Media Inc.
Política de privacidade
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.