FINAL PROPOSAL: Meta-compiler for non-java code to run on the java virtual machine

Anders Björklund anders.bjorklund at
Fri Feb 29 02:26:25 PST 2008

FINAL PROPOSAL: Meta-compiler for non-java code to run on the java   
                                  virtual machine

                Stig Anders Björklund
                anders.bjorklund at


I propose to implement
      A meta-compiler for non-java code to run on the java virtual
      machine. In addition, standard classes and interfaces needed to
      promote building reusable library classes will be provided.

The project has two main goals:
      1. To simplify the creation and manipulation of binary files -
      in particular the java class format. Instrumentation for this
      purpose is used by the meta-compiler. Parts of the     
      instrumentation can also be used outside of this project.
      Related projects exist[1,2], but not under the SCA license as
      far as I am aware.

      2. To simplify and shorten the time it takes to initially port
      a new language to the JVM. By using the meta-compiler and by
      implementing language specific constructs as java classes, the
      time to port a language to the JVM should be significantly

      Since certain features exist in a number of different
      languages, a growing body of library classes can make porting
      regular languages faster, given that the library classes all
      implement the same interfaces.

      If all library classes implement the same interfaces, a meta-
      compiler can translate a syntax tree into an instance graph
      created from the different library classes using a language
      lookup table. These classes may also enforce language rules
      such as no changing final variables or security checks for

      Different computer languages may use different libraries or
      they can share parts. Given the potential scope of this
      project, I intend to focus on a small subset in the form of a
      limited language similar to BASIC, with a limited library.

Project plan:
      15:th of may - library classes of a limited BASIC like 
      language implemented. Library supports a least one loop
      format and at least addition and subtraction. Additional
      functionality such as reading from the keyboard and writing to
      the console are also implemented.

      1:st of june - parsing of limited BASIC like source code and
      transforming to invokable object graph completed. (Serializing
      the object graph in this step would be very similar in
      principle to final compilation.)

      15:th of june - all instrumentation completed for class files.

      15:th of july - meta-compiler creates fully functional .class
      files with main method, from limited BASIC like source files.
      The created classes can be started by typing java <ClassName>.
      Demo program should accept input from keyboard, perform
      computation based on input, and output the result of the
      computation to the user.
      This would constitute a complete implementation of the

      (Remaining time in reserve.)

      If project is selected, all source code and binaries will be
      available for download during and after development for the
      OpenJDK community and others.

      Code and binaries will be hosted at
      (will be activated after selection)

Dependence on Sun:
      This project does not depend on Sun.

      I currently work part time as java instructor and part time as 

      Some projects:
      PassTicket Generator for z/OS - encrypted authentication.
      Creation and bitlevel manipulation of authentication tokens.
      Commercial project.

      Parser and statistics tool for System z utilization data.
      Commercial project.

      HiLexed project at - lexer and several
      parsers: xml, ldif and limited java code parsed.
      Open source.

      Monaco project at - remote code execution.
      Client code is unaware of execution context through proxy
      Open source.
      The project could further promote the idea of the JVM as a
      multi language platform.

      This proposal in its entirety including any source code and
      binaries resulting from it is hereby contributed under the
      terms of the Sun Contributor Agreement

1. Apache Foundation - Byte Code Engineering Library

2. Jasmin - Assembler for the JVM

More information about the challenge-discuss mailing list