Home » Archives for Geoffrey De Smet

Author Archives: Geoffrey De Smet

Geoffrey De Smet (Red Hat) is the lead and founder of OptaPlanner. Before joining Red Hat in 2010, he was formerly employed as a Java consultant, an A.I. researcher and an enterprise application project lead. He has contributed to many open source projects (such as drools, jbpm, pressgang, spring-richclient, several maven plugins, weld, arquillian, ...). Since he started OptaPlanner in 2006, he’s been passionately addicted to planning optimization.

How much faster is Java 17?

Java 17 (released yesterday) comes with many new features and enhancements. However, most of those require code changes to benefit from. Except for performance. Simply switch your JDK installation and you get a free performance boost. But how much? Is it worth it? Let’s find out by comparing the benchmarks of JDK 17, JDK 16 and JDK 11. Benchmark methodology ...

Read More »

Static website generation with Java, Maven and JBake

Did you notice? Last week, we migrated the entire www.optaplanner.org website (1399 files) to build with Java and Maven, instead of Ruby and Rake. On the face of it, nothing changed. But in the sources, for our team of Java developers, it is a game changer. Our java team can now contribute to the website easily. Within hours of completing ...

Read More »

How much faster is Java 15?

Java 15 was released on the 15th of September 2020 and has promised to bring with it a few performance tweaks in its G1GC and ParallelGC garbage collectors. What does it mean for OptaPlanner? Are there any benefits to be gained from upgrading from JDK11 to JDK15? In 2019, we found out that ParallelGC works better for OptaPlanner. Is that ...

Read More »

Solve the facility location problem

We have created a new quickstart that extends OptaPlanner use case portfolio with the facility location problem and also demonstrates building a cloud-native application using Quarkus, the new Java Native stack. The facility location problem The facility location problem consist of a set of potential facility locations and a set of consumer points that need to be served by the ...

Read More »

Constraint Streams – Modern Java constraints without the Drools Rule Language

Traditionally, to scale out with OptaPlanner, you had to learn DRL. No more. With the new Constraints Streams API, inspired by Java 8 Streams and SQL, you can now write your constraints in Java (or Kotlin or Scala) and still benefit from incremental calculation. Underneath, Constraints Streams (CS) still use the powerful Drools engine. We also still fully support score ...

Read More »

A giant leap forward with multithreaded incremental solving

OptaPlanner finally supports multithreaded incremental solving. The speedup is spectacular. Even with just a few CPU cores, it triples the score calculation speed. See the results below. To activate it, a single extra line in the configuration suffices. The original feature request stems from 2007. Throughout the years, step by step, we diligently prepared the internal architecture for it. So ...

Read More »

Java Reflection, but much faster

What is the fastest way to read a getter from a Java class without knowing the class at compilation time? Java frameworks often do this. A lot. And it can directly influence their performance. So let’s benchmark different approaches, such as reflection, method handles and code generation. The use case Presume we have a simple Person class with a name ...

Read More »

Drools Canonical Model – Pure Java Rules

Rule engines, like Drools, typically  make use of a custom language to define a set of rules. For example, the Drools compiler translates a drl file to an internal representation (the KiePackages) that is subsequently used to generate the ReteOO/Phreak network that will perform the rules evaluation. This internal representation was never really intended to be generated or consumed by ...

Read More »