2017 m. spalio 23 d., pirmadienis

Java Aplinka

Java iš komandinės eilutės

Java komandinės eilutės įrankių aprašymai: http://docs.oracle.com/javase/6/docs/technotes/tools/index.html#basic

Pagrindiniai:

  • javac - java kompiliatorius.
  • java - naudojama paleisti Java programoms.
  • jar - JAR failų ruošimo įrankis.

javac naudojimas ir parametrai

javac [options] [sourcefiles] [classes] [@argfiles]

Pagrindiniai “nustatymai”:
-cp arba -classpath - kabliataškais atskirti keliai iki jar failų ar aplankų su *.class failais. Nenurodžius naudojamas sistemos kintamasis CLASSPATH.
-d katalogas - nustatoma, į kokį katalogą patalpinti sukompiliuotą kodą.
-sourcepath sourcepath - nustatoma iš kur imti klasių kodą. Gali būti direktorijos, zip ir jar failai, atskiriami “;”. Klasės rastos classpath gali būti perkompiliuojamos, jei jos randamos ir sourcepath.
Sourcefiles - tai failai, kuriuos norime kompiliuoti.
classes - class failai, kurie apdorojami ieškant annotacijų. Plačiau neaptarsime.
@argfiles - options ir sourcefiles rinkiniai surašyti į failus

Kas yra JAR failai

  • JAR = Java ARchive files. Tai iš esmės zip failai, su specialia struktūra.
  • Idealiu atveju - tai nuo sistemos nepriklausantys vykdomi failai, kuriuose surenkami daugelis Java programai reikalingų failų (pvz paveikslėlių).
  • Pagrindinėms operacijoms naudojamas jar įrankis, kuris yra dalis JDK.
Sukurti JAR failą: jar cf jar-file input-file(s)
  • c - create, f - rezultatas turėtų būti failas, rašomi be tarpų, gali būti bet kokia tvarka.
  • jar-file - norimo jar failo pavadinimas.
  • input-file(s) - tarpu atskirtų failų ar direktorijų sąrašas (direktorijos bus automatiškai išskleidžiamos į failų sąrašus).
  • Peržiūrėti JAR failo turinį : jar tf jar-file 
  • t - table of contents, rodo kad norime peržiūrėti turinį; f - reiškia, kad taikomės į failą, kurį nurodysime komandinėje eilutėje
  • jar-file - pavadinimas failo, kurio turinį norime peržiūrėti.
Išskleisti JAR failą - jar xf jar-file [archived-file(s)]
  • x - nurodoma, kad norime išskleisti jar failą; f - kad failą nurodysime komandinėje eilutėje.
  • jar-file - failas, kurį norime išskleisti.
  • [archived-file(s)] - failai JAR faile, kuriuos norime išskleisti. Jei nenurodyti detaliai - išskleidžiami visi.
  • išskleistas JAR failo turinys bus patalpintas į direktoriją, kurioje vykdoma komanda, išlaikant vidinę JAR failo aplankų struktūrą.
Papildyti JAR failą: jar uf jar-file input-file(s)
  • u - update, nurodo, kad bus pildomas failas; f - kad faila bus nurodytas komandinėje eilutėje.
  • jar-file - failas, kurį norėsime papildyti.
  • input-file(s) - tarpais atskirtų failų sąrašas, kuriuos norėsime įkelti į JAR failą.
  • Failai jau esantys JAR’o viduje bus pakeisti naujais.
JAR failai: vykdymas

JAR failus galima paleisti (įvykdyti), JEI:

Programa paleidžiama iš komandinės eilutės ir supakuota į JAR failą paleidžiama taip: 
java -jar jar-file
META-INF/MANIFEST.MF faile turi būti nurodyta Main klasė įrašant tokią eilutę: Main-Class: classname

JAR Manifest failai
  • JAR failai gali būti pasirašomi elektroniniu būdu, tvarkomi kodo versijavimo sistemose, užtikrinti paketo vientisumą (sealing a package).
  • Šioms funkcijoms reikalinga informacija saugoma manifest faile (META-INF/MANIFEST.MF, sukuriamas pagal nutylėjimą jar įrankio kuriant patį JAR failą)

Manifest failo keitimas JAR’e

jar cfm jar-file manifest-addition-file input-file(s)
  • c - jar failo kūrimas, f - nurodymas, kad jar failo pavadinimas bus komandinėje eilutėje, m - nurodymas, kad esamas JAR failas apjungiamas su manifest addition-file turiniu.
  • manifest-addition-file - tekstinis failas, kurio turiniu bus papildytas dabar egzistuojantis manifest failas.
Nustatant EntryPoint klasę galima naudoti komandą: 

jar cfe jar-file-name package.MainClassName input-file(s)
  • e - nurodo, kad bus nustatomas main klasės pavadinimas
  • package.MainClassName - main klasės paketas ir pavadinimas atitinkamai.
Classpath

  • Classpath - tai stringas iš nuorodų atskirtų “;” į vartotojo sukurtas klases. Šios nuorodos reikalingos įvairiems Java įrankiams ir programoms (pvz javac, java ir t.t.)
  • Classpath nuorodos rodo į jar ir zip failus arba class failų direktoriją. Jei kalba eina apie class failus direktorijoje - užtenka nurodyti kelią iki aukščiausio lygio paketo direktorijos.
  • Classpath galima nustatyti kaip sistemos kintamąjį ‘CLASSPATH’ arba kiekvienu atveju individualiai kviečiant java įrankius nurodžius parametrą -classpath.
  • “*” wildcard naudojimas reiškia, kad visi direktorijoje esantys jar failai bus įtraukti į classpath, bet .class failai -ne.
  • Visi *.class failai iš foo bus įtraukti į classpath įrašius tiesiog “foo”.
  • Java paketų, nepaisant to, kad jie atvaizduojami kaip katalogai failų sistemoje, nereikia rašyti į classpath.
Classpath tvarkymas

1. Maven - paruošiama lokali bendra classpath direktorija, kuria visi sutartinai naudojasi per CLASSPATH sistemos kintamąjį.
2. Rankomis Eclipse “Project properties”->.classpath failas projekto direktorijoje. Jo padavimas programai paleidimo metu - Eclipse reikalas.
3. “Po plika Java” - nustatant -classpath/-cp parametrus arba sistemos kintamąjį CLASSPATH http://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html

Classloader
  • Classloading - tai mechanizmas, kuris ieško reikalingų klasių Java programos veikimui.
  • Absoliučia dauguma atvejų naudojamas standartinis classloading mechanizmas, kurį pateikia JRE.
  • Klasių ieškoma iš eilės šiose vietose:
    • Bootstrap klasės: veikimui būtinos runtime klasės iš rt.jar, internationalization klasės iš i18n.jar ir pan.
    • Instaliuoti plėtiniai specialiuose kataloguose: JRE instaliaciniame kataloge lib/ext; Specializuotuose OS plėtinių saugyklose (nuo Java6), pvz /usr/jdk/packages/lib/ext naudojant Solaris.
    • Classpath nurodytuose jar ir zip failuose, direktorijose (tokia tvarka, kaip jie išvardinti classpath).

Komentarų nėra:

Rašyti komentarą

Etiketės