Version 2.0 of Pi4J is finally starting to come together and is almost ready for some real-world BETA testing. Significant progress has been made on the general architecture and primary user-facing interfaces. Pi4J V.2 is a complete re-write and does not maintain API compatibility with previous versions. It is not intended to be a drop-in replacement for previous versions of Pi4J. Pi4J V.2 is a completely new design bringing modern conventions, development practices, extensibility support and simplified integration experience for Pi4J users.
Pi4J Version 2.0 is still considered EXPERIMENTAL at this point. While many parts of the project are working, there are still a number of areas that require further development and certain APIs are subject to change without notice. A significant portion of the code is presently undocumented and hardware integration testing is incomplete.
It is not recommended to use Pi4J V.2 in any production workload at this time.
The following tables outlines some of the current (high-level) features planned for V.2 release. Please note that some of these features may get deferred and not incuded in the first release.
|Runtime Context||In Testing||HIGH|
|I/O Registry||In Testing||HIGH|
|Dependency Injection||In Research||HIGH|
|Remote I/O (via TCP)||InTesting||HIGH|
|PiGpio GPIO Provider Plugin||In Testing||HIGH|
|PiGpio SPI Provider Plugin||In Testing||HIGH|
|PiGpio SERIAL Provider Plugin||In Testing||HIGH|
|PiGpio I2C Provider Plugin||In Testing||HIGH|
|PiGpio PWM Provider Plugin||In Testing||HIGH|
|LinuxFX GPIO Provider Plugin||Incomplete||LOW|
|LinuxFX SPI Provider Plugin||Incomplete||LOW|
|LinuxFX SERIAL Provider Plugin||Incomplete||LOW|
|LinuxFX I2C Provider Plugin||Incomplete||LOW|
|WiringPi GPIO Provider Plugin||Not Started||LOW|
|WiringPi SPI Provider Plugin||Not Started||LOW|
|WiringPi I2C Provider Plugin||Not Started||LOW|
|WiringPi PWM Provider Plugin||Not Started||LOW|
|PiGpio Bitbang Serial||Not Started||LOW|
|PiGpio Bitbang I2C||Not Started||LOW|
|PiGpio Bitbang SPI||Not Started||LOW|
The table below illustrates the testing progress on the various supported platforms/models.
As standard OpenJDK versions are not available for the ARMv6 these are considered to be low priority.
|RaspberryPi - 4B||ARMv8||In Testing; Preliminary Tests PASSED||HIGH|
|RaspberryPi - 3A+||ARMv8||Not Started||HIGH|
|RaspberryPi - 3B+||ARMv8||In Testing; Preliminary Tests PASSED||HIGH|
|RaspberryPi - 3B||ARMv8||In Testing; Preliminary Tests PASSED||HIGH|
|RaspberryPi - ZeroW||ARMv6||Not Supported||LOW|
|RaspberryPi - Zero||ARMv6||Not Supported||LOW|
|RaspberryPi - 2B (v1.2)||ARMv8||Not Started||MEDIUM|
|RaspberryPi - 2B||ARMv7||Not Started||MEDIUM|
|RaspberryPi - 1B+||ARMv6||Not Supported||LOW|
|RaspberryPi - 1A+||ARMv6||Not Supported||LOW|
|RaspberryPi - 1B (Rev 2)||ARMv8||Not Started||MEDIUM|
|RaspberryPi - 1B (Rev 1)||ARMv7||Not Started||MEDIUM|
|RaspberryPi - 1A||ARMv6||Not Supported||LOW|
|RaspberryPi - CM3+ (Compute Module)||ARMv8||Not Started||HIGH|
|RaspberryPi - CM3 (Compute Module)||ARMv8||Not Started||HIGH|
|RaspberryPi - CM1 (Compute Module)||ARMv6||Not Supported||<i class=“fa fa-arrow-circle-down /] LOW|