What software builds on ojAlgo, and what category developer finds ojAlgo useful? I’ve been meaning to write a post about that for some time now.
Recently I’ve also felt an urgency to check out ChatGPT. So, to help write this blog post about ojAlgo usage I asked ChatGPT “Who uses ojAlgo?”
This is the answer ChatGPT gave:
ojAlgo is used by a variety of organizations and individuals for a wide range of applications, including scientific computing, financial modeling, and machine learning. Some examples of companies that use ojAlgo include:
- Google: Google uses ojAlgo in some of their products, including Google Sheets.
- IBM: IBM uses ojAlgo in some of their internal projects.
- Vanguard: Vanguard, one of the world’s largest investment management companies, uses ojAlgo in their portfolio optimization software.
- Apache Mahout: Apache Mahout, a machine learning library for Hadoop, uses ojAlgo for its linear algebra operations.
- OpenGamma: OpenGamma, a financial technology company, uses ojAlgo for its quantitative finance software.
In addition to these companies, many individual developers and researchers use ojAlgo for their projects.
That’s a surprisingly specific answer, with somewhat credible examples. Quickly checked the Apache Mahout and OpenGamma repositories at GitHub and found no trace of ojAlgo. Google, IBM or Vanguard are big corporations. Not at all unlikely that ojAlgo would be used in some of their internal applications. I know for a fact that many financial institutions around the world (companies I worked for or supported in various ways) use ojAlgo in portfolio selection and risk management systems. Among other things ojAlgo is part of the software running many of the world’s largest financial exchanges. Not in the trading engine itself, but in surrounding systems performing various (risk) calculations. These are all proprietary applications.
Searching code repositories at GitHub. You find that, among others, both Hadoop and Elasticsearch have dependencies on ojAlgo. They use it to solve some sort of resource allocation problem (cluster configuration optimisation). The fact that two such widely used tools have a dependency on ojAlgo means it is installed on many servers around the world. Some further examples from GitHub are:
- https://github.com/RBVI/clusterMaker2
- https://github.com/apache/datasketches-vector
- https://github.com/meteoinfo/MeteoInfo
- https://github.com/molgenis/systemsgenetics
- https://github.com/CogComp/cogcomp-nlp
- https://github.com/MKLab-ITI/image-forensics
- https://github.com/broadinstitute/gatk
- https://github.com/equinor/neqsim
- https://github.com/imglib/imglib2-algorithm
- https://github.com/LLNL/DFTT
That’s just a few examples in no particular order.
Later, in a different chat/thread I asked ChatGPT the same question again. This time the answer was more general with no real reason to doubt what it’s stating:
ojAlgo is a popular linear algebra library for Java that is used by a variety of individuals and organizations for various applications. Here are a few examples:
- Data scientists and machine learning practitioners use ojAlgo for matrix and vector operations in various applications, including regression analysis, classification, clustering, and more.
- Engineers and scientists use ojAlgo for simulations, optimizations, and numerical analysis in areas such as physics, chemistry, biology, and financial modeling.
- Developers and programmers use ojAlgo for implementing algorithms that involve linear algebra operations, such as computer graphics, image processing, signal processing, and more.
- Academic researchers use ojAlgo for their scientific research in various fields such as mathematics, physics, engineering, and computer science.
- Companies such as Google, Oracle, and Cisco have used ojAlgo in their applications.
ojAlgo has a large user base due to its ease of use, performance, and flexibility.
Still, one may wonder specifically which developers, data scientists, engineers and academic researchers find ojAlgo useful. The key answer to that question is that they need a Java (or JVM based) solution, and given that “constraint” they require the absolute best performance and reliability. ojAlgo’s main offerings are:
- The fastest and most resource efficient pure Java linear algebra library. There are many Java linear algebra libraries. Frankly, several of them are better known and have a larger user base than ojAlgo. (Even if they perform poorly, and haven’t been maintained for years.) Most likely, the ones that chose ojAlgo, did not just pick the first alternative that came up in a google – they had more specific requirements and continued the search. The key differentiator here is performance – ojAlgo really is the top performer.
- The only pure Java suite of mathematical optimisation solvers (LP, QP and MIP). There are few Java alternatives in this area. Top quality optimisation solvers typically do not run on the JVM. To use them you need to manage and call native code. ojAlgo’s key benefit here is being the Java alternative.
- Pure Java with zero dependencies! What ever features and functionality ojAlgo delivers, it is code in ojAlgo itself that provide it. There are no dependencies of any kind!