Freeway (Port GNUnet to Java) on SoC

Port GNUnet to Java ("Freeway", www.gnunet.org/freeway) 0.7 is now a SoC project.

The GNUnet reference implementation is written in pure C. Stephane Vallee ported the old 0.6.x tree to Java about two years ago, however the current 0.7.x version is dramatically different and the Java version has not been updated to reflect those changes. Having a (compatible) Java version would make GNUnet easier to install for some users. It would also help developers that are more skilled in Java than in C to prototype new protocols.

The goal of this project is to port the current C code to Java, re-using some of the existing Freeway code. While the existing Java port does not work properly with free JVMs, it would be important that the result will run using only free software. We do not expect that the entire codebase of GNUnet is ported to Java; instead, the Java version should be able to use native calls to load existing C modules. This will limit the effort to porting the core (src/server/, about 8000 lines) and utilities (src/util/, about 17000 lines, largely unchanged from 0.6.x). After that, it should already be possible to write extensions in Java. Note that the 0.6.x Freeway port did not use native C calls to load existing modules, which is why it was not possible to keep up with the development of the reference implementation written in C. We will make sure that this does not happen this time.