Coder Social home page Coder Social logo

juel's Introduction

JUEL - Java Unified Expression Language

JUEL is an implementation of the Unified Expression Language (EL), specified as part of the JSP 2.1 standard (JSR-245), which has been introduced in JEE5. Additionally, JUEL 2.2 implements the JSP 2.2 maintenance release specification for full JEE6 compliance.

Motivation

Once, the EL started as part of JSTL. Then, the EL made its way into the JSP 2.0 standard. Now, though part of JSP 2.1, the EL API has been separated into package javax.el and all dependencies to the core JSP classes have been removed.

In other words: the EL is ready for use in non-JSP applications!

Features

JUEL provides a lightweight and efficient implementation of the Unified Expression Language.

  • High Performance – Parsing expressions is certainly the expected performance bottleneck. JUEL uses a hand-coded parser which is up to 10 times faster than the previously used (javacc) generated parser! Once built, expression trees are evaluated at highest speed.
  • Pluggable Cache – Even if JUEL's parser is fast, parsing expressions is relative expensive. Therefore, it's best to parse an expression string only once. JUEL provides a default caching mechanism which should be sufficient in most cases. However, JUEL allows to plug in your own cache easily.
  • Small Footprint – JUEL has been carefully designed to minimize memory usage as well as code size.
  • Method Invocations – JUEL supports method invocations as in ${foo.matches('[0-9]+')}. Methods are resolved and invoked using the EL's resolver mechanism. As of JUEL 2.2, method invocations are enabled by default.
  • VarArg Calls – JUEL supports Java 5 VarArgs in function and method invocations. E.g., binding String.format(String, String...) to function format allows for ${format('Hey %s','Joe')}. As of JUEL 2.2, VarArgs are enabled by default.
  • Pluggable – JUEL can be configured to be transparently detected as EL implementation by a Java runtime environment or JEE application server. Using JUEL does not require an application to explicitly reference any of the JUEL specific implementation classes.

Documentation

Visit the JUEL site at Sourceforge.

Downloads

The JUEL distribution contains the following JAR files:

  • juel-api-2.2.x.jar - the javax.el API classes.
  • juel-impl-2.2.x.jar - the de.odysseus.el implementation classes.
  • juel-spi-2.2.x.jar - the META-INF/service/javax.el.ExpressionFactory service provider resource. (You will need this if you have several expression language implementations on your classpath and want to force JUEL's implementation to be chosen by ExpressionFactory.newInstance()).

The JARs are also available via Maven:

<dependency>
  <groupId>de.odysseus.juel</groupId>
  <artifactId>juel-api</artifactId>
  <version>2.2.x</version>
</dependency>

<dependency>
  <groupId>de.odysseus.juel</groupId>
  <artifactId>juel-impl</artifactId>
  <version>2.2.x</version>
</dependency>

<dependency>
  <groupId>de.odysseus.juel</groupId>
  <artifactId>juel-spi</artifactId>
  <version>2.2.x</version>
</dependency>

Development

Visit the Github project.

Status

JUEL is considered production stable. The code is well tested (80% coverage) and feature complete.

License

JUEL is available under the Apache License, Version 2.0.

(c) 2006-2012 Odysseus Software

juel's People

Contributors

beckchr avatar adamcrume avatar danhaywood avatar meniluca avatar

Watchers

James Cloos avatar J.C avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.