I've attempted to run a Java Virtual Machine under the Hurd, i chose Kaffe which appeared to be the most advanced of the open source JVMs. I got the Kaffe-1.0.5 source from www.transvirtual.com, and of course it didn't compile right out of the box. First I had to get configure to recognise the i386-gnu system type. Then I tried to prallel the architecture dependent initalization code from linux. Since Kaffe requires threads and Hurd lacks a pthreads implementation, i had to settle for it's own jthreads implementaion, however something more native like cthreads or a future implementation of pthreads would be better. After that the compile went through, however Kaffe hung my box hard whenever it tried to run any java program. The problem was in that it was trying to put the stdin, stdout and stderr file descriptors into asynchronous mode (using fctnl and O_ASYNC, i think). Since I'm no expert on async-IO and that part of code wasn't essential to exectution I just commented it out. BTW, how does one go about putting file descriptors in async mode? After that it actually worked fine. I've been able to run several console java programs. And most of the self checks that come with the code passed as well, except a couple that were dealing with threading and stacks overflows. I didn't try and AWT programs yet since I don't have X install (btw, is X actually working now?).
The important thing is that it's working!!! Being able to run java apps greatly increases Hurd's application base. So, any suggestions as to the problems stated above? especially about threads, how's that pthreads implementation coming? Igor

