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 <metlov@fti.dn.ua>

    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.
