JEL is the library for evaluating a simple single line expressions in Java. There is certain class of tasks where user should be given a possibility to enter an expression of his own into the program. Typical examples include : plotting user-defined functions, fitting the data by the arbitrary user-defined functions, calculation of integrals and solving differential equations involving the user-defined functions... and many many more.... The key term above is the "evaluation of the user-defined functions", which is exactly what JEL is supposed to do for You.
The key feature of JEL is the fact that it is a compiler !!! To write the interpreter for expressions is the task, close to trivial but incurs a HUGE perfomance penalty due to the fact that Java is interpreted language itself. JEL, in contrary, compiles expressions directly to Java bytecodes, allowing their fast evaluation. Moreover, if user's Java virtual mashine has JIT compiler, expressions are transparently compiled into the native machine code, resulting in performance HIGHER that for most C written interpreters (plus JEL do not require recompilation when transferred from platform to platform).
The complete list of JEL features is given in its manual.
Relaxed locking in JEL classloader to work around the deadlocks in conjunction with Oracle JRockit JVM; parser now ignores the TAB character; the range of hexadecimal and octal integer literals is extended; provide an alternative JDK5-compiled JAR to further reduce the library size.
Be sure You have read and understand the terms of the GNU General Public License.
Since the version 2.0.1 JEL is licensed under GPLv3. JEL is available in two forms:
Contents of both archives is exactly the same.
Also available online : |README| MANUAL|RELEASE NOTES|
2.0.1 (.tar.gz, zip); 2.0.0 (.tar.gz, zip); 0.9.11 (.tar.gz, zip); 0.9.10 (parser rewrite, .tar.gz, zip); 0.9.9 (.tar.gz, zip); 0.9.8 (.tar.gz, zip); 0.9.7 (.tar.gz, zip); 0.9.6 (.tar.gz, zip); 0.9.5 (.tar.gz, zip); 0.9.4 (.tar.gz, zip); 0.9.3 (buggy, .tar.gz, zip); 0.9.1 (.tar.gz, zip); 0.9.0 (code generator rewrite, .tar.gz, zip); 0.8.3 (.tar.gz, zip); 0.8.3-JDK1.2 (.tar.gz, zip); 0.8.1 (.tar.gz, zip); 0.8.1-JDK1.2 (.tar.gz, zip); 0.8 (.tar.gz, zip); 0.2 (.tar.gz, zip); 0.1 (.tar.gz, zip);
If there is a need, don't hesitate to post to these lists. I (KLM) always monitor them.
Other JVM's and JIT's tested (Blackdown Linux port of SUN's JDK with "tya" JIT, HP UX JDK with HP JIT, and most JVM's in interpreted mode) are free of this bug. The best way to see if JEL runs on Your JVM is to run JEL testsuite (now includes about 100 tests and instantiates close to 1000 different expressions). If some tests are failing -- tell me about it..
JEL is distributed to You under terms of the GNU General Public License. This means it is "free software" . However, any program, using JEL MUST be the "free software" as well.
I would be very happy to consider requests for JEL enchancements and modifications (to fit some particular purpose), syntax of the input language, for example, can be easily changed... Contact me directly if You need customized, supported version of JEL.
JEL © 1998 — 2015 by Konstantin L. Metlov <email@example.com>