The core requirement for the JVM is that it must be compatible with Java 8.
Each FWD component (conversion, application server, client, user-defined functions running at the database) can use a different JVM. These can run on the same system or different systems. They can even run on a different operating system platform. There is no dependency between JVMs of different components, since they are separate operating system processes.
The following JVM versions have been well tested:
- Oracle JDK 1.8 on Linux
- Oracle JDK 1.8 on Windows
- OpenJDK 1.8 on Linux
- OpenJDK 1.8 on Windows
The specific versions of Oracle JDK 1.8.0_101 and OpenJDK 1.8.0_111 have both been tested and have been found to work well. Generally, it is safe to use any later version of the Java 1.8 platform.
The application server dynamically generates some converted ABL code (at runtime), which means that there are parts of the runtime system that may depend upon tools in the JDK. For this reason, the JDK is required and a JRE (runtime only, no development kit) cannot be used.
The application server process (JVM) is where the majority of working memory exists for each client (accessing the system). The actual memory used will depend on the queries, the block flow, recursion and other features of the original ABL. The converted application code is actually running in the common server process, which is different from how Progress ABL works.
Although either the 32-bit or 64-bit version may be used, with the large memory requirements of server processes, it is expected that the 64-bit version will be necessary in virtually all installations. The 64-bit JVM is a good default choice.
Although it is possible to run smaller server instances using a 32-bit JVM, this is likely to be only useful for very specialized cases. Running a small application (few users and no large working set requirements) would be possible. It might be useful to do this for hardware that is limited (32-bit architecture CPU or very limited RAM).