Actually, a lot of the useful things like ADT illustrations tend to be written as ancient Java applets as well.
On the other hand, the Java bytecode is simple enough that it shouldn't be too much work to write an emulator in JS, and, as most of Java is written in Java, all one really needs to write around that is a shell for the AWT and maybe a bit of class/string functionality to get the viewer working. Threading and I/O would be a truly nasty pain, but you could probably bypass most of that.
I'd be more surprised if there weren't already some attempts to work on this.