The Joo Programming Language

Joo is a clean, fast, static typed, general purpose programming language created to run on machines with extremely low resources like microcontrollers.

It's a programming language that gets compiled to bytecode and is executed by the virtual machine, so it allows you to upload the VM sketch to the arduino once and send the byte code that will be executed through the serial monitor of the arduino for example, without needing to reupload the sketch every time!

You could also put multiple programs on a sd card, and execute them.


Examples - You can send a program to the arduino using serial communication, or use a sd card with the compiled program files and then execute them without needing to reupload the sketch.

Advantages - No need to reupload the sketch.

Downsides - I don't know. Maybe that the language has some limitations due to the extreme eficiency.

Worked examples?

Take a look at the github page, there you can see a example code that can be used. Or do you mean a project using the language?

Is it better than micropython?

It's more efficient than mycropython, since you can execute it in a Arduino UNO.

I mean "sell it to me. Show me code in it , what advantages it has over mainstream languages"

can we see a comparison with a c++ or python, same functionality snippet and see size/execution times?

Ever wanted to upload multiple programs to the Arduino UNO? Guess what? Now you can! the joo virtual machine that executes the byte code runs in a environment with only 2KB of ram!

Ever wanted to have multiple programs in a sd card, and execute them without having to reflash or restart the arduino? Now you can! You could use a display to list the files in the sd card and then a button to select wich program to execute and just execute it. In a environment with only 2KB of ram!

Ever wanted to be able to upload a update to the arduino with let's say, a bluetooth module? Now you can! You can modify the virtual machine to receive the code through bluetooth!

So it's a lightweight language that supports OTA updates.



I'm surprised that a bluetooth serial module can't already program an Arduino because it's, well, serial.

EDIT - Wait, you can. This Instructable outlines it.

So in specific terms, for a simple example, counting from 0 to X for instance how, in speed terms does Joo compare to normal Arduino code ?

It would have to be very good because Arduino can issue serial updates so fast that it lags my PC.

EDIT - My PC isn't some Pentium laptop from 2008 either.

EDIT - Though it does contain a hard drive from one.

Well the main advantage is, you can put multiple programs in a sd card and then execute them.

So it's not fast.

The idea of putting a couple of programs in an SD card is helpful, but I can't see it being revolutionary.

Does this language run on, say, an RP2040? An ARM chip? An ATMega4809?

It's a programming language that can be executed on a virtual machine that fits the Arduino UNO. To be honest i didn't do any benchmarking until now.

Yes it can run o other boards as well, as the virtual machine is a sketch that can be uploaded to the boards.

So Joo does not interact with a device natively?