I have been working on SquirrelJME throughout the day, so that is not bad. Right now my current hurdle is invokespecial, which is a bit complex.


Using deduction to determine how to handle invokespecial. Okay so since Java 1.1 (released 02/1997) the compiler always set SUPER, so the method that is directly specified is never called it instead uses the alternative lookup. So let me see when J2ME came out.


JSR030 is 05/2000, drafted in 08/1999. This means the latest Java release at the time was Java 1.2 which was released 12/1998. Also the J2 in J2ME stands for Java 2, which is Java 1.2. So I think at this point, if the super flag is not set then it sucks to be you.


Looking through the ancient specification, main is handled and used so that is something. At least now I have actual backing for it.


Confirmed that CLDC 1.0 uses a Java 1.2 VM.


Okay so from this point, I am going to declare that SUPER is always set no matter what.


I am definitely going to need a refactor of the thread worker because it is getting quite ugly!


Huh, for some reason Object cannot have final fields and they cannot be assigned a value in the compiler at all.


The compiler does not allow final fields to be set for Object in its constructor. In fact if final fields are initialized at run-time the compiler does not generate any code for the constructor. So I will need to remember this interesting detail.


For the Lex redesign and logos, I would like to credit the artist for their work:

The logo is awesome so far and Lex is coming along quite cutely, I am very excited.