Skip to main content

Introduction to the JARU Programming Language

JARUDynamicIoTESP32

JARU is a dynamically typed programming language designed to provide full control over the stack: the language itself, the virtual machine, and the surrounding tooling.

It runs on its own compact and efficient VM, built to be predictable, extensible, and easy to integrate, both on desktop systems and on resource-constrained environments such as ESP32 microcontrollers or the ESP32-P4 (RISC-V).

JARU prioritizes a clear and readable syntax, with explicit structures and no unnecessary dependencies, making code easier to read, maintain, and debug—even in complex systems.

More than a standalone language, JARU is designed as the foundation of a complete ecosystem, where the runtime, debugger, and IDE share a common vision, enabling a level of control and coherence that is difficult to achieve with traditional general-purpose languages.

Introductory JARU overview showing the IDE, language, and ESP32 development workflow

Productivity

The VM includes a garbage collector and standard libraries to accelerate development: Math, String, Display, System, GPIO, WiFi, MQTT, etc.

Main Features

  • Dynamic types — no need to declare the type before assigning a value.
  • Clean syntax — less noise, more intention.
  • Built-in GC — automatic memory management.
  • Cross-platform — develop on Windows and deploy to ESP32, ESP32-S3 and ESP32-P4.
  • Standard library for IoT — ready-to-use modules for common hardware.

Semicolon (;)

The semicolon at the end of a statement is optional. Use it to separate statements when writing multiple on the same line.

semicolon.aru
print("Hello"); print("world");
println("!")

Comments

  • Single line: // ...
  • Multiple lines: /* ... */
comments.aru
// This is a single-line comment

/*
This is a
multi-line comment
*/

Indentation

Use spaces or tabs (choose one and be consistent). Recommended: 2 spaces.

Identifiers

Identifiers name variables, functions, classes, objects, properties, and methods. They must start with a letter or _, and not be reserved words. JARU is case-sensitive.

ValidInvalidReason
person_name1numberCannot start with a number
_pricemy identifierSpaces not allowed
myClassclassReserved word
VAR_1#valueNon-alphanumeric symbol

Hello World! (and more)

hello.aru
print("Hello World!");

// print doesn't add a newline; println does
print("Hello"); print(", ");
println("World");

  • print() does not add a newline.
  • println() does add a newline.
print-vs-println.aru
print("Hello"); print(", "); println("World");

Was this page helpful? Continue with Data Types and Variables and Constants.