OptimJ is an extension for Java with language support for writing optimization models and abstractions for bulk data processing.
OptimJ is compatible with development tools such as Eclipse, CVS, JUnit or JavaDoc.
This map coloring example also shows features specific to optimization that have no direct equivalent in Java, introduced by the keywords model, var, constraints.
A model is an extension of a Java class that can contain not only fields and methods but also constraints and an objective function.
OptimJ also introduces the notion of a decision variable, which basically represents an unknown quantity whose value one is searching.
The generalist concepts added to Java by OptimJ make the expression of OR models easier or more concise.
Tuples are ubiquitous in computing, but absent from most mainstream languages including Java.
OptimJ provides a notion of tuple at the language level that can be very useful as indexes in combination with associative arrays.
A common example is the sum: This construction is very similar to the big-sigma summation notation used in mathematics, with a syntax compatible with the Java language.
It can then be customized in many different ways, from simple coloring up to providing new widgets for displaying data elements.
The compiler-generated OptimJ GUI saves the OR expert from writing all the glue code required when mapping graphical libraries to data.
Another part of the OptimJ GUI reports in real time performance statistics from the solver.