Support & Community

ojAlgo is a mature, open source Java library for mathematics, linear algebra and optimisation. It is built and maintained by Optimatika and a community of contributors. Development began in 2003 and the project is hosted at github.com/optimatika/ojAlgo.

Documentation, Support & Services

User documentation, with code examples, can be found here on this site in the form of blog posts. The Code Examples page contains a complete list of example programs used in the blog posts. All blog posts containing example code are categorised as Documentation.

Programming questions related to ojAlgo are best asked at Stack Overflow. Just remember there are rules and standards regarding what questions you can ask, how you should ask them, and what you should do when you get a reply. It’s also a good idea to actually mention ojAlgo and tag the question with ojalgo and whatever other tags you find suitable.

Bug reports, or any issue with existing code, should be posted at GitHub Issues. GitHub is all about collaboration — if you raise an issue there, please participate in resolving it.

GitHub Discussions can be used to discuss anything related to ojAlgo.

ojAlgo is Open Source, and you are strongly encouraged to clone or fork the repository and work directly with the source code. The source code is (part of) the documentation, and you should read it.

Private Commercial Support

Optimatika is the primary sponsor of ojAlgo — it’s built by Optimatika — and we offer commercial support.

If you want private communications directly with the ojAlgo developer(s) regarding how to best solve your particular problem, then you should purchase ojAlgo Support from Optimatika. Use the contact form to get in touch.

A lightweight alternative is to become a GitHub Sponsor. Sponsors get direct private communication with the ojAlgo developers and access to the private ojAlgo-extensions repository.

When a model outgrows pure Java

The built-in solvers are pure Java with zero dependencies, and they handle the great majority of the problems put to them. Some models eventually outgrow them, and there is no pure-Java solver stronger than ojAlgo’s own. Models written against ExpressionsBasedModel are not tied to a solver, so there are two ways forward and neither requires rewriting the model.

Bring your own solver. The extensions let ExpressionsBasedModel solve using Clarabel, CPLEX, Gurobi, MOSEK or OR-Tools. You obtain the solver and, where applicable, the licence; the extension connects it. The native libraries then run inside your own application process, which is what makes this the more demanding option to deploy and maintain.

Use the Optimisation Service. Optimatika’s Optimisation Service is a solver server you deploy in your own cluster, from the AWS, Azure or Google Cloud marketplace. A small pure Java client configures ExpressionsBasedModel to solve through it, so no native code enters your application. In capability it sits between the built-in pure Java solvers and the large commercial solvers — for many models that outgrow pure Java it is enough, and it is cheaper and considerably less work than licensing, packaging and operating a commercial solver yourself.

ojAlgo itself remains Open Source and free to use, and it always will be. These are options for models that need more, not a paywall on anything that works today.