Hindi maaaring direktang patakbuhin ng JVM ang code na iyong isinusulat. Alam lamang nito kung paano magsagawa ng mga program na nakasulat sa bytecode. Ang Bytecode ay isang mababang antas na wika na malapit sa machine code.

Para sa Java, ang compilation ay ang pagsasalin ng isang (mataas na antas) na programa na nakasulat sa Java sa parehong program na nakasulat sa bytecode.

Ang iyong code ay ipinasa sa isang .java file sa compiler. Kung walang mahanap na error ang compiler sa code, makakabalik ka ng bagong bytecode file. Ang file na ito ay magkakaroon ng parehong pangalan ngunit ibang extension: .class . Kung may mga error sa code, sasabihin sa iyo ng compiler na "hindi nag-compile ang program". Pagkatapos ay kailangan mong basahin ang bawat mensahe ng error at ayusin ang mga error.

Ginagamit mo ang javac command para i-invoke ang compiler, na bahagi ng JDK (Java Development Kit). Nangangahulugan iyon na kung ang JRE (Java Runtime Environment) lang ang i-install mo, wala kang compiler! Magkakaroon ka lamang ng JVM, na maaari lamang magpatakbo ng bytecode. Kaya ini-install namin ang JDK at ipinapasa ang aming .java file sa compiler.

Halimbawa, kumuha tayo ng isang simpleng programa na may ilang console output:


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

I-save natin ang code na ito sa file na D:/temp/MySolution.java .

I-compile natin ang ating code gamit ang command


D:\temp>javac MySolution.java

Kung walang mga compilation error sa code, may lalabas na MySolution.class file sa temp folder. Higit pa rito, ang MySolution.java file na naglalaman ng iyong code ay hindi napupunta kahit saan. Ito ay nananatili sa mismong kinaroroonan nito. Ngunit ngayon ang MySolution.class ay naglalaman ng bytecode at handa nang direktang patakbuhin ng JVM.

Ang aming halimbawa ay kasing simple hangga't maaari, ngunit kahit na ang pinakamalaki at pinakamasalimuot na proyekto ay gumagamit ng javac command. Kaya magiging lubhang kapaki-pakinabang para sa iyo na malaman kung paano ito gumagana.

Maaari kang mag-compile ng higit sa isang klase sa isang pagkakataon. Halimbawa, ipagpalagay na mayroong isa pang file na Cat.java sa temp folder:


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

o ito:


D:\temp>javac *.java

Kapag na-compile, ang mga .class na file ay maaaring i-package sa isang jar file, na maaaring maginhawang ilipat sa iba't ibang mga computer at pagkatapos ay tumakbo sa mga ito. Narito ang isang halimbawa kung paano gumawa ng jar file:


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

saan:

  • Ang jar ay ang utos para sa paglikha ng mga .jar na file, kasama sa JDK

  • Ang cvfe ay mga opsyon sa command line na may mga sumusunod na kahulugan:

    • c – lumikha ng bagong jar file

    • v – ipakita ang verbose na impormasyon

    • f – nagpapahiwatig na gusto naming ilagay ang output ng tool sa isang file ( myjar.jar )

    • e – nagpapahiwatig ng entry point ( MySolution ), ibig sabihin, ang klase na naglalaman ng pangunahing pamamaraan

  • MySolution.java Cat.class – mga pangalan na pinaghihiwalay ng espasyo ng mga file na ilalagay sa jar file.

Narito kung paano namin pinapatakbo ang nagresultang jar file:


D:\temp>java -jar myjar.jar
Para sa mas detalyadong impormasyon:
Ang javac at jar tools ay may built-in na tulong. Upang ipakita ito, patakbuhin ang sumusunod sa command line:
  • javac --help
  • banga --tulong