I spruced up yesterday's post a bit to remove where I'd errorneously said that Java was an interpreted langauge. What I'd glossed over was that Java compiles to interpreted bytecodes, which is, in Java's case (specifically b/c of the way Sun has implemented the Java standard), barely "better". Great for making Java xplat; not great for dimestore software authors. Added a parallel with BASIC apps back in the C=64 days to complete ye olde proverbial spectrum.

Of course there's no reason that Java couldn't compile to something a little less easy to decompile. There's nothing inherent in its design that means the bytecodes have to stay so generic. I believe that probably does make it easier to make a virtual machine for different platforms, but as anyone who has an emulator knows, you could make "the machine in VM" more esoteric if you'd wanted. Course then outfits like Blackdown would have had a harder time bringing Java to the Sun-unsupported Liunxes, as an example.