It'd be interesting to learn more about what you meant by "there are much better ways to represent Java than bytecodes".
I know you don't do JVM stuff anymore but perhaps one day you could do a talk on how you'd design the JVM differently if you could go back and do it all again.
Right when Java was taking off, there were a bunch of research proposals for better over-the-wire executable formats (mostly funded by microsoft). Designs where you could convert the bytecodes to machine code as fast as L1 could take it with sane 1st-level-JIT code quality. And also have safety, and enough type info the use a 2nd-level JIT for really hot code.
Ah so you meant "java bytecodes", not bytecodes in general. Perhaps like pre-calculating register allocation and such? I'd like to read about these sorts of proposals, do you recall the names of the papers by any chance?