MVEL

From Seo Wiki - Search Engine Optimization and Programming Languages

Jump to: navigation, search
MVEL
File:Mvel logo.png
Developer(s) Mike Brock and Various Contributors
Stable release 2.0.12 / July 15, 2009; 144794430 ago
Written in Java
Operating system Cross-platform
Type Expression Language (EL)
License Apache License
Website http://mvel.codehaus.org/

MVFLEX Expression Language (MVEL) is a hybrid dynamic/statically typed, embedable Expression Language and runtime for the Java Platform. Originally started as a utility language for an application framework, the project is now developed completely independently.

MVEL is typically used for exposing basic logic to end-users and programmers through configuration such as XML files or annotations. It may also be used to parse simple JavaBean expressions.

The runtime allows MVEL expressions to be executed either interpretively, or through a pre-compilation process with support for runtime bytecode generation to remove overhead.

Since MVEL is meant to augment Java-based software, it borrows most of its syntax directly from the Java programming language with some minor differences and additional capabilities. For example: as a side-effect of MVEL's typing model, which treats class and method references as regular variables, it is possible to use both class and function pointers (but only for static methods).

     millis = System.currentTimeMillis;
 
     // get millis
     time = millis();

MVEL also allows collections to be represented as folds (or projections) in a Lisp-like syntax.

    namesOfParents = (parent.name in (children in employees));

Contents

Hello world example

     System.out.println("Hello, world!");

MVEL relies on Java namespaces and classes, but does not possess the ability to declare namespaces or classes. In this sense, MVEL is a completely functional language.

Quicksort Example

Here is an example of the Quicksort algorithm implemented in MVEL 2.0, demonstrating the scripting capabilities of the language.

import java.util.*;
 
// the main quicksort algorithm
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 method to concatenate lists.
def concat(list1, pivot, list2) {
    concatList = new ArrayList(list1);
    concatList.add(pivot);
    concatList.addAll(list2);
    concatList;
}
 
// create a list to sort
list = [5,2,4,1,18,10,15,1,0];
 
// sort it!
quicksort(list);

See also

External links

Personal tools

Served in 0.298 secs.