# Filius - Simple Network Simulation Filius is a network simulator for educational purpose ## Licencse Filius is provided under the terms of GPLv2 or GPLv3. ## Requirements Filius is a Java application. It is required that there is a Java Runtime Environment 8 or higher. Support of Java 8 is deprecated and will end soon. For most features, JRE will do. The feature to implement and run your own applications (by means of the Software Wizard) requires Java Development Kit. ## OS Support Windows, Linux ## Available Languages German, French, English ## Configuration The personal configuration, i.e. selected language as well as the ui state when leaving the program, is stored within the personal home directory within a folder named ".filius". Global configurations can be modified in the install directory within "filius.ini". For more details see the documented parameter in this file. ## Installation The Windows installer is based on nsis. It supports the standard parameter: * /S - for silent install/uninstall * /D - to set the install directory (e.g. /D=Z:\Filius) ## Website https://www.lernsoftware-filius.de/ # Bundled JRE Some Filius distributions are shipped with JRE to remove the external dependency on a pre-installed Java Runtime Environment. But since Filius is not built as a Java module, the JRE cannot be built as part of the build process with Maven. The Runtime is created in two steps: 0. Define required Java modules 0. Create the runtime ## Define Required Modules Use the jdeps tool that is shipped with OpenJDK: ``` jdeps -recursive --ignore-missing-deps --multi-release base --print-module-deps filius.jar lib\* ``` The output contains some warnings and the following required modules: ``` java.base,java.compiler,java.desktop,java.instrument,java.management,java.naming,java.sql,java.xml.crypto,jdk.unsupported ``` Additionally, the following runtime dependencies are required in order to use the Software Assistant for application compilation at runtime in Filius: - jdk.compiler - This module contains the compiler toolset. - jdk.zipfs - This module is required to read dependencies on built-in Filius classes from filius.jar. ## Build Runtime The bundled JRE (if available) is built with the following command: ``` jlink --no-header-files --no-man-pages --compress=2 --strip-debug --add-modules java.base,java.desktop,java.instrument,java.management,java.naming,java.sql,java.xml.crypto,jdk.unsupported,java.compiler,jdk.compiler,jdk.zipfs --output java-runtime ```