[ARCHIVED] PluotSorbet is a J2ME-compatible virtual machine written in JavaScript.
Перейти к файлу
Andreas Gal 4835f3b2c7 fix a couple array handling bugs 2014-07-18 01:20:06 -07:00
classfile properly parse and resolve interfaces 2014-07-17 23:26:34 -07:00
java
tests a couple array fixes 2014-07-18 01:12:38 -07:00
.gitignore
LICENSE
Makefile
README.md
arrays.js fix a couple array handling bugs 2014-07-18 01:20:06 -07:00
classes.js fix a couple array handling bugs 2014-07-18 01:20:06 -07:00
classinfo.js implement interface checks 2014-07-17 23:44:06 -07:00
frame.js move exception handling into the interpreter 2014-07-17 18:51:01 -07:00
index.html a couple array fixes 2014-07-18 01:12:38 -07:00
jvm.js
long.js
main.js fix multi dimensional array access 2014-07-17 23:51:11 -07:00
native.js a couple array fixes 2014-07-18 01:12:38 -07:00
opcodes.js
scheduler.js
signature.js
thread.js
threads.js add zero timer 2014-07-17 21:18:53 -07:00
timer.js add zero timer 2014-07-17 21:18:53 -07:00
util.js fixup exception handling 2014-07-17 23:02:28 -07:00
vm.js fix a couple array handling bugs 2014-07-18 01:20:06 -07:00
zipfile.js

README.md

j2me.js

j2me.js is a small J2ME virtual machine in JavaScript.

A few similar projects exist. My primary objective is to keep this very simple and small and to leverage the CDLC JDK. In particular I am trying to implement as little as possible in Java, re-using as much of the CDLC infrastructure as I can.

The VM core itself is based on node-jvm, which has a very nice classfile parser but is quite buggy and incomplete.

A few other projects like js2me.js exist, but they tend to implement the class library in JavaScript which is a bad idea because its a lot of work, and really hard to get right from a compatibility perspective (Java has a lot of quirks and poorly documented edge cases).

The VM is able to execute a "Hello World" Java program, which if you know anything about the Java bootstrap sequence, is quite complex.

To try this at home run the Makefile in java/ to generate the the class library jar (which is decompressed on the fly in JavaScript, using zip.js) and then load index.html in the browser (full disclosure: I only tried this in Firefox).

I will likely add some test automation in node.js next.