is a collection of Java libraries for different purposes. It has been developed in the context of the PhD Thesis of Marco Terzer at ETH Zurich, Switzerland. All libraries are used in the polco tool (for polyhedral computations, e.g. the enumeration of extreme rays of a polyhedral cone) and in the efmtool (for the enumeration of elementary flux modes for metabolic networks). This is of course not a guarantee that the libraries contain no bugs, but at least it might give some confidence on the functioning of the concepts.


Commonly useful utility classes, base for most of the other libraries. For me, particularly the classes IntArray, LongArray and DoubleArray — growable arrays with many utility methods — have been very useful.

javasoft-core.jar (classes and sources)


A new number type BigFraction is available, with big integer numerator and denominator for exact computations in the rationals. Conversion from and to standard Java number types are available. Furthermore, generic number operations for the most common Java number types are defined. This concept makes it easy to implement algorithms supporting different number types for algebraic computations.

javasoft-numeric.jar (classes and sources)
→ depends on javasoft-core.jar


Two extensions of Java's collection framework are available: (i) int collections are lists, maps, iterators etc. where the objects of interest are integers. For efficiency (memory and performance), the integers are not necessarily boxed into an object, but rather stored in their primitive form. (ii) multi-value maps are maps with one key mapped to multiple values. Such maps can be constructed from normal Java maps, can be inverted (values are becoming keys, and keys are the new values) or even joined. Joining map A and map B results in a new map AB, with key's of A, mapped to values of B. The link between the joined maps takes place from A's values to B's keys.

javasoft-collection.jar (classes and sources)
→ depends on javasoft-core.jar


The job classes support the execution of jobs, where a job is something similar to Java's runnable. Support for return values and exception handling is added, and jobs can be processed in the current thread, in its own new thread or even in an own system process. ExecJob instances, executed in an own system process outside of the JVM, can be monitored, killed or input and output can be piped to another process or input/output stream.

javasoft-job.jar (classes and sources)
→ depends on javasoft-core.jar


The logging classes use and extend Java's logging utility. For instance, a simple log formatter is available with configurable log output format.

javasoft-logging.jar (classes and sources)
→ depends on javasoft-core.jar


The jbase project implements a simple Java database. The database does not support transactions or optimization techniques like indexing. Supported operations include reading, appending, updating and removing of elements of a Table. For your own objects — having a known constant or even a variable persistent size — only a marshaller must be implemented to support the use of jbase Tables. For common Java types such as strings or numbers, existing marshallers are available. For concurrent use, a ConcurrentTable is available, supporting multiple readers and an exclusive writer. All toghether, jbase is a simple, powerful and efficient tool to store list-like data of any kind on disk.

javasoft-jbase.jar (classes and sources)

Unix4j is an implementation of Unix command line tools in Java. You can use the commands that you know from Unix in a Java program---you can pipe the results of one command to another as you know it from Unix. See

Fix4j is a collection of Java libraries and tools dealing with the Financial Information Exchange protocol (FIX). More information is available at

Valid XHTML 1.0 Transitional ©2008-2015 / Marco Terzer