Introducción a JARU
JARU está en versión beta. Esto significa que:
- El lenguaje es funcional y utilizable para crear programas reales
- Pueden existir errores (bugs) aún no detectados
- La API puede cambiar entre versiones menores sin previo aviso
- Algunas funcionalidades pueden estar incompletas o comportarse de forma inesperada
- La documentación puede no reflejar el estado actual del código
Revisa el changelog antes de actualizar y reporta cualquier problema que encuentres.
JARU es un lenguaje de programación de tipado dinámico diseñado para ofrecer control total del stack: el lenguaje, la máquina virtual y las herramientas que lo rodean.
Se ejecuta sobre una VM propia, compacta y eficiente, creada para ser predecible, extensible y fácil de integrar, tanto en sistemas de escritorio como en entornos con recursos limitados como microcontroladores ESP32 o arquitecturas RISC-V (SiFive).
JARU prioriza una sintaxis clara y legible, con estructuras explícitas y sin dependencias innecesarias, lo que facilita la lectura, el mantenimiento y la depuración del código incluso en sistemas complejos.
Más que un lenguaje aislado, JARU está pensado como la base de un ecosistema completo, donde el runtime, el depurador y el IDE comparten una visión común, permitiendo un nivel de control y coherencia difícil de alcanzar con lenguajes generalistas tradicionales.

La VM incluye garbage collector y librerías estándar para acelerar el desarrollo: Math, String, Display, System, GPIO, WiFi, MQTT etc.
Características principales
- Tipos dinámicos — no necesitas declarar el tipo antes de asignar un valor.
- Sintaxis limpia — menos ruido, más intención.
- GC integrado — gestión automática de memoria.
- Multiplataforma — desarrolla en Windows y despliega en ESP32, SiFive.
- Librería estándar para IoT — módulos listos para hardware común.
Punto y coma (;)
El punto y coma al final de una instrucción es opcional. Úsalo para separar sentencias cuando escribes varias en la misma línea.
print("Hola"); print("mundo");
println("!")
Comentarios
- Una línea:
// ... - Varias líneas:
/* ... */
// Esto es un comentario de una línea
/*
Esto es un
comentario multilínea
*/
Identación
Usa espacios o tabs (elige uno y sé consistente). Recomendado: 2 espacios.
Identificadores
Los identificadores nombran variables, funciones, clases, objetos, propiedades y métodos.
Deben empezar por letra o _, y no ser palabras reservadas. JARU distingue mayúsculas/minúsculas.
| Válidos | Inválidos | Motivo |
|---|---|---|
nombre_persona | 1number | No puede iniciar por número |
_precio | mi identificador | Espacios no permitidos |
miClase | class | Palabra reservada |
VAR_1 | #valor | Símbolo no alfanumérico |
¡Hola Mundo! (y algo más)
- Hola Mundo
- Control IoT
- Clases
print("Hello World!");
// print no añade salto de línea; println sí
print("Hello"); print(", ");
println("World");
use GPIO, Math
// Configurar LED integrado
GPIO.pin(2, GPIO.OUTPUT)
// Parpadear LED según intensidad de señal
while (true)
var delay = Math.map(signal, -90, -30, 100, 1000)
GPIO.write(GPIO.HIGH); pause(delay)
GPIO.write(GPIO.LOW); pause(delay)
end
use GPIO
class Sensor
def init(pin, tipo)
this.pin = pin
this.tipo = tipo
end
def leer()
return GPIO.aread(this.pin)
end
def calibrar(offset)
return this.leer() + offset
end
end
var temp = Sensor(34, "temperatura")
println("Lectura: " , temp.calibrar(2.5))
print vs println
print()no añade salto de línea.println()sí añade salto de línea.
print("Hello"); print(", "); println("World");
¿Te resultó útil esta página? Continúa con Tipos de datos y Variables y constantes.