Skip to main content

Introduction to JARU IDE

What is JARU IDE?

JARU IDE is the official integrated development environment for the JARU programming language. It was born with a clear objective: eliminating the barriers between idea and device. When you work with embedded systems, every minute counts, and JARU IDE is designed so you can focus on what really matters: creating solutions that work in the real world.

JARU IDE General

The IDE provides a complete workflow for writing, debugging, and deploying JARU code on ESP32 devices, with SiFive (RISC-V architecture) support in development. It also includes a Windows virtual machine that lets you develop and test your code without needing physical hardware connected—especially useful during early development phases or when working away from the lab.

An Editor Built for JARU

The heart of any IDE is its code editor, and JARU IDE's editor has been built from scratch with the language's particularities in mind. Syntax highlighting isn't generic: it recognizes JARU-specific constructs and presents them clearly and consistently.

Intelligent autocompletion goes beyond suggesting keywords. It analyzes your code's context to offer functions and variables that make sense at each moment. When you're working with sensor drivers or configuring peripherals, the IDE suggests exactly what you need without having to search through documentation.

JARU Code Editor

A particularly useful feature is synchronized identifier editing. By activating it with Ctrl+J, you can rename a variable across all its occurrences simultaneously, avoiding the typical errors of manual search and replace. The integrated code formatter keeps your style consistent with a single click, and the symbol navigator lets you jump between functions and classes without losing track of what you were doing.

Errors and warnings appear marked directly in the editor margin as you type, allowing you to fix problems before attempting to compile.

Debugging Without Complications

Debugging embedded code has traditionally been a frustrating process requiring external tools and complex configurations. JARU IDE proposes a different approach: develop and debug on the Windows VM, deploy to ESP32 when it's ready.

JARU IDE Watch Preview

The integrated Windows virtual machine allows you to test and debug your code without needing the hardware connected. You can set breakpoints by clicking on the editor margin. When execution stops, you have full control: advance line by line with Step Over, enter called functions with Step Into, or exit the current function with Step Out. The Watch window shows you the value of the variables you're interested in real-time, updating with each execution step.

This ability to see exactly what's happening inside your program transforms the development experience: bugs that previously required hours of print statements and trial and error are now identified in minutes. Once your code works correctly on the VM, you can deploy it to your ESP32 with confidence that the logic has been tested.

Recommended workflow
  1. Develop and debug on the Windows VM with breakpoints and watch
  2. Test the logic of your program without depending on hardware
  3. Deploy to ESP32 when the code is ready and verified

GPIO Simulator for Windows

When developing code that interacts with hardware, the Windows VM wouldn't be complete without a way to test GPIO pin behaviour as well. The JARU GPIO Simulator covers exactly that need: a standalone window that connects to the VM via shared memory and reflects the state of every pin your program is using in real time, at a refresh rate of ~30 fps.

JARU GPIO Simulator

Pin table

The left half of the simulator shows a table listing every pin registered by your program. Each row reflects the current state of a pin and includes the following columns:

ColumnDescription
GPIOPin number
DirectionInput / Output
TypeDigital, ADC, DAC or I2C
PullNone, Pull-Up or Pull-Down
State / ValueDigital level (HIGH/LOW) or analogue value (0–4095)
Connected ToVirtual device associated with the pin

You can add pins manually with the New GPIO button or remove them with Delete GPIO, and the configuration is saved automatically between sessions.

Device cards

The right half displays the device cards: virtual components you can attach to any pin to simulate real hardware behaviour. Each card is linked to a specific pin and updates in sync with the VM.

DeviceTypeDescription
Red / Green / Blue LEDOutputVisual indicator that reflects the digital state or PWM intensity of the pin
Push ButtonInputMomentary button that injects a HIGH level while held down
SwitchInputToggle that alternates between HIGH and LOW on each click
PotentiometerADC InputKnob that generates analogue values from 0 to 4095
Temperature SensorADC InputSimulates readings from a temperature sensor with an adjustable value
PhototransistorADC InputSimulates ambient light variations via a slider control
OscilloscopeMonitoringDisplays the PWM waveform of the signal in real time
Signal GeneratorADC InputPlays back value sequences from a CSV file or generates automatic patterns
WS2812 StripOutputDisplays a NeoPixel LED strip or matrix in real time with configurable layout (Strip, 8×8, 16×16, 32×8, 8×32, 4×4) and wiring mode (Sequential, Serpentine H, Serpentine V)

Signal generator

The signal generator deserves a special mention. It allows you to feed an ADC pin with predefined data to reproduce complex test scenarios without any physical hardware. You can configure the generation mode (manual, automatic or CSV), the minimum and maximum signal bounds, the interval between samples, and whether the sequence should loop. By loading a CSV file you can replay data captured from a real sensor, which is particularly useful for validating signal-processing algorithms.

Workflow with the simulator

Launch the simulator before running your program in the VM. Add the pins you want to monitor manually using the New GPIO button — once your program calls GPIO.pinmode(), the pin's configuration (direction, type and pull mode) will be reflected automatically in the table. You can then attach a device card to each pin to interact with it without any physical hardware.

WS2812 strip

The WS2812 card lets you visualize in real time the state of a NeoPixel LED strip or matrix controlled by your program. The display synchronizes with the VM through the shared memory area and only repaints when the VM marks new data, keeping performance smooth even with long strips.

You can choose the layout from the card's dropdown: linear strip mode or various matrix configurations (4×4, 8×8, 16×16, 32×8, and 8×32). The wiring mode determines how pixels are mapped onto the grid: Sequential for strips where all LEDs run in a single direction, Serpentine H and Serpentine V for matrices where each row alternates reading direction horizontally or vertically, respectively.

The status label at the bottom of the card always shows the number of active LEDs, the current layout, and the brightness level reported by the VM.

Integrated Project Management

JARU IDE understands that a project is more than a collection of code files. The project wizard guides you step by step in creating new projects, automatically setting up the folder structure, main file, and necessary metadata. If you prefer learning by example, the IDE includes demo projects you can explore and modify.

JARU Project Wizard

The file explorer presents your project in a familiar tree view, where you can create, rename, and organize files and folders with drag and drop operations. Recent projects appear on the start screen so you can resume your work with a single click. The IDE also automatically generates README and license files if you need them.

Version Control Without Leaving the IDE

Git workflow is integrated directly into JARU IDE. You can see the status of your files (what you've modified, what's new, what you've deleted), make commits, manage branches, and check history—all without opening a terminal or switching applications.

JARU IDE Git Manager

The diff viewer shows you exactly what has changed between versions, making it easy to review code before committing changes. This integration is especially valuable in collaborative projects or when you need to revert to a previous version of your code.

Visual Tools for Multimedia Resources

Modern embedded development frequently involves graphical interfaces, and JARU IDE includes specialized editors for the visual resources that applications need.

The image editor lets you load, crop, and adjust images, but its real utility lies in palette conversion. You can reduce an image to 256 colors or apply a unified palette, optimizing the result for embedded device memory limitations. Export generates formats directly usable by the hardware.

Image Manager Preview

For animations, the sprite editor offers frame-by-frame creation with precise timing control. You can configure FPS, adjust each frame's alignment, and preview the result in real time before exporting. This eliminates the cycle of export, test on device, adjust, and repeat.

JARU Sprite Manager Preview

Everything You Need for ESP32

Working with ESP32 microcontrollers requires configuring multiple hardware aspects, and JARU IDE centralizes all these tasks in a coherent interface.

Firmware flashing supports different flash memory modes (DIO, QIO, DOUT) according to your board's characteristics. WiFi configuration lets you set SSID, password, IP addressing (static or dynamic), and DNS servers without manually editing configuration files.

ESP32 Tools Preview

JARU IDE General

For IoT projects, MQTT configuration is equally integrated: broker, port, credentials, QoS levels, and will messages are configured from the IDE. The same applies to TFT displays, where you can specify SPI pins, resolution, and controller; and to SD cards, with their corresponding pin configuration.

The integrated serial monitor lets you communicate with the device by selecting the port and baud rate from the IDE. The SPIFFS file system is accessible for persistent storage, and you can query chip information like MAC address or device identifier directly from the IDE's tools.

I2C Driver Library

One of the most repetitive tasks in embedded development is writing initialization code for sensors and actuators. JARU IDE includes an I2C driver manager with a category-organized library that greatly simplifies this process.

JARU I2C Driver Manager

Each driver in the catalog shows detailed information: the chip it supports, its I2C address, author, and version. Before inserting code into your project, you can preview it to make sure it's what you need. When inserting, the IDE automatically generates initialization code configured with the SDA/SCL pins and I2C port you've specified.

Output Console

The output console is your window into what's happening during compilation and execution. Compiler messages appear with errors and warnings clearly differentiated. The serial monitor shows device communication in real time. Message type filters help you find what's relevant when there's a lot of information, and a clear button lets you start with an empty console when needed.

Supported Platforms

JARU IDE lets you run your code in different environments depending on your development phase:

PlatformDescriptionStatus
Windows VMIntegrated virtual machine for development and testing without hardwareAvailable
ESP32Espressif microcontroller for deployment on real devicesAvailable
SiFiveRISC-V architecture for projects with specific requirementsComing soon

System Requirements

JARU IDE is designed to run on modest hardware, though more powerful equipment will improve the experience especially on large projects:

ComponentMinimum RequirementRecommended
Operating systemWindows 10Windows 10/11
RAM4 GB8 GB
Disk space200 MB500 MB
USB portFor ESP32 connection

Getting Started

  1. Install JARU IDE
  2. Explore the interface
  3. Create your first project
  4. Use the editor
  5. Debug your code
New to JARU?

If you're not yet familiar with the JARU language, we recommend starting with the Language Guide before diving into the IDE.

Dark Theme

JARU IDE includes a modern dark theme designed to reduce eye strain during long coding sessions.