Elméleti alapozás

A Java-nyelv jellegzetességei

 

Gondolatközpontúság

Egyszerűség (és bonyolultság)

Platformfüggetlenség (hordozhatóság)

Többszálúság (multithread)

Interpretáltság

Objektumorientáltság

Elosztottság

Biztonság

Dinamikusság

 

A Java-nyelv voltaképpen minden olyan lényeges elemet tartalmaz, amely ma a programozói rendszerszemlélet csúcsát képviseli. Az alábbi szempontokat nem mindegyik kezdő fogja megérteni, ettől függetlenül megpróbálkozunk bizonyos mélységű magyarázataival.

 

Gondolatközpontúság

 

Ez a legfontosabb egy magas szintű programozási nyelvben: formaelemei tükrözzék az emberi gondolkodás, vele az emberi élet során felmerülő problémák folyamatát. Ennek az alapvető követelménynek a Java-nyelv tökéletesen megfelel.

 

Egyszerűség (és bonyolultság)

 

Formailag nézve a Java nagyon hasonlít az ős C és C++ nyelvezetére (szintaxis-hasonlóság), de tőlük kisebb mértékben különbözik. Bár alapnyelvezete egyszerű és gondolatközpontú, ám a rendkívül kidolgozott (előregyártott) osztálykönyvtár-struktúra miatt a Java-rendszer átlátása és megtanulása határozottan nehéz.

 

Platformfüggetlenség (hordozhatóság)

 

A platformfüggetlenség azt jelenti, hogy a fordításkor keletkezett kód egymástól különböző számítógépes rendszereken is ugyanolyan módon és feltételekkel futtatható le és természetesen ugyanazokat a kimeneti eredményeket produkálja. Ennek eklatáns lenyomata a nyelvvel kapcsolatos híres mondás:

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

Írd meg egyszer, futtasd sokszor!

 

Ezt a Java úgy éri el, hogy a Java-compiler nem fordítja le teljesen a nyelvet gépi kóddá, hanem köztes, úgynevezett byte-kódot állít elő (.class kiterjesztéssel), amelyet a különböző rendszereken, előzetesen feltelepített JVM (Java Virtual Machine) hajt végre. A JVM tehát (az operációs rendszer felett) egy olyan további szoftverréteg, amely teljesen elrejti a hardverspecifikus jellemzőket a Java-alkalmazás elől. Ám maga a JVM platformfüggő, ezért alkotójától, a Sun Microsystems-től és 2009-től az új tulajdonosától, az Oracle-től az Interneten különböző, ingyenes verziói érhetők el; a legfontosabb platformok: Windows, Linux, Mac OS, Solaris.

 

Többszálúság (multithread)

 

Ez a programozási mód lehetővé teszi több programszál egyidejű futtatását, amely jelentős teljesítménynövekedést, több processzoros rendszerek esetében pedig még hatékonyabb erőforrás-elosztást tesz lehetővé. Egyes programozási módszertanok ezt konkurens tulajdonságnak is nevezik.

 

Interpretáltság

 

A fogalom tisztázásához először meg kell néznünk, hogy milyen módszerekkel lehetséges egy megírt programkódot gépi kódba fordítani:

Az utóbbi fordítási mód vonatkozik programozási nyelvünkre is, amely igen hatékonnyá teszi a Java-szoftverfejlesztést.

 

Objektumorientáltság

 

Az objektum nehezen érthető fogalom.

Elsősorban mivel az informatika egyik célja a való világ modellezése, ezért a programozóknak kulcsfontosságú feladat jutott: modellezniük kell a világ dolgait és eseményeit. Ezt ők lényegében már megtették, illetve folyamatosan teszik, amelynek eredményeképpen rengeteg, a világot valamilyen leíró, de egymástól sokszor igen különböző programkód keletkezett. Például:

Sőt, eme rengeteg virtuális tapasztalat globális megosztásra is került az előregyártott osztálykönyvtárak formájában. Ekkor már nem szükséges megírnunk például egy keres(valamit, valahol) függvényt, hanem az osztálykönyvtárból bekapcsoljuk (importáljuk) saját kódunkba az azonos funkciójú osztályt, vele metódusát és már rendelkezésre is áll.

 

Az alábbi futtatható Java-kódban a charAt(int index) függvény a Java szóban (még pontosabban: String karakterfüzérben) ír ki adott helyen (indexen) lévő karaktereket (ahelyett, hogy a függvényt nekünk kellett volna megírnunk):

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
    public static void main(String[] args) {
        String nev = new String("Java");
        System.out.println(nev.charAt(0));
        System.out.println(nev.charAt(1));
        System.out.println(nev.charAt(2));
        System.out.println(nev.charAt(3));
    }
}

 

Végeredmény:

J

a

v

a

 

Mivel a különböző funkciójú objektumok előre legyártottak, érdemes őket logikus hierarchiába rendezve rendszerezni. Ezen munka oroszlánrészét a Sun Microsystems (és az új tulajdonos Oracle) már megtette helyettünk, nekünk „csak” hasznosítanunk kell egyéni vagy a megrendelő igényeinek megfelelően (API - Application Programming Interface).

 

Még plasztikusabb hasonlattal: mindez egy hatalmas LEGO, amelynek alapelemei különböző nagyságú és funkciójú, előregyártott programkódokból állnak. A programozó feladata ezek logikus és működőképes összeillesztése egy nagyobb és bonyolultabb programkód megalkotása céljából.

 

(Itt jegyzem meg, hogy az objektumorientált programozásnak igen szigorú programozás-technikai alapelvei vannak /egységbezárás, információelrejtés, üzenet, öröklődés, stb./, amelyből azonban a kezdők még nem sokat értenek, ezért itt most nem ismertetem.)

 

Elosztottság

 

Ez a hálózati működéssel kapcsolatos: köztes byte-kód állományok hálózaton keresztül is betöltődhetnek, nem számítva persze az összes fontos hálózati protokoll (TCP/IP, HTTP, FTP, TLS) natív támogatását.

 

Biztonság

 

A biztonság bonyolult fogalom a Javában. Hiszen nem vitathatjuk el a Java alkotóinak szándékát, midőn a nyelv megalkotásakor megpróbálták kizárni azokat a biztonsági réseket, kockázatokat, amelyek a C/C++-ra annyira jellemzőek voltak. Itt és most ezeket kezdők számára felesleges részletezni, a lényeg, hogy az említett nyelveknél alapjában véve biztonságosabb nyelv keletkezett. A Java azonban ma már óriási és egyre fejlődő kódrendszer és mint ilyen, sajnos rengeteg programozási hibát tartalmaz. Így fordulhat elő az, hogy a világ egyik legbiztonságosabbnak tervezett programozási nyelvének sérülékenységéről szinte hetente kapunk híreket.

 

Dinamikusság

 

Ellentétben a műveleti memóriába előzetesen betöltött programkódoktól, a Java nyelv köztes, byte-kódjai akár dinamikusan, azaz futási idő alatt is betöltődhetnek.