JEXL 3.0 主要改进
==================
* A redesigned API that properly segregates the "public" part and the
"internal" parts of JEXL.
* A real difference between Expression and Script (scripts accept
statements: for, while, etc).
* The ability to create JEXL functions in script, closure/variables
hoisting/currying included.
* A set of assignment operators (+=, *= , ...).
* A set of String matching operators (^= startsWith, $= endsWith) and
their negative counterparts (!^, !$)
* A range operator (x .. y) to ease writing loops (for(var x : 1 .. 10))
* A literal set syntax to ease creating sets: { 1, 2...}
新特性
====================
* JEXL-178: 'Unsolvable property' message to provide details about
underlying exception
* JEXL-177: Unified expressions to be used in String literals in JEXL
scripts
* JEXL-176: Synonym operator name 'in' for operator =~ // Remove
'foreach...in' syntax
* JEXL-174: Overloadable property access operators
* JEXL-173: Duck-typed java closures
* JEXL-170: Implement assignment operators
* JEXL-164: public getters for high/low properties for IntegerRange and
LongRange
* JEXL-152: Extend Range literal to support Long values
* JEXL-149: Set Construction as per EL 3.0 spec
* JEXL-133: String matching Operator short-hand inspired by CSS3
* JEXL-128: ObjectContext should implement NamespaceResolver
* JEXL-127: Allow the creation of functions
* JEXL-123: Redesign API for stability
* JEXL-122: Move JEXL from org.apache.comms.jexl2 to
org.apache.commons.jexl3
* JEXL-136: Script calls within scripts may fail with number arguments
* JEXL-135: Using map as script parameter or local variable
* JEXL-134: Issue with evaluation of concat of variables : \r + \n gives 0
* JEXL-131: UnifiedJexl parsing may fail with NPE
* JEXL-130: Ternary Conditional fails for Object values
* JEXL-126: Decimal numbers literals should be 'double' by default
(instead of 'float')
Bugs 修复
==================
* JEXL-184: dot-ed> * JEXL-180: Documentation - suggests using float for financials
* JEXL-171: Map access operator does not work if key name clashes with
map property name
* JEXL-169: A string is wrongly> * JEXL-168: Dedicated operator for String concatenation
* JEXL-79: Add support for growable arrays (ArrayLists)
* JEXL-167: Possible loss of value when converting BigDecimal to BigInteger
* JEXL-166: Incorrect operator symbol for bitwise complement in
jexlArithmetic
* JEXL-163: empty(new ("java.lang.Long", 4294967296)) returns true
* JEXL-162: empty() function throws an exception : unsupported type
* JEXL-160: typo in package.html
* JEXL-158: Handle locale decimal separators correctly
* JEXL-157: Replace File.pathSeparator with File.separator
* JEXL-146: Performance problem in Interpreter.unknownVariable mechanism
* JEXL-145: Sandbox calling wrong check (classname vs> * JEXL-144: Empty array property setting fails
* JEXL-142: Map expression issue with empty key
* JEXL-141: Suffix for Big Decimal and Big Integer Literal is
incorrectly mentioned in Java docs
* JEXL-137: Invalid script variable list for nested array/map access