Janino 2.7.8
Podrás descargarlo en 5 segundos.
acerca de Janino
Janino es un super-pequeño, super-rápidocompilador que lee una expresión Java, bloque o archivo de origen, y genera código de bytes Java que se carga y ejecuta directamente. No está pensado para ser una herramienta de desarrollo, sino un compilador incrustado para fines de compilación en tiempo de ejecución, como evaluadores de expresiones o motores "server pages" como JSP. Propiedades El objetivo principal del diseño era mantener el compilador pequeño y sencillo, mientras sacrificaba parcialmente la integridad. No me gusta la idea de llevar bibliotecas enormes para aplicaciones simples. Consulte Analizador para obtener la lista de características de idioma implementadas y que faltan. ¿Cuándo necesita un evaluador de expresiones eficiente? Supongamos que crea un sistema de comercio electrónico, que calcula el costo de envío de los artículos que el usuario puso en su carrito de compras. Dado que no conoce el modelo de costos de envío del comerciante en el momento de la implementación, podría implementar un conjunto de modelos de costos de envío que vienen a la mente (cargo fijo, por peso, por número de artículos, ...) y seleccionar uno de ellos en tiempo de ejecución. En la práctica, seguramente encontrará que los modelos de costos de envío que implementó rara vez coincidirán con lo que el comerciante quiere, por lo que debe agregar modelos personalizados, que son específicos del comerciante. Si el modelo del comerciante cambia más tarde, debe cambiar el código, volver a compilar y volver a distribuir el software. Dado que esto es tan irreflexible, la expresión de costo de envío debe especificarse en tiempo de ejecución, no en tiempo de compilación. Esto implica que la expresión debe examinarse, analizarse y evaluarse en tiempo de ejecución, por lo que necesita un evaluador de expresiones. Un evaluador de expresiones simple analizaría una expresión y crearía un "syntax tree". La expresión "a + b * c", por ejemplo, compilaría en un objeto "Sum" quién es el primer operando es el parámetro "a" y quién es un objeto "Product" que sus operandos son parámetros "b" y "c". Este árbol de sintaxis se puede evaluar con relativa rapidez. Sin embargo, el rendimiento en tiempo de ejecución es aproximadamente un factor de 100 peor que el del código Java nativo.