I'm not yet consigned that hmro is impossible in java, but I will say it's near so - my code on that one is looking less and less like normal Java and more like a java implementation of memmap.
Of course, the real beef I have is problems with a one-second time limit. Now, Java is probably not the slowest language we have available here, but there is some start-up overhead - half the second available is probably used up by the time our code starts executing.
Today I put in the first 3 time-out solutions to PIR, and the first correct java solution. It's not like I was using an inefficient algorithm, it's just a math problem. However, with possibly half of my second gone to loading the JVM (and a good part of the rest taken up by strictfp calculations probably), I apparently needed to increase the buffer size (on my already buffered I/O) and take out the StringTokenizers I was using to parse out the numbers (and do it the manual pain-in-the-butt way I would have done it in C). The algorithm was constant-time. This isn't any kind of optimization problem by intent, as far as I can tell.
Some competitions (e.g. TopCoder) get around this overhead by having the JVM already loaded on the test machine before testing starts. Since you pretty much need to start a new process to test the problem, this is more than a small change. There's a chance that running java with -server would help, but my understanding is that this matters less than it used to.
As a side, would it be possible to get the test input for HMRO? I'd like to do some profiling and such that doesn't involve repeatedly submitting partial solutions to see how long it takes before the wrong answer comes up :-p