O que são alternativas à VM Java?
-
25-09-2019 - |
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.
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”