Janino 2.7.8
Poderá descarregar em 5 segundos.
Sobre Janino
Janino é um super-pequeno, super-fastcompiler que lê uma expressão java, bloco ou arquivo de origem, e gera código java que é carregado e executado diretamente. Não se destina a ser uma ferramenta de desenvolvimento, mas um compilador incorporado para efeitos de compilação de tempo de execução, como avaliadores de expressão ou "páginas de servidor" motores como jSP. Propriedades O grande objetivo do design era manter o compilador pequeno e simples, ao mesmo tempo que sacrificava parcialmente a completude. Não gosto da ideia de carregar bibliotecas enormes para aplicações simples. Consulte Parser para obter a lista de funcionalidades linguísticas implementadas e em falta. Quando é que precisas de um avaliador de expressão eficiente? Digamos que se constrói um sistema de e-commerce, que calcula o custo de envio dos itens que o utilizador colocou no seu carrinho de compras. Como não conhece o modelo de custo de envio do comerciante no momento da implementação, pode implementar um conjunto de modelos de custos de envio que me vêm à mente (carga plana, em peso, por número de itens, ...) e selecionar um desses no tempo de execução. Na prática, certamente descobrirá que os modelos de custo de envio que implementou raramente corresponderão ao que o comerciante quer, pelo que deve adicionar modelos personalizados, que são específicos do mercador. Se o modelo do comerciante mudar mais tarde, tem de alterar o seu código, re-compilar e re-distribuir o seu software. Uma vez que isto é tão inflexível, a expressão de custos de envio deve ser especificada no tempo de execução, e não em tempo de compilação. Isto implica que a expressão deve ser digitalizada, analisada e avaliada em tempo de execução, razão pela qual precisa de um avaliador de expressão. Um avaliador de expressão simples analisaria uma expressão e criaria uma árvore "syntax". A expressão "a + b * c", por exemplo, compilaria em um "Sum" objeto que a primeira ópera é parâmetro "a" e quem é o segundo operand é a "Product" objeto que operands são parâmetros "b" e "c". Tal árvore de sintaxe pode ser avaliada relativamente rapidamente. No entanto, o desempenho do tempo de execução é cerca de 100 pior do que o do código java nativo.