Framework, külső könyvtár

Ha az ember kicsit olvasgat programozás, szoftverfejlesztés témában, könnyen belefuthat a framework szóba.
Mit is jelent ez?

Kezdjük egy kicsit messzebbről a történetet!

A programozási nyelvek mindegyike rendelkezik egy eszközkészlettel, ami az adott nyelvhez legfontosabb eszközöket tartalmazza. Ezt úgy tudjuk elképzelni, mintha egy műhelyben lennének olyan szerszámok, amiket nagyon gyakran használnak (csavarhúzó, kalapács, fogók), vagy ha egy konyhát tekintünk, akkor ott is igaz ugyanez (keverőtál, fakanál, tepsi…).
Ezt az eszközkészletet hívják az adott nyelv szabványos (osztály)könyvtárának, standard (class) library. Az „osztály” akkor kerül a kifejezésbe, ha objektum-orientált nyelvet használunk, egyébként kimarad.

Ahogy a konyhában, úgy a műhelyben is előfordul, hogy speciális eszközökre van szükség (pl. profi, 80 literes, tejszínhabkészítő mixer vs. valamilyen autó központi számítógépéhez való csatlakozó kábel), ez nem szokott része lenni egy alap konyha vagy műhely felszereltségének, külön kell beszerezni. Így van ez a szoftverfejlesztés világában is, készülnek külön, harmadik fél által (tehát nem a programozási nyelv gyártója, nem a programozó, hanem valaki harmadik) készített, speciális eszközök. Ezek a külső könyvtárak (external library, third-party library vagy csak library).

A különbség az analógiában használt helyekkel szemben, hogy a külső könyvtárakat mindenki magának is meg tudná írni, ha van kellő tudása és ideje hozzá. Természetesen felesleges munka lenne, ezért is jöttek létre a külső könyvtárak: valaki egyszer elkészítette, közzétette, mindenki szabadon (vagy valamilyen korlátozással) használhatja.

A framework (keretrendszer) még egy lépéssel továbbmegy. A külső könyvtárak hasznos eszközöket tartalmaznak, de valójában a program felépítése még mindig a programozó kezében van. (Ha tanultál már nálunk vagy máshol programozást, akkor a program felépítéséről sokat tudsz: indulunk egy üres main()-nel, és megtöltjük. Ha még nem próbáltad ki az oktatási rendszerünket, töltsd ki a belépő tesztet, és próbáld ki!)
A framework ebben jelent pluszt: úgy képzeld el, mint egy teljes programot, ami már majdnem működik, csak ki kell egészítened néhány extra funkcióval, hogy a programod teljes legyen. A program felépítése ebben az esetben nem a programozó kezében van (sokszor a main metódust is megírta a framework).

Összefoglalva: a külső könyvtárak esetén a programozó építi fel a programot, a külső könyvtár kiegészíti, a framework esetében a framework (készítője) építi fel a programot, és a programozó egészíti ki azt.

A frameworkok alkalmazásának előnye természetesen, hogy általában kevesebb munkát jelent bennük egy programot megírni, de egyben meg is köti a programozó kezét, megszabja, hogy milyen módon tud kiegészítéseket írni a frameworkkel készült programjához. További, hátránynak mondható tulajdonság az, hogy általában két framework nem kombinálható egymással.

Példa frameworkre: Swing (a Java egyik grafikus rendszere), Spring (sok mindenre használják, legtöbbször talán webes/nagyvállalati Java programok írására).
Példa külső könyvtárra: Hibernate (adatbáziskezelésre használt Java eszköz), Apache Commons, Google Guava, JodaTime

A mi oktatási rendszerünkben a Swing, Apache Commons, Google Guava és a JodaTime tárgyalása a Java SE képzésünk része, míg a Hibernate tudnivalóinak külön oktatási modult szenteltünk.

Pasztuhov Dániel