Pergunta

Como o Oracle processa o Google pela Dalvik VM, fica claro, que você não pode implementar uma VM Java sem licença da Oracle (Editar: Matthew Flaschen aponta, que as reivindicações do Oracle podem não ser válidas. De qualquer forma, temos atualmente uma situação, onde o Oracle ameaças VM-suplementations.). Essa pode se tornar a morte para implementações de código aberto de Java (como Apache Harmony).

Não quero discutir o impacto ou a legitimação desse processo. Mas como um programa de java, quero dar uma olhada mais profunda nas alternativas, para estar preparado para todos os casos. Como vejo a criação de um compilador como um problema menor, meu principal interesse são implementações alternativas de VM, que servem a um propósito semelhante ao da JVM.

A VM que estou procurando deve atender a algumas condições:

  • livre de edições de patente
  • Existe uma implementação de código aberto
  • potencial para otimizações/bom desempenho
  • Independente da plataforma (a VM pode ser portada para diferentes plataformas sem obstáculos maiores)

Por favor, adicione algumas recomendações para mim.

Foi útil?

Solução

Llvm é uma máquina virtual de baixo nível muito boa. Ele pode suportar idiomas como C e C ++ e não possui suporte incorporado a recursos de alto nível, como a coleta de lixo.

Vmkit é uma implementação das máquinas virtuais Java e CLI no topo da LLVM. Como usa o Java Bytecode, isso provavelmente não ajudaria nos problemas de patentes.

Hlvm é outra máquina virtual de alto nível interessante construída sobre o LLVM. Provavelmente é diferente o suficiente para evitar patentes mais conhecidas, mas é direcionado principalmente para computação numérica e programação funcional.

No lado dinamicamente digitado, há Papagaio.

Na verdade, estou trabalhando em um compilador e VM para um idioma do meu próprio design, mas não conte com ele já terminado. ;-)

Lembre -se de que qualquer grande software infringirá inúmeras patentes, o importante é o quão bem conhecidas elas são (e quanto os proprietários dos patentes buscam ativamente infratores). Obviamente, todo o sistema de patentes é absurdo e estaríamos muito melhor nos livrar dele.

Outras dicas

Eu não acho que exista um software significativo livre de problemas de patentes.

Se você é um desenvolvedor independente ou trabalha para uma empresa menor, provavelmente não será atingido diretamente pelos problemas. É improvável que grandes empresas que mantêm patentes perseguem muitas pequenas reivindicações - é um processo caro e causar muito ressentimento. A SCO tentou algo assim e não funcionou muito bem para eles.

Eu me concentraria em encontrar a melhor ferramenta para o trabalho sem me preocupar muito com os problemas de patentes, caso contrário você nunca fará nada.

Graalvm é um projeto de pesquisa desenvolvido pela Oracle Labs e já em produção no Twitter. Não acredito nos meus olhos que ninguém menciona nada sobre isso, é tão estranho. De qualquer forma, Graalvm é uma extensão bem promissora da máquina virtual Java para suportar mais modos de linguagem e execução para aplicativos de execução como JavaScript, Python, Ruby, R, idiomas baseados em JVM como idiomas como Java, Scala, Kotlin, Clojure e LLVM, como C, como C e C ++. O Graalvm O projeto inclui um novo compilador Java de alto desempenho, chamado Graal, que pode ser usado em uma configuração just-in-time na VM do hotspot ou em uma configuração antecipada no substrato. O principal objetivo deste projeto é melhorar o desempenho da linguagem base Java Virtual Machine para corresponder ao desempenho dos idiomas nativos. Vamos resumir os recursos do romance que este projeto oferece e fazer uma breve explicação de acordo com os documentos por que você deve adotá -lo

  • Poliglota: Todos os idiomas (até baseados em LLVM) compartilham a mesma VM e seus recursos. A interoperabilidade aérea zero entre linguagens de programação permite escrever aplicativos de poliglota e selecionar o melhor idioma para sua tarefa
  • Nativo: Imagens nativas compiladas com GRAALVM antes do tempo melhoram o tempo de inicialização e reduzem a pegada de memória de aplicativos baseados em JVM.
  • Incorporável: O GRAALVM pode ser incorporado em aplicações gerenciadas e nativas. Existem integrações existentes no OpenJDK, Node.js, Oracle Database e MySQL Graalvm remove o isolamento entre linguagens de programação e permite a interoperabilidade em um tempo de execução compartilhado. Ele pode ser executado independente ou no contexto do OpenJDK, Node.js, Oracle Database ou MySQL.

  • Atuação:Os relatórios de benchmark de Graal mostram ótimas melhorias de desempenho em quase todas as suas implementações, graças à maneira como o GRAALVM realiza alocações de objetos

Se alguém não se convenceu agora, essa é uma boa escolha e é um projeto realmente incrível, você pode ver isso conversa por Christian Thalinger em “Por que Graal é um bom ajuste para o Twitter”

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top