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. Alive Modules

AFC library contains the following alive modules:

NameGroup IdArtifact IdExplanation
VM Utilitiesorg.arakhne.afc.corevmutilsUtilities related to the virtual machine, file systems, etc.
Weak Reference Utilitiesorg.arakhne.afc.corereferencesSet of classes for creating advanced weak references.
Text Utilitiesorg.arakhne.afc.coretextUtilities for string of characters
Input-Output Utilitiesorg.arakhne.afc.coreinputoutputGeneral utilities related to IO
General Utilitiesorg.arakhne.afc.coreutilGeneral utility classes that do not fit in the other AFC modules
Math Toolsorg.arakhne.afc.coremathMathematic and Geometry tools and primitives
JavaFX Math Toolsorg.arakhne.afc.advancedmathfxJavaFX implementation of the mathematic and geometry tools
Generic Attribute APIorg.arakhne.afc.advancedattributesLibrary for creating generic attributes, aka. Variant attributes.

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.015.0
AWT Toolsorg.arakhne.afc.uiawtExtra AWT widgets.13.015.0
Swing Widgetsorg.arakhne.afc.uiswing Extra Swing widgets.13.015.0
Android Toolsorg.arakhne.afc.uiandroidExtra Android widgets and activities.13.015.0
Vector Window Toolkitorg.arakhne.afc.uivectorVectorial primitives for building vectorial graphical editors.13.015.0
AWT implementation of vectororg.arakhne.afc.uiawt-vectorAWT implementation of the vectorial primitives.13.015.0
Android implementation of vectororg.arakhne.afc.uiandroid-vectorAndroid implementation of the vectorial primitives.| 13.015.0
Atomic deployment of filesorg.arakhne.afc.mavenatomicdeployMaven plugin for deploying aa single file.13.015.0

2. Requirements

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>13.0</version>
</dependency>
...

Please, replace Version 12.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>14.0-SNAPSHOT</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: