Arakhnê Foundation Classes

The Arakhnê.org Foundation Classes (AFC) is a Java library that provides a collection of utilities that are not provided in the standard Java API.

Require JavaMaven Centraltravis buildappveyor build

Maven CompliantJava CompliantSARL CompliantScala CompliantXtext CompliantXtend CompliantOSGI Compliant

Apache 2.0 LicenseCLAs signed

1. Content of the AFC

1.1 Compatibility with other Languages than Java

AFC is a Java library that provides extensions for being used with other programming languages.

For example, Vector2D provides overloading function for operator +. In this way, this operator may be used by typing v1 + 1 instead of v1.add(1).

1.1.1 SARL agent-oriented programming language

AFC library is compatible with the SARL agent-oriented programming language, which is a Xtext-based language (see below). Indeed, the AFC classes use the specific annotations: @Pure for making pure functions, and @Inline for inline functions. AFC also provides the overridings of the operators (operator_plus, operator_minus, etc.) for vectors, matrices, etc.

1.1.2 Scala object-oriented programming language

AFC library is compatible with the Scala object-oriented programming language. Indeed, the AFC classes provide the overridings of the operators ($plus, $minus, etc.) for vectors, matrices, etc.

1.1.3 Xtend object-oriented programming language

AFC library is compatible with the Xtend object-oriented programming language, which is a Xtext-based language (see below). Indeed, the AFC classes use the specific annotations: @Pure for making pure functions, and @Inline for inline functions. AFC also provides the overridings of the operators (operator_plus, operator_minus, etc.) for vectors, matrices, etc.

1.1.4 Other Xtext-base languages

AFC library is compatible with all the languages that are defined upon the Xtext framework for development of programming languages and domain-specific languages. Indeed, the AFC classes use the specific annotations: @Pure for making pure functions, and @Inline for inline functions. AFC also provides the overridings of the operators (operator_plus, operator_minus, etc.) for vectors, matrices, etc.

1.1. Maintained Modules

AFC library contains the following modules that are actively maintained:

NameSubmoduleGroup IdArtifact IdExplanation
General Utilities

General Utilities

org.arakhne.afc.core

util

General utility classes that do not fit in the other AFC modules

Generic Attribute API

org.arakhne.afc.advanced

attributes

Library for creating generic attributes, aka. Variant attributes.

Input-Output Utilities

org.arakhne.afc.core

inputoutput

General utilities related to IO

Text Utilities

org.arakhne.afc.core

text

Utilities for string of characters

VM Utilities

org.arakhne.afc.core

vmutils

Utilities related to the virtual machine, file systems, etc.

Weak Reference Utilities

org.arakhne.afc.core

references

Set of classes for creating advanced weak references.

Mathematic Tools

General Mathematic Tools

org.arakhne.afc.core

mathgen

Provides implementation of general mathematic functions.

Stochastic Random Numbers

org.arakhne.afc.core

mathstochastic

Provides implementation of stochastic functions (Gaus, etc.) for generating random numbers.

Tree Data Structure

org.arakhne.afc.core

mathtree

General and generic implementation of different tree data structures.

Graph Data Structure

org.arakhne.afc.core

mathgraph

General and generic implementation of different graph data structures.

Geometry Primitives and Tools

org.arakhne.afc.core

mathgeom

Provide geometric primitives (point, vector, shape, etc.) and related tools.

Physics Tools

org.arakhne.afc.core

mathphysics

Tools for computing Physics values.

JavaFX Math Tools

org.arakhne.afc.advanced

mathfx

JavaFX implementation of the mathematic and geometry tools

JavaFX Tools

General JavaFX Tools

org.arakhne.afc.advanced

javafx

Tools for JavaFX

JavaFX Nodes and Components

org.arakhne.afc.advanced

nodefx

Extended components for JavaFX

Geographical Information System

Geographical Information System API

org.arakhne.afc.gis

giscore

Base elements for building data structures for Geographical Information Systems.

GIS Input-Output API

org.arakhne.afc.gis

gisinputoutput

Readers and writers for Geographical Information System.

Shape File Reader and Writer

org.arakhne.afc.advanced

shapefile

Reader and Writer of the ESRi Shape files.

DBase Reader and Writer

org.arakhne.afc.advanced

dbasefile

Reader and Writer of the DBase database files.

GIS Road Network

org.arakhne.afc.gis

gisroad

Base elements for creating data structures that represent a road network.

Input-output Tools for GIS Road Network

org.arakhne.afc.gis

gisroadinputoutput

Input and output tools that are dedicated to the road network.

GIS Bus Network

org.arakhne.afc.gis

gisbus

Base elements for creating data structures that represent a bus network, or any public transport network.

Input-output Tools for GIS Bus Network

org.arakhne.afc.gis

gisbusinputoutput

Input and output tools that are dedicated to the bus network, or any public transport network.

JavaFX Implementation of GIS elements

org.arakhne.afc.gis.ui

giscorefx

JavaFX components for GIS objects

JavaFX Implementation of Road elements

org.arakhne.afc.gis.ui

gisroadfx

JavaFX components for Road objects

Bootique Plugin Framework

Integration of Application Data with Bootique

org.arakhne.afc.bootique

bootique-applicationdata2

Tools for defining the name, description and detailed description of a bootique-based application.

Log4j Integration with Bootique

org.arakhne.afc.bootique

bootique-log4j

Configuration and module for integrating log4j with Bootique.

Configuration Printing Command with Bootique

org.arakhne.afc.bootique

bootique-printconfig

Command for printing the configuration values with Bootique.

Synopsis Help Command with Bootique

org.arakhne.afc.bootique

bootique-synopsishelp

Command for printing the help with synopsis and detailed description with Bootique.

Variable Tools for Bootique

org.arakhne.afc.bootique

bootique-variables

Tools for declaring environment variables for a Bootique application.

SLF4J Logging System

Maven Logger Integration

org.arakhne.afc.slf4j

slf4j-maven

Integration of the Maven logger into SLF4J.

Backward compatibility with old versions of SLF4J

org.arakhne.afc.slf4j

slf4j-backwardcompat

Provide gateway from the a recent SLF4J to the old SLF4J static binding.

Binding of Log4J

org.arakhne.afc.slf4j

slf4j-log4j

Provide the binding of Log4J for SLF4J.

Agent Motion Algos

org.arakhne.afc.advanced

agentmotion

Collection of algorithms for calculating the motion of mobile agents.

1.2. Deprecated and Dead Modules

AFC library contains the following deprecated modules (deprecated modules are subject to removal in next version). The table presents the modules, the version from which they are deprecated, and the version at which they will be totaly removed from.

NameGroup IdArtifact IdExplanationDeprecation StartTotal Removal
Base UI Toolsorg.arakhne.afc.uibaseBase tools for user interfaces.13.014.0
AWT Toolsorg.arakhne.afc.uiawtExtra AWT widgets.13.014.0
Swing Widgetsorg.arakhne.afc.uiswing Extra Swing widgets.13.014.0
Android Toolsorg.arakhne.afc.uiandroidExtra Android widgets and activities.13.014.0
Vector Window Toolkitorg.arakhne.afc.uivectorVectorial primitives for building vectorial graphical editors.13.014.0
AWT implementation of vectororg.arakhne.afc.uiawt-vectorAWT implementation of the vectorial primitives.13.014.0
Android implementation of vectororg.arakhne.afc.uiandroid-vectorAndroid implementation of the vectorial primitives.13.014.0
Atomic deployment of filesorg.arakhne.afc.mavenatomicdeployMaven plugin for deploying aa single file.13.014.0

2. Requirements

For AFC version 17.0 or higher:

For AFC prior to version 17.0:

3. Using AFC in a Maven project

3.1. Recommendations

For making your experience with AFC the best, we recommend you:

3.2. Use the stable version

The lastest stable version of AFC is available on Maven Central. Consequently, you could directly include the AFC module that you want to use into the Maven dependencies of your project. For example, if you want to use the "vmutils" module:


...
<dependency>
<groupId>org.arakhne.core</groupId>
<artifactId>vmutils</artifactId>
<version>17.0</version>
</dependency>
...

Please, replace Version 17.0 in the previous snipset by the number of the version you want to use (12.0 is the first version that is available on Maven Central).

3.3. Use of the development version

New features, enhancements and bug fixes are available in the SNAPSHOT (development) version of AFC. For using this version, you must add the Maven Repository Server of AFC in your pom file:


...
<dependencies>
<dependency>
<groupId>org.arakhne.core</groupId>
<artifactId>vmutils</artifactId>
<version>18.0-SNASPHOT</version>
</dependency>
<dependencies>
...
<repositories>
<repository>
<id>org.arakhne-maven</id>
<name>ArakhnĂȘ.org Snapshots</name>
<url>http://download.tuxfamily.org/arakhne/maven/</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>org.arakhne-maven</id>
<name>ArakhnĂȘ.org Snapshots</name>
<url>http://download.tuxfamily.org/arakhne/maven/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
...

4. Issues

Issues related to the AFC are tracked on GitHub. You must use this issue tracker to report and follow your issues.

5. Contributions

Any contribution to the AFC library is welcome.

5.1. Installing the Development Environment

For setting up the development environment, you should follow the steps:

5.2. Obtaining the AFC Source Code

For obtaining the code of the AFC library, you must clone it from the Git:

git clone https://github.com/gallandarakhneorg/afc

Caution: due to an issue in the Eclipse Checkstyle plugin, it is mandatory to install the build-tools module in the your .m2 repository prior to the first launch of the Eclipse IDE:

mvn clean install -Dcheckstyle.skip=true

5.3. Compiling the AFC Source Code

Maven is the standard tool for compiling the AFC library. It is recommended to launch the Maven compilation process on the command at least before submitting a pull request. The command line is:

mvn clean install

5.4. Sending the Contribution

For sending your contribution to the AFC master repositoty, you must request a pull (PR) to the GitHub repository.

For being merged, your PR must:

If the CI process is failing on your PR, please follows the steps:

6. License of AFC

The ArakhnĂȘ Foundation Classes are distributed under the Apache v2 license, and is copyrigthed to the original authors and the other authors, as expressed in the NOTICE.

7. Success Stories

The following projects have sucessfully used a module of the AFC:

Details