02 óra¶
A CodeMetropolis fordítása¶
A forráskódból történő fordítás lépéseit jelen tananyag tartalmazza. A sikeres fordítás érdekében fontos kiemelni az előfeltételek teljesítését, amelyhez szükséges lépéseket szintén ismertetünk az alábbiakban. A projekt repositoryban olvasható, hogy a CodeMetropolis fordításához a Java 22, valamint a Maven 3.8.3 vagy újabb verzióra lesz szükségünk.
Java környezet beállítása¶
A Java releasek gyakran változnak, nem ritka az sem, hogy egy gépen több telepített verzióval is találkozunk. Az egyes verziók jól megférnek egymás mellett, mind a Windows, mind a Linux esetében eltérő könyvtárakba kerülnek telepítésre. Ugyanakkor az eltérő verziók egyazon időben nem használhatók együtt. Az egyes verziók kiválasztását operációs rendszer szinten, vagy az integrált fejlesztői környezetben (Eclipse, IntelliJ IDEA) is elvégezhetjük.
Windows környezet¶
Ha nincs még telepítve a gépen Java 22, akkor azt erről az oldalról töltsük le. Válasszuk ki az OS-nek megfelelő verziót! Windows környezetben választhatunk installert, amelynek futtatásával a letöltött Java környezet telepítésre kerül a gépünkre. A Windows rendszereken a Java a C:\Programfájlok\Java
vagy 32 bites Windows esetén a C:\Programfájlok (x86)\Java
könyvtárba települ. Ezen a könyvtáron belül a találhatók az egyes telepített Java verziók. A jdk
könyvtárak a fejlesztői csomagokat is tartalmazzák, míg a jre
csak a futási környezetet. A futtatáshoz a verziókat tartalmazó könyvtárakon belül elhelyezkedő bin
alkönyvtár elérését kell biztosítanunk.
Windows és ORACLE Java esetében települ egy Java Control Panel alkalmazás, amelynek felületén kiválasztható felhasználó és rendszer szinten is a használni kívánt Java környezet.
Az aktuális környezetet a Windows-ban a Speciális rendszerbeállításokon keresztül lehet módosítani, amelyet a Gépházon belül a Névjegy linken történő kattintással is elérhetünk.
A Rendszer tulajdonságai panelen a Speciális tabon keresztül a Környezeti változók nyomógombra kattinva a PATH
és JAVA_HOME
környezeti változók értékét kell beállítani. A PATH
minden esetben a kiválasztásra kerülő Java verziót tartalmazó könyvtáron belüli bin
alkönyvtárra kell, hogy mutasson, míg a JAVA_HOME
értékének a kiválasztott Java verziót tartalmazó könyvtár elérési útját kell megadni.
Példa a környezeti változók értékére:
1 |
|
1 |
|
A környezeti változók módosítását követően a gépet újra kell indítani. Azt, hogy megfelelő Java verzió áll-e a rendelkezésünkre, CMD-n, vagy a PowerShell-ben kiadott Java -version
paranccsal lehet ellenőrizni.
1 2 3 |
|
A Maven telepítése esetén, töltsük a számunkra megfelelő verziót le az Apache honlapjáról és csomagoljuk ki egy kiválasztott könyvtárba. Például kicsomagolható a C:\Program Files\Maven\apache-maven
könyvtárba, de ehhez oda írási joggal kell rendelkeznünk (saját gép esetén javasolt). Definiáljunk egy környezeti változót MAVEN_HOME
néven és állítsuk azt úgy be, hogy a fent kicsomagolt könyvtárra mutasson. Adjuk hozzá a Path
környezeti változóhoz a MAVEN_HOME\bin
alkönyvtárat.
IntelliJ IDEA
Az IntelliJ IDEA környezet teljes támogatást ad a Maven projektek buildeléséhez és futtatásához, a fenti műveleteket akkor javasolt elvégezni, amennyiben parancssorban is szeretnénk projektet buildelni.
Linux környezet¶
A Linux disztribúciónkban használt csomagkezelő szoftvertől függően eltérő telepítési metódusokat kell alkalmaznunk a különböző disztribúciók esetében. A Debian csomagok (.deb
) telepítéséhez a dpkg -i csomag_neve.deb
parancs, vagy a gdebi
program használható. Debian alapú csomagkezelőt használ a Debian, az Ubuntu, a Knoppix, az MX Linux, a Linux Mint, a Kali és még nagyon sok más disztribúció.
Az rpm
csomagok telepítéséhez a rpm -ivh csomag_neve.rpm
parancsot tudjuk használni. Használhatjuk a dnf install csomag_neve.rmp
és yum install csomag_neve.rpm
csomagkezelőket is, ha azok valamelyike rendelkezésre áll. Az ilyen csomagkezelők a RedHat disztribúció alapjaira épülő Linuxokon találhatók meg, mint például a RedHat, a CentOS, a Fedora, az Oracle és a Mandriva, hogy csak az ismertebbeket említsük.
Maguk a Linux disztribúciók csomagkezelői is tartalmaznak valamilyen nyílt forráskódú Java verziót, az OpendJDK valamely változata elérhető a disztribúcióhoz tartozó repository-ból és egyszerűen telepíthető. Például Ubuntu alatt az apt install
paranccsal is telepíthetjük a repository-ban lévő Java környezetet.
sudo
A csomagkezelők használatához az érintett felhasználónak tagja kell lenni a sudo
csoportnak, amely csoporthoz történő hozzáadás a root felhasználó joga.
A Java csomagok archívumokban is elérhetők (azaz tar.gz
vagy tgz
kiterjesztéssel ellátott fájlokban). Ha ilyen formában áll rendelkezésre a környezet, akkor a következőképpen járhatunk el:
Tape ARchive
A tar.gz
vagy tgz
kiterjesztéssel rendelkező archiv fájlokat tarballnak is nevezik. A tar a Tape ARchive szó rövidítése. A programot a szalagos meghajtókra történő mentésekre tervezték, amelynek segítségével szekvenciális bitstreamet állítottak elő. A lemezen ez a formátum a .tar
, amelyet a gzip
program segítségével tömörítünk és kapjuk a fent említett tar.gz
vagy tgz
kiterjesztésű archivumokat.
- Válaszd ki a könyvtárat, ahova telepíteni szeretnéd a Java környezetet. Általában az
/usr/lib/jvm/java_verzió
szokott lenni az az elérési útvonal, ahova a csomagkezelők végzik a telepítést. Fontos megemlíteni, hogy tetszőleges könyvtárat választhatsz, aJAVA_HOME
környezeti változó beállítható a.bashrc
profile fájlban azexport JAVA_HOME='/usr/lib/jvm/java-22-openjdk-amd64'
sor felvételével. Szerkesztést és mentést követőensource ~/.bashrc
parancs futtatásával elérhetővé teheted az általad választott telepítés helyét.
root jogosultság szükséges
A rendszerkönyvtárakba történő telepítéshez root jogosultság szükséges.
- A kiválasztott könyvtárba bontsd ki az archívumot.
- Állítsd be a környezeti változókat a
.bashrc
profilban és töltsd azt újra.
A Java környezet elérési útvonalát, illetőleg az aktuálisan használt Java verziót (és más több verzióban is szükséges környezetet) a Linuxban ügyes módszerrel is beállíthatjuk. Amennyiben több verziót szeretnénk egymás mellett használni, erre szükségünk is lesz. A program, amit használni kell az update-alternatives
.
- Telepítés: Futtassuk a
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java_verzio/bin/java 1
parancsot. A parancs első paramétere olyanbin
könyvtárra mutat, ahol ajava
binárisra mutató link megtalálható és ez az útvonal a parancssorból elérhető. A második paraméter a használt parancsnak a neve. Ezt követi az elérési út, ahova az archivumot kibontottad, azon belül is a konkrét java binárisod elérhetőségét kell specifikálni. Az utolsó paraméter pedig egy prioritás, amelynek egyedinek kell lennie. Ez egyben egy olyan sorszám, amelyre később hivatkozni fogsz. - Beállítás: Telepítést követően be kell állítanod azt a környezetet, amit használni kívánsz. A beállítás során azt jelölöd ki, hogy melyik környezetre mutasson az
usr/bin/java
. Add ki azupdate-alternatives --config java
parancsot és a megjelenő listából válaszd ki egyszerűen azt a környezetet, amelyet használni szeretnél.
Amennyiben a Linux rendszerünk nem rendelkezik Maven builderrel, úgy azt telepítsük a sudo apt install maven -y
paranccsal.
Fejlesztői környezetek¶
Az Eclipse és a IntelliJ IDEA is megkönnyíti a használt környezet kiválasztását. Az IDEA esetében a projekt létrehozásakor megjelenő GUI-n választható ki a használt Java környezet (az Eclipse esetében hasonlóan).
Ha nem elérhető a keresett környezet, akkor a JDK
combo boxra kattintva válasszuk az + Add SDK
almenüből a Download JDK...
vagy JDK
menüpontot, ahol a letöltött csomag manuális keresésére adódik módunk.
Meglévő projekt esetében a File->Settings
menüben tudjuk a beállításokat módosítani.
Az IntelliJ IDEA beállításához az ezen az oldalon kapsz további segítséget.
Git clone¶
A CodeMetropolis fordításához klónozzuk a projektet a GitLab repositoryból. A portál git verziókövető rendszert használ.
Verziókövető rendszerek
A verziókövető rendszerek olyan szoftverek, amelyek nyomon követik és kezelik a fájlrendszerben végzett módosításokat. Lehetővé teszik a szoftver különböző verzióinak tárolását, biztosítják az egyes fejlesztési vonalak elérését, nyilvántartják a verziók közötti különbségeket, lehetővé teszik a korábbi verziókra történő visszatérést, a konfliktust okozó módosítások ellenőrzését, feloldását, a folyamat elágazását, és ezáltal újabb fejlesztési folyamatok létrehozását, valamint a fejlesztési ágak összeillesztését.
Központosított vs. elosztott verziókezelő rendszerek
A verziókövető rendszerek lehetnek központosítottak vagy elosztottak. A központosított verziókezelő rendszerekben a változásokat egy központi szerveren tárolják, amelyen keresztül a fejlesztők kommunikálnak egymással. Az elosztott verziókezelő rendszerekben minden fejlesztő saját példányt tart a teljes verziótörténetről, és a változtatásokat közvetlenül egymás között osztják meg. A központosított verziókezelő rendszerek előnye, hogy egyszerűbbek és könnyebben kezelhetőek, míg az elosztott verziókezelő rendszerek előnye, hogy decentralizáltak és rugalmasabbak. A legnépszerűbb központosított verziókezelő rendszerek közé tartozik a Subversion (SVN), míg az elosztott verziókezelő rendszerek közé tartozik a git.
A git egy elosztott verzókezelő rendszer, azaz nincs kitüntetett szerver, - a GitLab sem az -, azonban a gyakorlatban mégis használunk olyan védett repositorykat (GitLab, GitHub), amelyeket de facto szervernek tekinthetünk.
Egy új fejlesztési projektbe történő bekapcsolódás legegyeszerűbb módja, ha a repository-t klónozzuk a saját gépünkre. A klónozás során a teljes repositoryról készül egy másolat a gépünkre. Ahhoz, hogy ez működjön, a saját gépünkre is telepíteni kell a git környezetet.
Nyissuk meg a CodeMetropolis oldalát és kattintsunk a Code
nyomógombra. A megjelenő dialóguson belül válasszuk ki a Clone with HTTPS
címhez tartozó linket. Másoljuk ki a linket, majd írjuk adjuk ki a git parancssorban a következő parancsot: git clone https://git-okt.sed.inf.szte.hu/rf2/2024/CodeMetropolis.git
. A repositoryról ekkor egy másolat készül a gépünkre.
Klónozás
A git clone
parancs feladata a paraméterként megadott repositoryról, illetőleg branchről egy másolat készítése a saját gépünkre. Mikor klónozunk, a kijelölt repository teljes történetéről másolatot kapunk.
Maven¶
Az Apache Maven a build folyamatok automatizálására alkalmazható tool. A szoftver plugin alapú architektúrára épül. A build folyamat függőségeinek feloldásához a hiányzó csomagokat az Internetről tölti le és telepíti. A Maven projektek specifikálására a pom.xml
(Project Object Model) fálj használatos, amely az általános definíciókon túl, tartalmazza a függőségek meghatározását is.
Az alábbi kódrészletben egy pom.xml
egy részlete látható:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
<dependencies>
) kiegészítése. Ebben a szakaszban meg kell adnunk a használni kívánt package nevét, verzióját, esetenként egyéb információkat, mint a fenti pédában a scope. A függőségeket az online Maven repository-k alapján oldja fel a rendszer, nekünk csak hivatkozni kell rájuk a pom.xml
-ben.
Az alábbi ábra a Maven által automatikusan generált könyvtárszerkezetet illusztrálja:
A Maven build életciklusa több fázisból áll, amelyek egymást követve futnak le annak érdekében, hogy a folyamat végén a kívánt build előálljon. A fázisok jellemzően a validáció (mvn validate
) fordítás (mvn compile
), teszt futtatás (mvn test
), csomag készítés (mvn package
), telepítés (mvn install
), csomagok másolása (mvn deploy
), stb. lépéseket tartalmazzák. Részletes leírást a Maven használatáról ezen az oldalon találunk.
Ha a Maven-t parancssorban használjuk, akkor minden egyes lépés egymást követően futtatható. Például a fordítás (compile) futtatásához adjuk ki az mvn compile
parancsot. Ha a korábbi fordítás során előállt fájloktól szeretnénk megtisztítani a projektünket, akkor az mvn clean
parancs segít ebben.
A CodeMetropolis buildeléséhez a projekdefiníciós fájl már rendelkezésre áll. A buildeléshez a Maven 3.8.3 verziót javasoljuk.
CodeMetropolis projekt fordítása¶
Lépjünk be a klónozott projekten belül a sources
könyvtárba. Ebben a könyvtárban található a forráskód, illetőleg a projektdefiníciós pom.xml
fájl is.
Adjuk ki az mvn clean package
parancsot! Az mvn clean
egy Maven parancs, amely lehetővé teszi, hogy törölje az előzőleg lefordított Java .class
fájlokat és erőforrásokat (például .properties
) a projektben. A clean parancs használata után a projekt tiszta lappal indul. Az ezt követő mvn package
(a fenti parancsban összevonva szerepel) fordítja le a programot és készíti el a .jar
futtatható fájlokat.
IDE használata
A Maven mind az Eclipse, mind az IntelliJ IDEA esetén integrált módon beépül a fejlesztői környezetbe, azaz menüből, illetőleg linkekből elérhető és a cél kiválasztásán keresztül kattintással futtatható.
Maven projekt importálása
Az IDE-k esetében figyeljünk arra, hogy a projekt importja során specifikáljuk a felkínált lehetőségekből, hogy Maven projekt importjáról van szó. Az importálás során a projekt könyvtárának azt a könyvtárat kell megadni, ahol a pom.xml
megtalálható.
Projekt fordítása IntelliJ IDEA környezetben¶
Az alábbiakban egy rövid bemutató segítségével adunk támogatást az IntelliJ IDEA környezet használatához a CodeMetropolis projekt fordításához. A hallgatók számára opcionális lehetősége továbbra is választani a IntelliJ IDEA és az Eclipse környezet között.
-
Importáljuk a projektet Maven projekt formájában!
-
Buildeljük az alkalmazást! A keretrendszer, mivel Maven projektként lett importálva a folyamatban automatikusan használni is fogja a Mavent. A build során elkészült
class
fájlok atarget
könyvtárban találhatók. -
A célok futtatásához a beépülő Maven panelt használhatjuk, az adott projekten a célra történő dupla kattintással.
-
A csomagok futtatásához állítsuk be a használni kívánt Java környezetet is!