The edge devices connected to the Cloud that constitute the Internet of Things (IoT) require support for building blocks, standards and frameworks like those provided by the Eclipse Foundation projects: Californium, Paho, Leshan, Kura, Mihini, etc.
Because of the large deployment of Java technology in the Cloud, on the PC, mobile and server sides, most projects above are implemented in Java technology.
Deploying these technologies on embedded devices requires a scalable IoT software platform that can support the hardware foundations of the IoT: microcontrollers (MCU). MCU delivered by companies like STMicroelectronics, NXP+Freescale, Renesas, Atmel, Microchip, etc. are small low-cost low-power 32-bit processors designed for running software in resource-constraint environments: low memory (typically KB), flash (typically MB) and frequency (typically MHz).
The goal of the Edje project is to define a standard high-level Java API called Hardware Abstraction Layer (HAL) for accessing hardware features delivered by microcontrollers such as GPIO, DAC, ADC, PWM, MEMS, UART, CAN, Network, LCD, etc. that can directly connect to native libraries, drivers and board support packages provided by silicon vendors with their evaluation kits.
To achieve this goal, the Edje project also defines the minimal set of API required for delivering IoT services, leveraging largely-deployed technologies, and meeting performance and memory constraints of IoT embedded devices. Edje defines the Edje Device Configuration (EDC). Care has been taken to make the EDC a proper subset of the different Java runtime environments found in Android, J2SE, J2ME, OSGi Minimum and others. This project presents the packages and API that constitute the core of EDC, defines the minimal foundation that iot.eclipse.org projects can rely on, and still compatible with economical constraints of the IoT: footprint. EDC covers the standard packages part of the Java core language (java.lang, java.io, …).