1 | Java bytecodes are at a higher level than ordinary assembly code |
2 | exceptions greatly reduce code movement opportunities |
3 | OOP style (lots of method calls) reduces the data flow information available |
4 | no knowledge about the whole program at compile time |