KODO STRUKTŪRA

Java paketai ir API

Paketas grupuoja susijusias Java klases panašiai kaip aplankas grupuoja failus. Paketai padeda tvarkingai organizuoti programą, valdyti prieigą ir išvengti vienodų klasių pavadinimų konfliktų.

Kam reikalingi paketai?

  • Susijusios klasės laikomos vienoje loginėje vietoje.
  • Dviem skirtingų paketų klasėms galima suteikti tokį pat pavadinimą.
  • Paketo prieiga leidžia paslėpti vidines programos detales.
  • Didelį projektą lengviau prižiūrėti ir plėsti.

Java paketai skirstomi į integruotus Java API paketus ir programuotojo sukurtus paketus.

Kas yra Java API?

Java API yra kartu su Java platforma pateikiama paruoštų klasių ir sąsajų biblioteka. Joje yra priemonių darbui su , , failais, tinklu, įvestimi ir daugeliu kitų užduočių.

Keli dažnai naudojami Java API paketai
PaketasPaskirtisKlasės pavyzdys
java.langPagrindiniai kalbos tipai ir sistemos klasėsString, Math
java.utilKolekcijos ir pagalbinės priemonėsArrayList, Random
java.timeDatos ir laikasLocalDate
java.ioDuomenų įvestis ir išvestisFile

Klasių importavimas

import instrukcija rašoma po package deklaracijos ir prieš klasę:

import paketas.Klase; // Importuojama viena klasė
import paketas.*;      // Importuojamos paketo klasės
Konsolės rezultato nėra.

Šios dvi eilutės yra bendri importavimo šablonai. Jos tik paaiškina sintaksę ir pačios nieko nevykdo.

  1. import pasako Java, kokią kitame pakete esančią klasę norime naudoti.
  2. Forma paketas.Klase nurodo vieną konkrečią klasę.
  3. Žvaigždutė * leidžia naudoti visas tiesiogiai tame pakete esančias klases.
  4. Importas turi būti parašytas prieš klasės deklaraciją.
  5. Vien importavimas programos rezultato nesukuria – rezultatą gauname tik panaudoję importuotą klasę.
Žvaigždutė neimportuoja vidinių paketų.

import java.util.* apima java.util klases, bet ne, pavyzdžiui, java.util.concurrent paketo klases.

Integruotos klasės naudojimas

ArrayList yra keičiamo dydžio sąrašas iš java.util paketo:

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        ArrayList pirkiniai = new ArrayList<>();
        pirkiniai.add("Duona");
        pirkiniai.add("Pienas");

        System.out.println(pirkiniai);
    }
}
Konsolės rezultatas

[Duona, Pienas]

  1. import java.util.ArrayList padaro klasę ArrayList prieinamą šiame faile.
  2. Sukuriamas tuščias tekstų sąrašas pirkiniai.
  3. Metodas add() pirmiausia įdeda duoną, o tada pieną.
  4. println() parodo visą sąrašą laužtiniuose skliaustuose ir išlaiko elementų eilę.
  5. Skirtingai nuo paprasto masyvo, ArrayList dydis gali augti pridedant naujus elementus.

Kitas API paketas gali suteikti visai kitą funkcionalumą, pavyzdžiui, darbą su datomis:

import java.time.LocalDate;

public class Main {
    public static void main(String[] args) {
        LocalDate gimtadienis = LocalDate.of(2026, 8, 15);
        System.out.println("Gimtadienis: " + gimtadienis);
    }
}
Konsolės rezultatas

Gimtadienis: 2026-08-15

  1. LocalDate klasė importuojama iš java.time paketo.
  2. Metodui of() perduodami metai 2026, mėnuo 8 ir diena 15.
  3. Sukurtas datos objektas išsaugomas kintamajame gimtadienis.
  4. Java datą parodo įprastu formatu metai-mėnuo-diena, todėl matome 2026-08-15.

java.lang importuojamas automatiškai

String, System, Math ir kitas java.lang klases galima naudoti be atskiro import. Java šį paketą padaro prieinamą automatiškai.

Savo paketo kūrimas

package deklaracija turi būti pirmoji programinė failo instrukcija:

// Failas: src/lt/pavyzdys/zmones/Asmuo.java
package lt.pavyzdys.zmones;

public class Asmuo {
    public String vardas = "Ona";
}
Konsolės rezultato nėra.

Šiame faile tik sukuriama klasė Asmuo. Joje nėra main() ar println(), todėl pati klasė nieko neišveda.

  1. Failas Asmuo.java laikomas aplankuose, atitinkančiuose paketą lt.pavyzdys.zmones.
  2. Pirmoji programinė eilutė paskelbia, kuriam paketui priklauso klasė.
  3. public class Asmuo sukuria viešą klasę, kurią galės naudoti ir kiti paketai.
  4. Klasė turi viešą tekstinį lauką vardas, kuriame saugoma reikšmė Ona.

Paketo pavadinimas paprastai rašomas mažosiomis raidėmis, dažnai naudojant atvirkštinį domeną, pavyzdžiui, lt.pavyzdys.zmones. Aplankų struktūra turi atitikti paketo dalis.

Klasės naudojimas kitame pakete

Kitame pakete esančią viešą klasę reikia importuoti:

// Failas: src/lt/pavyzdys/app/Main.java
package lt.pavyzdys.app;

import lt.pavyzdys.zmones.Asmuo;

public class Main {
    public static void main(String[] args) {
        Asmuo asmuo = new Asmuo();
        System.out.println(asmuo.vardas);
    }
}
Konsolės rezultatas

Ona

  1. Klasė Main priklauso kitam paketui – lt.pavyzdys.app.
  2. import lt.pavyzdys.zmones.Asmuo nurodo tikslų norimos klasės adresą.
  3. Su new Asmuo() sukuriamas naujas šios klasės objektas.
  4. Per asmuo.vardas pasiekiama klasėje įrašyta reikšmė Ona.
  5. Kad tai veiktų, klasė ir iš kito paketo naudojamas jos laukas turi būti pasiekiami, šiuo atveju pažymėti public.

Pilnas klasės pavadinimas

Vietoje importo galima kiekvieną kartą parašyti visą paketo ir klasės pavadinimą:

public class Main {
    public static void main(String[] args) {
        java.time.LocalDate data = java.time.LocalDate.of(2026, 8, 15);
        System.out.println(data);
    }
}
Konsolės rezultatas

2026-08-15

  1. Šiame faile nėra atskiros import java.time.LocalDate eilutės.
  2. Vietoje trumpo pavadinimo kiekvieną kartą rašomas pilnas adresas java.time.LocalDate.
  3. Java tiksliai žino, kurią LocalDate klasę reikia naudoti.
  4. Rezultatas nesikeičia – konsolėje vis tiek rodoma data 2026-08-15.

Tai naudinga, kai dvi naudojamos klasės turi tokį pat trumpą pavadinimą. Įprastame kode aiškūs pavieniai importai dažniausiai lengviau skaitomi.

Paketų naudojimo gairės

  • Grupuok klases pagal atsakomybę arba programos sritį.
  • Naudok trumpus, mažosiomis raidėmis rašomus paketų pavadinimus.
  • Viešink tik tas klases ir jų narius, kurių reikia kitiems paketams.
  • Teik pirmenybę konkrečių klasių importams, kai jie padeda aiškiai matyti priklausomybes.
  • Naudodamas API klasę tikrink dabartinės Java versijos oficialią dokumentaciją.