It is an understatement to say that from a deployer’s point of view, the Java requirement for FileMaker Server 2023 has given one a few sleepless nights.
Fortunately, things have become much better than they have been in the past. The Java dependency was reduced to just the web publishing engine.
Most issues stem from using the wrong version of the Java Runtime Environment (JRE). This Claris knowledge base article outlines the different specific versions of Java required for each version of FileMaker Server 2023.
FileMaker 2023 (aka 19.7) makes a significant jump by using Java version 17 (up from 11 that has been used since 19.2). It introduces a way to force Java to perform Garbage Collection. This has the potential to reclaim unused memory and keep the Web Publishing Engine more performant. More about this later in this blog post.
Two Ways to Install Java
Before Oracle introduced licensing on its version of Java, each FileMaker Server just installed the proper version of the Java runtime engine (JRE) that it needed. Starting with FileMaker Server 18.0.2, you needed to pick which Java vendor you wanted to use. You could choose from Oracle, with a paid license, or OpenJDK, with the free version.
In the Admin Console
When you first enable the Web Publishing Engine in the Admin Console, you will be prompted to download Java.
The instructions take you to the Adoptium website. There you can download the zip version of the JRE. Then you can upload it (select Browse… on the dialog when your download has finished). This way, FileMaker Server installs that for its own use in the web publishing folder:
/FileMaker Server/Web Publishing/Java/
C:\Program Files\FileMaker\FileMaker Server\Web Publishing\Java\
Note that this does not apply to the Ubuntu Linux version of FileMaker Server. On Linux, FileMaker Server 2023 automatically installs the OpenJDK version of both the JRE (Java Runtime Engine) and now also the JDK (Java Development Kit).
Under the hood, FileMaker Server 2023 also sets the system-wide JAVA_HOME system environment variable:
This leads us to the second way you can install Java.
Manually, with the JAVA_HOME Option
You can install Java manually and not through the FileMaker Server 2023 Admin Console. You just need to set that system environment variable named JAVA_HOME.
The Adoptium installer on Windows can do that as part of the installation process but does not do it by default:
On macOS, the pkg installer does it by default:
When you install Java this way, FileMaker Server 2023 will automatically recognize that it is there. Make sure to delete the java folder in the FileMaker Server Web Publishing folder if there is one. Then FileMaker Server 2023 knows it should look for what is set in JAVA_HOME.
We prefer this second method. It requires less work when reinstalling FileMaker Server 2023 or on upgrades when not using the upgrade-in-place option. The Java installation is decoupled from the FileMaker Server 2023 installation.
A new feature in FileMaker Server 2023 helps deal with memory leaks in Java that lead to performance degradation over time in the web publishing engine. Java is usually pretty good at automatically cleaning up after itself and freeing up unused memory. However, in case you see a build-up of memory, you can now force a garbage collection in the admin console:
Using this functionality requires that you install the Java Development Kit (JDK) instead of the Java Runtime Engine (JRE).
You can also schedule this cleanup through a new built-in system script:
In addition to this schedule running on its set time, you can also execute this schedule through the fmsadmin command line and through the Admin API.
If you use Web Publishing and WebDirect heavily, we highly recommend monitoring the Java processes, using this new feature where necessary.
Optimizing Your FileMaker Application
Our team of Claris experts helps companies leverage FileMaker as a competitive advantage. We build custom solutions that remove growth barriers and optimize workflows. If you’d like a development partner to make your FileMaker application more efficient, we can help. Contact us to learn more.