Yes, it is both a compiler and an interpreter. The compiler is mainly used to generate bytecode from codes already compiled. After codes have been generated bytecodes, the interpreter turns them into readable machine code.