MVEL
Lenguaje de expresión de MVFLEX (MVEL) es un lenguaje de expresión y runtime de tiempo de ejecución híbrido, de tipo dinámico/estático, e incrustable, para la Plataforma Java. Originalmente comenzó como un lenguaje de utilidad para un marco de aplicación, pero el proyecto se desarrolla ahora de forma completamente independiente.
MVEL | ||
---|---|---|
Información general | ||
Tipo de programa | Lenguaje de expresión | |
Desarrollador | Mike Brock y varios colaboradores | |
Licencia | licencia Apache | |
Idiomas | inglés | |
Información técnica | ||
Programado en | Java | |
Plataformas admitidas | Java | |
Versiones | ||
Última versión estable | 2.0.19 ( 19 de noviembre de 2010 (14 años y 12 días)) | |
Enlaces | ||
MVEL se utiliza normalmente para exponer lógica básica para usuarios finales y programadores a través de configuración tal como archivos XML o anotaciones de Java. También puede utilizarse para analizar expresiones simples de JavaBean.
En tiempo de ejecución permite expresiones de MVEL para ejecutar, ya sea interpretativamente, o a través de un proceso generalmente pre-compilado con soporte para la generación de bytecode de tiempo de ejecución (runtime) y eliminar el overhead.
Ya que MVEL pretende aumentar el software basado en Java, toma la mayoría de su sintaxis directamente desde el lenguaje con algunas diferencias menores y capacidades adicionales de programación de Java. Por ejemplo: como un efecto secundario del modelo de escritura de MVEL, que trata las referencias de método y clase como variables regulares, es posible utilizar punteros de función y clase (pero solo para los métodos estáticos).
Ejemplos
editar millis = System.currentTimeMillis;
// get millis
time = millis();
MVEL también permite representar las colecciones como pliegues (o proyecciones) en una sintaxis Lisp-like.
namesOfParents = (parent.name in (hijos in empleados));// hijos in empleados correspondería a hijos de empleados en el lenguaje común
Ejemplo de Hola Mundo
editar System.out.println("¡Hola, mundo!");
MVEL usa clases y espacios de nombres de Java, pero no posee la capacidad de declarar espacios de nombres o clases.
A continuación se muestra un ejemplo de algoritmo Quicksort implementado en MVEL 2.0, lo que demuestra las capacidades de scripting del lenguaje:
import java.util.*;
// algoritmo quicksort principal
def quicksort(list) {
if (list.size() <= 1) {
list;
}
else {
pivot = list[0];
concat(quicksort(($ in list if $ < pivot)), pivot, quicksort(($ in list if $ > pivot)));
}
}
// define el método para concatenar listas.
def concat(list1, pivot, list2) {
concatList = new ArrayList(list1);
concatList.add(pivot);
concatList.addAll(list2);
concatList;
}
// crear una lista para ordenar
list = [5,2,4,1,18,10,15,1,0];
// sort it!
quicksort(list);
Véase también
editar- Portal:Software libre. Contenido relacionado con Software libre.
- Java
- OGNL
- Lenguaje de expresión
Enlaces externos
editar- (en inglés) Guía de idioma MVEL