This document corresponds to the jel version 2.1.2 Distribution assembled November 17 2020. Welcome to Java Expressions Library (JEL) . JEL is designed to evaluate expressions, written in simple, JAVA like language. Unlike many other approaches to the same problem, JEL, is not interpreter but it is a compiler. It compiles expressions directly to Java bytecodes. Other feature of JEL is the possibility to call Java functions directly (without any wrappers) from the expressions it compiles. JEL also performs constants folding extended to static methods (so that sin(1.0) is considered a constant expression and evaluated at a compile time) with possibility to override this behaviour on method by method basis, i.e. for Math.random(). One of the design goals of JEL was to make it as SMALL as possible, but with extensibility in mind. You can find more details about JEL and its features if You open file ./docs/manual.html in Your favorite WWW browser. I. DISTRIBUTED FILES The structure of the distribution is following: ./docs Contains documentation, both written and javadoc generated. ./lib Holds precompiled JEL library in two versions : optimized (jel.jar),and debug (jel_g.jar). If You use JEL regularly it is the best to put one of those libraries into Your CLASSPATH. the third file in this directory (jel_rt.jar) is a runtime for unserialized JEL compiled expressions (includes String manipulation library). ./samples Contains samples and test suite for JEL. Currently (version 2.1.2) there is only one sample, Calculator. If You write a simple, free program, using JEL, I will be happy to put is as a sample. Anyway, there are still more samples coming in the next version. ./source Contains JEL source. If You make any modifications to JEL it is the best to do them directly in the ./src directory, because it most closely resembles the structure of my SVN repository. This directory contains ALL source files, some of them are duplicated in ./samples but ./src is the master copy. It should be possible to build JEL by running ant in this directory. II. INSTALLATION There is not much care to take about JEL installation. First, of course, You need to install JAVA (if You don't have it already). JEL 2.0 should work in any JDK 5 compatible Java virtual machine (for older JDKs please use earlier versons of JEL). If You don't want to type long command lines I would suggest to put JEL into the Java CLASSPATH. The other approach can be to write shell scripts, prepending ./lib/jel.jar to CLASSPATH of programs, using JEL. I didn't prepackage such scripts first of all, because I have CLASSPATH set, and, second , because these scripts will be very much platform dependent. When compling JEL from source it is important to have the code generator tables in place (otherwise the exception with the message "[DEBUG] Exception when reading tables" will be thrown). The tables are kept in "gnu/jel/tables.dat" file inside of lib/*.jar archives, and (provided gnu/jel/TableKeeper.java is unchanged) can be simply copied into src/gnu/jel before running the freshly recompiled code. If you change the tables in TableKeeper.java, it is necessary to regenerate the "tables.dat". If you use the ANT build script the "tables.dat" file will be rebuilt automatically for you. Otherwise you'll need to compile the TableWriter.java and run it inside of "source/src/java" directory with the command "java gnu.jel.TableKeeper". After the run, the file "gnu/jel/tables.dat" will be written. The non-debug version of TableKeeper.java has the code for writing "tables.dat" file omitted. III. TEST SUITE It is recommended to run JEL test suite after the installation. Please consult ./samples/testsuite/README.TestSuite for details on how to run it. IIV. LICENSING JEL is distributed to You under terms of the GNU General Public License. This means it is "free software" (see file ./COPYING for precise definition). However, any program, using JEL _MUST_ be the "free software" as well. Commercial support is available. To find out more contact me (metlov@fti.dn.ua) directly. I would be very happy to consider requests for JEL enhancements 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. (c) 1998-2020 Konstantin L. Metlov This software is distributed to You under the terms of the GNU General Public license (GPLv3 and later). Copying and modifications are permitted. NO WARRANTY of any kind is provided. For precise terms of the license see the file COPYING in the root of the distribution.