diff options
Diffstat (limited to 'user')
-rw-r--r-- | user/jkoenig/gsoc2011_proposal.mdwn | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/user/jkoenig/gsoc2011_proposal.mdwn b/user/jkoenig/gsoc2011_proposal.mdwn index 666733c1..5d40a97f 100644 --- a/user/jkoenig/gsoc2011_proposal.mdwn +++ b/user/jkoenig/gsoc2011_proposal.mdwn @@ -73,11 +73,13 @@ support is important for any general-purpose operating system. Java is currently supported on Hurd with the GNU Java suite: - * GCJ, the GNU Compiler for Java, is part of GCC and can compile Java + * [GCJ](http://gcc.gnu.org/java/), + the GNU Compiler for Java, is part of GCC and can compile Java source code to Java bytecode, and both source code and bytecode to native code; - * libgcj is the implementation of the Java runtime which GCJ uses. It is - based on GNU Classpath. It includes a bytecode interpreter which enables + * libgcj is the implementation of the Java runtime which GCJ uses. + It is based on [GNU Classpath](http://www.gnu.org/software/classpath/). + It includes a bytecode interpreter which enables Java applications compiled to native code to dynamically load and execute Java bytecode from class files. * The gij command is a wrapper around the above-mentioned virtual machine @@ -134,9 +136,13 @@ natural fit for the capability-based design of Hurd. Advantages over other garbage-collected, object-oriented languages include performance, type safety and the possibility to compile a Java translator to -native code and link it statically using GCJ, should anyone want to use a -translator written in Java for booting. Note that Java is being used in this -manner for embedded development. +native code and +[link it statically](http://gcc.gnu.org/wiki/Statically_linking_libgcj) +using GCJ, should anyone want to use a +translator written in Java for booting. Note that Java is +[being](http://oss.readytalk.com/avian/) +[used](http://www.linuxjournal.com/article/8757) +in this manner for embedded development. Java bindings would lower the bar for newcomers to begin experimenting with what makes Hurd unique @@ -278,6 +284,12 @@ A realistic example of code based on such interfaces would be: } } +Should this paradigm prove insufficient, +more ideas could be borrowed from the +[`org.vmmagic`](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.151.5253&rep=rep1&type=pdf) +package used by [Jikes RVM](http://jikesrvm.org/), +a research Java virtual machine itself written in Java. + ### Generating Java stubs with MIG Once the basic machinery is in place to interface with Mach, Java programs @@ -293,7 +305,9 @@ complete or exempt of any problem, illustrates the general idea: [[gsoc2011_classes.png]] -This structure is somewhat reminiscent of Java RMI or similar systems, +This structure is somewhat reminiscent of +[Java RMI](http://en.wikipedia.org/wiki/Java_remote_method_invocation) +or similar systems, which aim to provide more or less transparent access to remote objects. The exact way the Java code would be generated still needs to be determined, but basically: |