JVM не може директно да изпълнява codeа, който пишете. Той знае само How да изпълнява програми, написани в byte code. Байтcodeът е език от ниско ниво, който е близък до машинния code.

За Java компилацията е превод на програма (от високо ниво), написана на Java, в същата програма, написана в byte code.

Вашият code се предава в .java файл на компилатора. Ако компилаторът не намери грешки в codeа, тогава получавате нов файл с byte code. Този файл ще има същото име, но различно разширение: .class . Ако има грешки в codeа, тогава компилаторът ще ви каже "програмата не е компorрана". След това трябва да прочетете всяко съобщение за грешка и да коригирате грешките.

Използвате командата javac, за да извикате компилатора, който е част от JDK (Java Development Kit). Това означава, че ако инсталирате само JRE (Java Runtime Environment), тогава няма да имате компилатора! Ще имате само JVM, който може да изпълнява само byte code. Така че ние инсталираме JDK и предаваме нашия .java файл на компилатора.

Например, нека вземем проста програма с няHowъв конзолен изход:


class MySolution {
   public static void main(String[] args) {
      System.out.println("Hi, command line!");
   }
}

Нека запазим този code във file D:/temp/MySolution.java .

Нека компorраме нашия code с помощта на командата


D:\temp>javac MySolution.java

Ако в codeа няма грешки при компorране, във временната папка ще се появи файл MySolution.class . Нещо повече, файлът MySolution.java , съдържащ вашия code, не отива никъде. Остава точно там, където беше. Но сега MySolution.class съдържа byte code и е готов да бъде стартиран директно от JVM.

Нашият пример е възможно най-опростен, но дори най-големите и сложни проекти използват командата javac . Така че ще ви бъде много полезно да знаете How работи.

Можете да компorрате повече от един клас наведнъж. Да предположим например, че във временната папка има друг файл Cat.java :


D:\temp>javac MySolution.java Cat.java

or това:


D:\temp>javac *.java

Веднъж компorрани, .class файловете могат да бъдат пакетирани в jar файл, който може удобно да се премества на различни компютри и след това да се изпълнява на тях. Ето пример How да създадете jar файл:


D:\temp>jar cvfe myjar.jar MySolution MySolution.class Cat.class

където:

  • jar е командата за създаване на .jar файлове, включена в JDK

  • cvfe са опции на командния ред със следните значения:

    • c – създаване на нов jar файл

    • v – показва подробна информация

    • f – показва, че искаме изходът на инструмента да бъде поставен във файл ( myjar.jar )

    • e – показва входната точка ( MySolution ), т.е. класът, който съдържа основния метод

  • MySolution.java Cat.class – разделени с интервал имена на файловете, които ще бъдат пакетирани в jar file.

Ето How изпълняваме получения jar файл:


D:\temp>java -jar myjar.jar
За по-подробна информация:
Инструментите javac и jar имат вградена помощ. За да го покажете, изпълнете следното в командния ред:
  • javac --помогнете
  • буркан - помощ