DSLs as extensions of general-purpose languages
Ateji believes that developers using domain-specific language deserve the same language quality, completeness and tool support than those using mainstream general-purpose languages. Thanks to an original language composition technology, Ateji is able to design DSLs that are not small languages allowing to express only domain specific concepts, but rather large languages built on top of existing general-purpose languages. By design, the application programming language and the domain specific language share the same data representations, the same type systems, and the same programming tools. The language barrier disappears.
The case of modeling systems
The modeling community itself is acknowledging the problem. In a Cosytec white paper, the analysis of a large scheduling application has found that only 9% of the code is related to optimization. The relative sizes of the other parts are given in the following table:
Because of these integration problems, including performance problems, modeling languages are often seen as prototyping-only languages, useful for tuning the design of an optimization model, but not to be used for deployment.
Optimization for Java developers
OptimJ is not targeted only at optimization experts. We believe that it also provides an easy path for mainstream developers to embed optimization techniques into their applications: Same environment: Java developers can continue to use their favorite language and tools. No need to write integration code: OptimJ and Java share the same execution model. Easy installation: OptimJ is an Eclipse plugin. Steep learning curve: Java developers need to learn what constraint are, but not how to write them (constraints in OptimJ are plain Java expressions).
Imagine that you order today to your favourite software shop an application for handling customer orders on the web. This application will most probably be architectured around a Java core. The core communicates with a database for storing and retrieving orders, communicates with a web server for handling user requests, and communicates with an optimization engine for scheduling an optimal delivery plan.
Today this simple application will require at least 7 programming languages to handle these application domains.
is developing Java extensions for all of these application domains.