Любой компилятор существует для того, чтобы превратить исходный код программы (в нашем случае текстовый файл *.java) в код, понятный исполняющей среде. Изначально и исторически -- понятный процессору. В случае же с Java или Kotlin -- в байт-код, который умеет исполнять виртуальная машина Java (JVM).