JEF provides Java programs easy high level access directly from code to hardware interfaces like SPI, I2C, Serial, GPIO or One Wire interfaces without writing anything except Java code - no JNI or native additional code is required. This functionality is comparable to Linux like platforms.
JEF allows you to create pure java based system only in Java or compile you applications to small(10+ megabytes) pure native binaries(C++ like ) for 64-bits platforms without any code modification.
Project moved (temporary or maybe permanently to Quarkus repository and can be used as part of Quarkus platform
Integration examples available here
If you want to use library only on API level without Quarkus, you can include API libraries directly from maven central:
<dependency>
<groupId>io.quarkiverse.jef</groupId>
<artifactId>linux-core</artifactId>
<version>${JEF_VERSION}</version>
</dependency>
<dependency>
<groupId>io.quarkiverse.jef</groupId>
<artifactId>linux-native-core</artifactId>
<version>${JEF_VERSION}</version>
</dependency>
<dependency>
<groupId>io.quarkiverse.jef</groupId>
<artifactId>mcu-core</artifactId>
<version>${JEF_VERSION}</version>
</dependency>
<dependency>
<groupId>io.quarkiverse.jef</groupId>
<artifactId>device-library</artifactId>
<version>${JEF_VERSION}</version>
</dependency>
JEF will build on most linux-like platforms with a reasonable set of GNU tools and a JDK.
If your platform is supported by libffi, then chances are you can build JEF for it.
If your platform is supported by GraalVM Native Image Compiler, then chances are you can build JEF binaries images for these platforms...
Please see details here
- Linux kernel 4.8+ for core level (or Raspberry Pi OS/Armbian for mcu level)
- Java 11+
- Maven 3+
- linux-core - API for access to POSIX functions and protocols via Java
- mcu-core - Hi level wrapper for linux-core for Raspberry Pi boards
- device-library - Some 'drivers' implementation for devices
- examples - usage examples
JEF is very young library. If you're using JEF, feel free
to tell us about it.
Include some details about your company, project name, purpose and size and tell us
how you use the library.
There are also a number of examples and projects within the examples
directory of the JEF
project itself.
- Ability to access devices over SPI interface
- Ability to access devices over I2C interface
- Ability to access devices over Serial interface
- Ability to access GPIO over Linux GPIO interface
- Ability to compile you code to JVM packages and Native binaries without any code modification
All questions should be posted to the StackOverflow. Issues can be submitted here on Github.
Please see details here
From 21.05.2022 licence changed to Apache2.0 Please see details here
If you want to add your board support to framework or add support of your devices to device library please contact
- Refactoring and improvements based on community feedbacks
- Migration to Project Panama from Java Native Access for Java 16+
- Add additional devices support in device library
- Add support for other chipsets/boards (Orange Pi/Banana Pi/Olimex) in mcu-core module.