It really is. We've Sun to thank for that I think.
Yeah, I had to write a small bytecode patcher from scratch the other day and was amazed at the quality of the writing in the spec. Took me all but 2h to implement what I wanted, with no real prior knowledge of JVM bytecodes and class file structure.
Yeah we had to create a java compiler and java interpreter in the compiler class I took(of course it was just a small subset of the runtime)