XAOS

Open XAL is an open source development environment used for creating accelerator physics applications, scripts and services.


Project maintained by ESSICS Hosted on GitHub Pages — Theme by mattgraham

logo XAOS (ΧΑΟΣ – the primordial state of existence)

Maven Central Apache License

A JavaFX application framework made initially to create accelerator physics applications based on Open XAL, an open source development environment used for creating accelerator physics applications, scripts and services.

Modules

XAOS is written using the Java Platform Module System (JPMS) available since Java 9. The Maven project is also organized in modules maintaining a 1-to-1 mapping with the JPMS ones. A Maven module’s name is made up by the JPMS module one plus the .module suffix.

xaos.app

The XAOS App module (xaos.tools) provides a JavaFX-based application framework for building UI-based applications with menus, toolbars, etc.

xaos.core

The XAOS Core module (xaos.core) provides the non-UI classes part of the framework. Any non-graphical application can use this module.

xaos.tools

The XAOS Tools module (xaos.tool) provides tools and utilities used by the other XAOS modules (e.g. annotation processors) to simplify some programming tasks.

xaos.ui

The XAOS UI module (xaos.ui) provides JavaFX-based controls and tools suitable for other projects too.

xaos.ui.gauge

The XAOS Gauge module (xaos.ui.gauge) provides the JavaFX-based kit of controls and tools for creating gauges.

xaos.ui.plot

The XAOS Plot module (xaos.ui.plot) provides the JavaFX-based controls and tools for plotting data into a graph.

Test Modules

From the introduction of JPMS in Java 9, some tests cannot anymore performed from inside the module to be tested. for this reasons there are some specific JPMS/Maven modules built to test others:

Using XAOS

Maven

Each XAOS module needed to build your application require a dependency in the application’s pom.xml file like the following one:

<dependency>
  <groupId>se.europeanspallationsource</groupId>
  <artifactId>xaos.module</artifactId>
  <version>0.4.3</version>
  <scope>compile</scope>
</dependency>

where module is the name of the XAOS module needed. Look at the README.md file of the module you need for more examples and information.

Here the Maven dependencies of xaos project:

xaos dependencis

Java module-info

Inside your application’s module-info.java file the following dependency must be added:

module your.application {
  ...
  requires xaos.module;
  ...
}

where module is the name of the XAOS module needed. Look at the README.md file of the module you need for more examples and information.

System Properties

XAOS defines the following system properties that can be set before launching an application build on XAOS (using java -D<name>=<value> ... ):

Property Type Default Description
xaos.test.verbose boolean false Some tests will be more verbose if set to true.

Running TextFX Tests

When XAOS is built JUnit tests and UI ones (based on TextFX) are automatically performed.

On macOS since version 10.14 Mojave it is necessary to explicitly allow the IDE or the Terminal application performing the build to control the computer. This can be done in the Privacy tab of the Security & Privacy system preferences, by selecting the Accessibility category, the adding and enabling the applications.

Contributing XAOS

The XAOS project on GitHub is using Gitflow, development model introduced by Vincent Driessen, here summarized:

Gitflow

Who wants to contribute this projects must adopt the Gitflow model and tools.