Ufafanuzi wa Usanidi wa Java: Jinsi javac Inavyofanya Kazi, Hatua za Usanidi, na Makosa ya Kawaida

produce.

Unapoanza kujifunza Java, kikwazo kikubwa cha kwanza unachokutana nacho kawaida ni “usimbaji.” Kuandika tu msimbo wa chanzo (.java) haitoshi kuendesha programu. Lazima usimbue kwa kutumia amri ya javac ili kutengeneza faili la .class kabla ya kutekelezwa. Katika makala hii, tunaelezea mchakato wa usimbaji wa Java, matumizi ya msingi ya javac, usanidi wa PATH, na jinsi ya kushughulikia makosa ya kawaida, yote kwa hatua kwa hatua ambayo wanaoanza wanaweza kufuata. Lengo ni kukusaidia kuondoka kwenye “Ninaanza wapi na usimbaji wa Java?” hadi usimbaji na utekelezaji wa programu za Java bila mkanganyiko.

Usimbaji wa Java ni Nini? | Kuelewa “Usimbaji” kwa Wanaoanza

Katika Java, “usimbaji” unamaanisha mchakato wa kubadilisha msimbo wa chanzo uliotungwa na binadamu (.java) kuwa muundo ambao Java Virtual Machine (JVM) inaweza kusoma.
Matokeo ya mchakato huu ni faili la .class, ambalo linaitwa bytecode.

Kinyume na lugha kama C ambazo husimbwa moja kwa moja kuwa msimbo wa mashine asilia, Java kwanza hubadilisha msimbo wa chanzo kuwa bytecode kisha inauendesha kwenye JVM.
Shukrani kwa mekaniki hii, faili la .class linaloweza kutumika kwenye mifumo ya uendeshaji tofauti, kuruhusu programu ileile ya Java kutekelezwa kwenye Windows, macOS, na Linux.

Jambo lingine muhimu kuelewa ni kwamba usimbaji na utekelezaji ni shughuli mbili tofauti.

  • “javac” → inahusika na usimbaji
  • “java” → inahusika na utekelezaji

Kukokotoa takriban 90 % ya wanaoanza kunakumba kwa sababu tofauti hii haijulikani.
Kuelewa kwa uthabiti kwamba amri hizi mbili zina majukumu tofauti ni hatua ya kwanza yenye ufanisi zaidi.

Mahitaji ya Usimbaji wa Java

Ili kusimba msimbo wa Java, lazima uwe na JDK (Java Development Kit) iliyosakinishwa.
JRE pekee haitoshi, kwa sababu msimbaji javac ni zana ya wasanidi iliyojumuishwa tu katika JDK.

Anza kwa kuangalia yafuatayo:

javac -version

Kama amri hii inarudisha nambari ya toleo, kila kitu kiko sawa.
Kama unaona ujumbe kama “amri haijapatikana,” moja ya yafuatayo huenda ikawa kweli:

  • JDK haijasakinishwa
  • JDK imesakinishwa lakini PATH haijawekwa
  • JRE pekee imesakinishwa (hakuna zana za maendeleo)

Haswa, usanidi wa PATH ni kikwazo kinachojitokeza mara nyingi kwa wanaoanza.
Kama mfumo hauwezi kupata saraka iliyo na javac (au saraka ya bin), usimbaji hautafanya kazi.

Hitimisho:
Unaweza kuanza kusimba Java tu baada ya “Ukasishaji wa JDK” na “Uthibitishaji wa PATH” kukamilika ipasavyo.

Kusimba Faili la Java Kwenye Vitendo

Hapa, tutaunda programu ndogo ya mfano na kuisimba kwa kutumia javac.
Kwanza, hifadhi maudhui yafuatayo katika mhariri wa maandishi.

Sample.java

public class Sample {
    public static void main(String[] args) {
        System.out.println("Hello Java!");
    }
}

Jina la faili lazima liwe Sample.java, na ni muhimu jina la darasa la umma liendane na jina la faili.
Java haitasimba ikiwa kanuni hii imetofautishwa, na hili ni kosa la kawaida kwa wanaoanza.

Kisha, endesha amri ifuatayo kwenye terminali yako au kwenye command prompt:

javac Sample.java

Kama usimbaji unafanikiwa, faili la Sample.class litaonekana katika saraka ile ile.
Hii inaashiria kwamba usimbaji umekamilika kwa mafanikio.

Katika hatua hii, sasa una:

  • Sample.java (msimbo wa chanzo)
  • Sample.class (bytecode)

Kwa jozi hii ya faili, uko tayari kuendesha programu ya Java.

Kuendesha Programu Baada ya Usimbaji

Baada ya usimbaji, hatua inayofuata ni kutekeleza faili la .class.
Amri inayotumika hapa ni java, si javac.

java Sample

Jambo kuu ni kutokujumuisha kiendelezi cha .class.
Kama utaandika java Sample.class, kosa litatokea.
Java imeundwa kutekeleza programu kwa kutaja jina la darasa.

Kwa muhtasari:

RoleCommandTarget
Compilejavac Sample.java.java file
Runjava SampleClass name (no extension)

Mara tu unapofahamu wazi majukumu tofauti ya javac na java, umepita hatua ya mwanzo kwa ufanisi.

If “Hello Java!” appears on the screen, your program ran successfully.
At this point, you have grasped the minimum required Java workflow.

Makosa ya Kawaida na Jinsi ya Kuyatatua

Kukutana na makosa wakati wa kukompli Java ni jambo la kawaida kabisa kwa wanaoanza.
Hapa, tunazingatia masuala ya kawaida yanayokumbwa na watumiaji wengi.

1) javac: command not found

Katika karibu 100% ya kesi, chanzo ni mojawapo ya yafuatayo:

  • JDK haijapakuliwa
  • PATH haijapakuliwa kwa usahihi

Suluhisho:
Endesha javac -version
→ Ikiwa haifanyi kazi, reinstall JDK na kagua mipangilio ya PATH yako.

2) Ukokompli unafanikiwa lakini hakuna faili la .class linalotengenezwa

Kosa la kawaida zaidi ni:

Jina la faili halilingani na jina la darasa la umma

Mfano:

public class Test {
}

→ Hii itasababisha kosa la ukompli.

3) Onyo zinazohusiana na usimbaji

warning: [options] bootstrap class path not set in conjunction with -source 1.7

Onyo kama hili kwa kawaida si makosa ya kifedha.
Hata hivyo, yanaweza kuashiria chaguo za chanzo zisizosasishwa au usimbaji usiofaa.
Ili kuepuka matatizo, daima hifadhi faili zako kwa UTF-8.

Kukompli kwa kutumia IDE

Katika maendeleo halisi ya Java, wasanidi programu wachache huwa hawana kuendesha javac kwa mkono kutoka kwa mstari wa amri.
Hii ni kwa sababu IDE (Integrated Development Environments) hushughulikia ukompli kiotomatiki.

IDE zifuatazo ni maarufu na zenye manufaa hasa:

IDEFeatures
IntelliJ IDEAThe de facto standard for modern Java development, suitable for professional use.
EclipseA long-established IDE widely used in enterprise projects.
VS CodeLightweight; Java Extension Pack provides a complete environment.

IDE hushughulikia ukompli wa msimbo wako kiotomatiki kila unapohifadhi faili na inaonyesha makosa mara moja.
Hii inazuia vizingiti vingi vya wanaoanza kama makosa ya amri na usanidi usio sahihi wa PATH.

Hata hivyo, kuendesha ukompli kwa mkono kwa javac angalau mara moja ni muhimu kwa kuelewa jinsi Java inavyofanya kazi ndani.
Mara tu unapofahamu mtiririko wa “kompili → endesha”, kasi yako ya kujifunza kwa IDE itapanda kwa kiasi kikubwa.

Chaguzi za Msingi za javac

Amri ya javac inaunga mkono chaguzi nyingi zinazodhibiti jinsi ukompli unavyofanywa.
Kiwango cha mwanzo, unahitaji kuelewa chache tu ambazo hutumika mara kwa mara.

Hapa kuna chaguzi tatu za mfano:

OptionDescriptionExample
-dSpecifies the output directory for class filesjavac -d out Sample.java
-classpathSpecifies external libraries or additional class pathsjavac -classpath lib/* Sample.java
--enable-previewEnables preview language featuresjavac --enable-preview Sample.java

Chaguo la -d ni muhimu hasa unapotumia vifurushi.
Kwa mfano, ikiwa unatumia package com.example;, kuto tumia javac -d kutasababisha muundo usio sahihi wa saraka.

Unapoingia katika maendeleo halisi, classpath na chaguo la -d vinakuwa muhimu zaidi.
Hata kutambua majina yao mapema kutafanya kujifunza baadaye kuwa laini.

Muhtasari

Ili kuendesha programu ya Java, lazima uelewe mchakato wa hatua tatu: andika msimbo → ukompli → endesha.
Mara tu majukumu ya javac (ukompli) na java (utendaji) yanapojulikana, lengo la ukompli linaonekana wazi.

Vizingiti viwili vya kawaida kwa wanaoanza ni:

  • JDK haijapakuliwa au PATH haijapakuliwa
  • Jina la faili halilingani na jina la darasa la umma

Kwa kuyashughulikia haya mapema, unaweza kuepuka mizunguko isiyo ya lazima katika mchakato wako wa kujifunza.
Unaweza kuendelea na maendeleo yanayotumia IDE ukishika imara, lakini kuelewa taratibu za msingi kutaboresha sana kasi yako ya kujifunza.

Tumia makala hii kama mwanzo na zingatia kwanza kubadilisha faili moja ya .java kuwa faili la .class kwa ufanisi.
Wakati huo ni alama yako ya kwanza ya kweli katika kujifunza Java.

Maswali Yanayoulizwa Mara kwa Mara: Maswali ya Kawaida Kuhusu Ukokompli wa Java

Swali 1: Toa tofauti kati ya javac na java?
J: javac ni amri ya ukompli inayobadilisha faili za .java kuwa faili za .class.
java ni amri ya utekelezaji inayotekeleza faili za .class kwenye JVM.

Swali 2: Kwa nini Sample.class haijatengenezwa?
J: Sababu ya kawaida zaidi ni kutokulingana kati ya jina la faili na jina la public class.
Kama darasa ni public class Sample, faili lazima iitwa Sample.java.

Q3: Je, bado ninahitaji kujifunza javac ikiwa nitumia IDE?
A: IDEs hutengeneza code kiotomatiki, lakini bila kuelewa mchakato, inaweza kuwa ngumu kujua kinachoendelea nyuma ya pazia. Kupitia mtiririko wa msingi mara moja hufanya matumizi ya IDE kuwa rahisi zaidi.

Q4: Nitakayoweka ni JDK gani?
A: Kwa wanaoanza, matoleo ya LTS kutoka Eclipse Adoptium (Temurin) ni rahisi kutumia.
Ikiwa huna mahitaji maalum, Java 17 au 21 ni chaguo salama.

Q5: Ninapata javac: command not found
A: Hii inamaanisha JDK haijawekwa au PATH haijapangwa.
Kwanza, angalia na javac -version.