So, I'm writing this really for google/bing and for other developers who may wish to avoid the pitfalls I fell into. Perhaps someone searching for information on small jvms will see this post and be helped.
Here was my situation: I have written a "big thing." This "big thing" depends on java for scripting. For the longest time, I waited and waited for Sun to get their * out of their *, as release java as a mini jvm + dynamically downloadable libraries (I have been working on "thing" for a long time). But alas it is still a bloated monster. Eventually I found their phoneme. But phoneme was under gpl. Which means I can't use it. I even asked Sun for clarification whether this was a "gpl, but we really mean lgpl, so don't worry," but they responded, "no this is gpl gpl. You need to pay us for a commercial license." Sigh, I am poor. So then I looked around for other possible java implementations, but there were non competent which were not gpl. And my "big thing" needs to work on "xbox" + "ps2" + everything else. So then I tried using python. But I can't stand python. I think it sucks. It doesn't suck as much as php. But it sucks about as much anyway. So about that time I said, "ok, if there is still nothing viable out there, I'll either get dalvik working on win32 or write my own." But then I looked at dalvik's code. At I saw a 60 line #define. And I thought, "wow, this is gross." Also, their developers seemed unable to contemplate things running on win32. Blasphemous I was. So then I found apache harmony. Apache harmony is also a bloated monstrosity, but it is not gpl. Which makes it a bloated monstrosity with potential. Also, there is a hidden gem within harmony. The intel JIT portion was written by someone within the tao. Kudos to you. You should meet Eberly. He is also within the tao. Anyhow, I spent many many an hour trying to get things to cut out code. I am very good at this sort of thing. But the pieces are so interwoven it is very very difficult. (And I was aiming for under 1 meg total.) And then... (dah d-dah tah!!!!) I found MikaVM.. MikaVM was awesome. It isn't gpl. It is very very small, but complete. It didn't run under win32. Which was a problem. So I ported it. It took 3 weeks. 1 whole week was chasing down a floating point operation bug, which now I understand more about floating point returns/registers than before. It is quite fast. And I've profiled it extensively and made a few portions faster. The JNI code/headers for Sun and Mika turn out to be almost exactly the same, so interchangeability is easy). I've been running it for about a half year now with no problems. So.. If you are writing a "big thing" and are looking for a small jvm, whose total foot print is about 1.5 megs. (including single jar file). Look at MikaVM. (June 2010) -tim