All Packages

Package Summary
Package
Description
Juno's top-level compiler entry points: the CLI, the embeddable compiler API, and the small value types that connect them.
Control-flow structure and conservative resource/runtime-risk analysis over decoded bytecode.
Compile-time-only annotations an entry-point class uses to configure Juno's compilation, read directly from the class file rather than at runtime.
The Java-facing hardware API that Juno's compiler recognizes as intrinsics.
USB HID mouse control: Mouse, backed by the Arduino Mouse library.
Motion sensing: NineAxisMotionShield, the orientation sensor of the Arduino 9 Axis Motion Shield, over I2c.
General-purpose digital/analog I/O: Gpio, the raw pin-number operations (pinMode/digitalWrite/digitalRead/ analogRead/analogWrite/toggle), and DigitalOutput, a zero-cost handle bound to one output pin (high/low/toggle/isHigh) for callers that prefer an object-shaped API over passing a pin number to every call.
I2C register access: I2c reads and writes the registers of a peripheral on the board's primary I2C bus.
Infrared serial transport: Infrared bit-bangs framed bytes over a 38 kHz IR receiver module and an IR LED on plain pins.
USB serial output: Serial and its BaudRate constants.
Drivers for character LCD shields, currently LcdKeypadShield: a 16x2 HD44780-compatible display in 4-bit mode plus 5 buttons read from a single resistor-ladder analog pin, wired for the shield's standard pinout.
The UNO R4 WiFi's built-in 12x8 LED matrix: LedMatrix, the raw compiler-intrinsic begin/loadFrame/clear operations, and LedCanvas, a boolean[HEIGHT][MAX_WIDTH] pixel buffer with shape and text drawing helpers that render into it and send it to the hardware with show.
LEGO Powered Up hubs over Bluetooth LE: PoweredUpHubRemote, backed by the Arduino ArduinoBLE library, and the LEGO Mindstorms RCX infrared remote protocol: RcxRemote and, for its sensors, RcxBrick, and Scout brick commands in ScoutRemote, plus the Power Functions IR receiver in PowerFunctionsRemote; the three infrared classes are built on Infrared.
Motor handles: Servo drives a standard 3-wire hobby servo through the Arduino Servo library.
WiFi connectivity for the Arduino UNO R4 WiFi and UNO Q: Wifi connects and reads the board's address, while Udp provides allocation-free discovery, send, and receive primitives.
Basic SMTP send / POP3S read built on Wifi's connection: Smtp to send a plain-text message to one recipient, and Pop3Client to report the mailbox message count and read the newest message's From/Subject and a bounded plain-text body into caller-owned buffers.
HTTP(S) client and server support built on Wifi's connection: HttpClient/HttpsClient to send requests into a caller-owned byte[] response buffer, Json to read typed values directly out of a response buffer without building a parsed document, and HttpServer (plain HTTP only) to serve requests, with HttpMethod/HttpStatus as named constants for both directions.
Drivers for TFT display shields, currently TftTouchShield: the ELEGOO 2.8" 240x320 ILI9341 display on an 8-bit parallel bus, with a resistive touch panel and a microSD socket (read through SdCard).
Code generation: turns optimized Juno IR into a complete Arduino sketch for any supported board (the Cortex-M4 UNO R4 WiFi and the Cortex-M33 UNO Q).
Juno's model of a compilation target: Board, resolved from the entry-point class's @Board annotation (see Board) via Board.fromApiClassName(String), or Board.DEFAULT when the entry point carries none.
Decodes the intentionally small JVM bytecode subset Juno v0.1 supports.
Reads standard JVM class files and resolves their constant-pool references, independent of Juno's own bytecode subset or IR.
The closed catalog of hardware operations Juno understands, independent of any particular Java method signature or Arduino-side lowering.
Juno's own intermediate representation: a non-SSA, block-structured form that lowering produces from JVM bytecode, optimize transforms, and backend consumes to generate assembly.
Closed-world reachability: starting at main, follows every statically resolvable call, resolves hardware intrinsics and record accessors, and rejects anything reachable that falls outside Juno's supported subset — before any code generation is attempted.
Lowers linked, reachable JVM bytecode into Juno's IR.
IR-to-IR optimization passes run between lowering and the backend.