summaryrefslogtreecommitdiff
path: root/user
diff options
context:
space:
mode:
Diffstat (limited to 'user')
-rw-r--r--user/jkoenig/gsoc2011_proposal.mdwn28
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: