lördag 21 mars 2015

Interesting platform, but missing implementation here

In my last blog entry (which was ages ago, I know!), I bragged about my OpenJDK efforts. Or bragged is perhaps not the word, but, I mentioned it. I sadly haven't had time to do much about OpenJDK lately, or my Amiga for that matter. But now things at work, and in my new house (yay!) are starting to go back to normal, giving me some time to tinker with JAmiga and OpenJDK.

And this is what I'm currently greeted with:

"Interesting platform, but missing implementation here". Ha! If they only knew...

Interesting platform

My AmigaOne X1000 is currently abroad for a physical check-up, but meanwhile I've been busy with my Ubuntu laptop. I managed to compile a working adtools setup with the help of salass00 guide excellent guida at os4coding.net. It wasn't that hard to do, if you just follow the instructions. However, the GCC version currently in trunk cannot be built (March 2015), so you should instead use the 4.9.x tag. At step 5, "Build and install gcc", you have to alter "gcc-build/Makefile" which points to "gcc-trunk", and "trunk", and change this to "gcc-4.9.x" and "4.9.x", respectively. And you must have checked out the 4.9.x branch from SVN.

With the adtools cross-compiler suite up and running, I've begun my porting efforts. I've done this before, both trying the IcedTea OpenJDK project, and vanilla OpenJDK 7 and 8. My current focus is however on OpenJDK 9, without any iced tea -- just regular coffee (currently mostly decaf though, or perhaps just disgusting brown water). OpenJDK isn't released or done yet. If I understand the OpenJDK procedures correctly, each big version (i.e. 9), has a number of sub projects working on different aspects of OpenJDK. The project "Jigsaw" is my aim at the moment. I've talked about Jigsaw previously, referring to it as an onion, in short it aims to modularise OpenJDK. My hope is that I'll initially will get away with just porting the "java base" stuff, and then iteratively proceeding with the rest of Java. For the GNU classpath this is already possible, with its different libraries for javalang, javanet, and so on. OpenJDK in essence only has one big java-library. It is possible to disable stuff like AWT and such in OpenJDK, but in order to skip f.i. the java-net stuff, I would have to write dummy functions in order to make it compile. But with Jigsaw, the idea is to be able to disable entire modules, where java-net is one.

Missing implementation

Now, going back to the error message above. I know the reason for it, and I sort of knows what's needed. And its quite a lot. The error relates to "hotspot", which is OpenJDK's virtual machine -- where I want to use "JamVM". So, I can either try to implement support for hotspot, or try and adapt the build process to skip hotspot. It is possible to build OpenJDK without hotspot, if you use IcedTea. But IcedTea currently only supports OpenJDK 8. And, IcedTea needs some adaptation to support AmigaOS as well. So I think I'm doing the right thing going for OpenJDK 9. Hopefully.