Skip to content

java-embedded-framework/jef

Repository files navigation

Java Embedded Framework (JEF)

Build Maven Central License

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.

Important Note

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>

Supported Platforms

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

Supported boards

Please see details here

System requirements

  • Linux kernel 4.8+ for core level (or Raspberry Pi OS/Armbian for mcu level)
  • Java 11+
  • Maven 3+

Project Modules

  • 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

Using the Library

Projects Using JEF

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.

Features

  • 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

Community and Support

All questions should be posted to the StackOverflow. Issues can be submitted here on Github.

Contributing

Please see details here

License

From 21.05.2022 licence changed to Apache2.0 Please see details here

For vendors

If you want to add your board support to framework or add support of your devices to device library please contact

What is planned in future releases?

  • 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.

About

Java Embedded Framework - provides access from java for hardware and one board computers like Raspberry Pi, Orange Pi, Banana Pi and etc. to control SPI / I2C / GPIO or Serial ports

Topics

Resources

License

Stars

Watchers

Forks

Packages 4

 
 
 
 

Languages