Java uses both compilation and interpretation. The Java source code is compiled into bytecode using the Java compiler (javac), and then the JVM (Java Virtual Machine) interprets it. How does this differ from languages that use traditional assemblers or compilers?