2-bo‘lim

Muhitni sozlash va birinchi loyiha

JDK o'rnatish, javac va java buyruqlari, JAVA_HOME, IDE tanlash, paketlar, jar fayllari va Maven bilan tanishuv.

🕑 14 daqiqa o‘qish 📄 1 077 so‘z 👁 1 marta ko‘rilgan
Ushbu bo‘lim mundarijasi
  1. JDK nima
  2. O'rnatish va tekshirish
  3. JAVA_HOME
  4. Birinchi dastur
  5. Bir buyruq bilan ishga tushirish
  6. Argumentlar
  7. Muharrir tanlash
  8. Paketlar
  9. Loyiha tuzilmasi
  10. Maven bilan tanishuv
  11. Ko'p uchraydigan xatolar
  12. Xulosa

Java yozish uchun JDK va matn muharriri kerak. Ikkalasi ham bepul.

JDK nima #

QisqartmaTo'liq nomiNima uchun
JDKJava Development KitDastur yozish uchun - kompilyator bor
JREJava Runtime EnvironmentFaqat ishga tushirish uchun
JVMJava Virtual MachineBayt-kodni bajaradigan qism

Sizga JDK kerak. Uning ichida JRE ham, JVM ham bor.

Qaysi JDK ni tanlash

Java'ning bir nechta bepul tarqatmasi bor va ular texnik jihatdan deyarli bir xil:

TarqatmaKim chiqaradiIzoh
Eclipse TemurinAdoptium jamg'armasiEng ko'p tavsiya etiladigani, bepul
Oracle JDKOracleRasmiy, litsenziya shartlariga e'tibor bering
Amazon CorrettoAmazonUzoq qo'llab-quvvatlash
Microsoft Build of OpenJDKMicrosoftWindows uchun qulay

Ikkilansangiz - Temurin 21 LTS ni oling: adoptium.net.

O'rnatish va tekshirish #

O'rnatgandan keyin terminalda ikkita buyruqni bajaring:

Terminal
java -version
javac -version

Ikkalasi ham versiya raqamini chiqarishi kerak, masalan:

Natija
openjdk version "21.0.10" 2026-01-20
javac 21.0.10
java ishlaydi, javac esa yo'q

Bu eng ko'p uchraydigan holat. Sababi: siz JRE o'rnatgansiz, JDK emas. JRE da kompilyator yo'q.

Ikkinchi sabab - PATH da eski Java turibdi. Buni tekshirish uchun:

Terminal
where java

Linux va macOS'da which java. Agar bir nechta yo'l chiqsa, birinchisi ishlatiladi.

JAVA_HOME #

Ko'p vosita (Maven, Gradle, IDE) JAVA_HOME muhit o'zgaruvchisini qidiradi. U JDK o'rnatilgan papkaga ishora qilishi kerak - bin papkasiga emas.

TizimQanday o'rnatiladi
WindowsSozlamalar → Muhit o'zgaruvchilari → Yangi: JAVA_HOME
Linux / macOS~/.bashrc yoki ~/.zshrc ga export JAVA_HOME=...

Birinchi dastur #

Papka yarating va Salom.java faylini yozing:

Java
public class Salom {
    public static void main(String[] args) {
        System.out.println("Birinchi dasturim ishladi");
    }
}
Natija
Birinchi dasturim ishladi

Terminalda:

Terminal
javac Salom.java
java Salom

Nima bo'ldi:

  1. javac Salom.java - kodni bayt-kodga o'girdi va Salom.class faylini yaratdi;
  2. java Salom - JVM ni ishga tushirib, Salom.class ni bajardi.
java Salom - kengaytmasiz

Diqqat qiling: ikkinchi buyruqda .class yozilmaydi. java buyrug'i sinf nomini kutadi, fayl nomini emas.

java Salom.class deb yozsangiz xato beradi. Bu boshlovchilarning tez-tez uchraydigan xatosi.

Bir buyruq bilan ishga tushirish #

Java 11 dan boshlab kichik dasturlarni kompilyatsiya qilmasdan ishga tushirish mumkin:

Terminal
java Salom.java

Bu yerda .java yoziladi. JVM kodni xotirada kompilyatsiya qilib, darhol bajaradi. Bitta fayldan iborat mashqlar uchun juda qulay.

Argumentlar #

Java
public class Argumentlar {
    public static void main(String[] args) {
        if (args.length == 0) {
            System.out.println("Argument berilmadi");
        } else {
            System.out.println("Argumentlar soni: " + args.length);
            for (String arg : args) {
                System.out.println("  - " + arg);
            }
        }
    }
}
Natija
Argument berilmadi

Yuqoridagi natija argumentsiz ishga tushirilganda chiqadi. Argument bersangiz:

Terminal
java Argumentlar Husanboy Namangan

Natija shunday bo'ladi:

Natija
Argumentlar soni: 2
  - Husanboy
  - Namangan

Muharrir tanlash #

VositaIzoh
IntelliJ IDEA CommunityBepul, Java uchun eng qulay - tavsiya etiladi
VS Code + Extension Pack for JavaYengil, bepul
EclipseBepul, uzoq tarixga ega
Oddiy matn muharririjavac va java baribir ishlaydi
Nega IDE kerak

Java'da IDE boshqa tillardagidan ham foydaliroq, chunki u:

  • xatoni yozayotganda ko'rsatadi, kompilyatsiyadan oldin;
  • import'larni o'zi qo'shadi;
  • sinf va metod nomlarini avtomatik to'ldiradi;
  • qayta nomlashni butun loyiha bo'ylab xavfsiz bajaradi.

Boshida javac va java ni qo'lda ishlatib ko'ring - nima sodir bo'layotganini tushunish uchun. Keyin IDE'ga o'ting.

Paketlar #

Katta loyihada sinflar paketlarga ajratiladi. Paket - bu papka va nom fazosi birgalikda.

Java
package uz.softromeda.jurnal;

public class Talaba {
    // ...
}

Bu fayl uz/softromeda/jurnal/Talaba.java yo'lida turishi kerak - paket nomi papka tuzilmasiga aynan mos bo'lishi shart.

QoidaMisol
Kichik harflar bilanuz.softromeda.jurnal
Teskari domen nomicom.example.loyiha
Papka tuzilmasiga moscom/example/loyiha/
Nega teskari domen?

Paket nomlari butun dunyo bo'ylab noyob bo'lishi kerak - aks holda ikki xil kutubxonada bir xil nomli sinf bo'lsa, to'qnashuv yuz beradi.

Domen nomlari allaqachon noyob, shuning uchun ularni teskari yozish qabul qilingan: softromeda.uzuz.softromeda.

Shaxsiy loyihalarda domen shart emas, lekin tuzilma bir xil bo'lsin.

Loyiha tuzilmasi #

Amalda qabul qilingan tartib:

Natija
jurnal/
   src/
      main/
         java/
            uz/softromeda/jurnal/
               Main.java
               Talaba.java
      test/
         java/
   target/            <- qurilgan fayllar (Git'ga qo'shilmaydi)
   pom.xml            <- Maven sozlamalari

Maven bilan tanishuv #

Loyiha o'sganda javac ni qo'lda chaqirish noqulay bo'ladi: kutubxonalar, testlar, versiyalar kerak. Buning uchun qurish vositasi ishlatiladi.

VositaSozlama fayliIzoh
Mavenpom.xml (XML)Eng keng tarqalgan
Gradlebuild.gradleMoslashuvchan, Android'da standart

Maven buyruqlari:

Terminal
mvn compile
mvn test
mvn package

mvn package natijasida target papkasida jar fayli paydo bo'ladi - bu butun dasturingiz bitta arxivda.

jar fayli nima

.jar - bu aslida oddiy ZIP arxiv. Uni arxivator bilan ochib ko'rish mumkin: ichida .class fayllari va META-INF papkasi bo'ladi.

Tayyor jar'ni shunday ishga tushiriladi:

Terminal
java -jar jurnal.jar

Bu Java dasturlarini tarqatishning standart usuli: bitta fayl, har qanday tizimda ishlaydi.

Ko'p uchraydigan xatolar #

XatoSababi
javac: command not foundJDK o'rnatilmagan yoki PATH da yo'q
class X is public, should be declared in a file named X.javaFayl nomi sinf nomiga mos emas
Could not find or load main classjava X.class deb yozilgan yoki noto'g'ri papkadasiz
error: cannot find symbolNom xato yozilgan yoki import yetishmayapti
Unsupported class file major versionKod yangi Java'da qurilgan, eski JVM'da ishga tushirilyapti
Oxirgi xato nimani anglatadi

Unsupported class file major version 69 kabi xabar - bu versiya mos kelmasligi.

Sabab: javac bilan Java 25 da qurgansiz, lekin java buyrug'i Java 21 ni ochyapti. Ya'ni kompyuterda ikkita Java bor.

Tekshirish: java -version va javac -version bir xil raqam berishi kerak. Bermasa - PATH va JAVA_HOME ni to'g'rilang.

Eski JVM uchun ataylab qurish kerak bo'lsa:

Terminal
javac --release 21 Salom.java

Bu darslikdagi barcha misollar aynan shu bayroq bilan tekshirilgan.

Amaliy topshiriq
  1. JDK o'rnating va java -version, javac -version bilan tekshiring.
  2. JDK, JRE va JVM farqini o'z so'zingiz bilan yozing.
  3. JAVA_HOME o'zgaruvchisini o'rnating.
  4. Salom.java yozib, javac va java bilan ishga tushiring.
  5. Fayl nomini ataylab noto'g'ri qo'yib, xatoni ko'ring.
  6. java Salom.java bilan bir buyruqda ishga tushiring.
  7. Dasturga ikkita argument uzating.
  8. IntelliJ IDEA Community yoki VS Code o'rnating.
  9. Paket e'lon qilib, mos papka tuzilmasini yarating.
  10. .jar faylining aslida nima ekanini bilib oling.

Xulosa #

  • Yozish uchun JDK kerak, JRE emas.
  • javac Salom.java bayt-kod yaratadi, java Salom uni ishga tushiradi - ikkinchisida kengaytma yozilmaydi.
  • Java 11 dan java Salom.java bilan bir buyruqda ishga tushirish mumkin.
  • Fayl nomi public class nomiga aynan mos bo'lishi shart.
  • Paket nomi papka tuzilmasiga mos bo'ladi va teskari domen ko'rinishida yoziladi.
  • Katta loyihada Maven yoki Gradle ishlatiladi; natija - .jar fayli (aslida ZIP arxiv).
  • java -version va javac -version bir xil bo'lishi kerak.

Keyingi bo'limda turlar va o'zgaruvchilarni o'rganamiz.

Xatolik topdingizmi?

Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.