Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
A mai előadás tartalma: Miért pont Java? Hello World! Fordítás Szemétgyűjtő Java nyelv alapjai adattípusok változók operátorok vezérlő szerkezetek
Miért pont Java? I. Egyszerű Magas szintű, objektum orientált Biztonságos, robusztus erősen tipizált nyelv Platform független, hordozható “Java: A simple, object-oriented, network-savvy, interpreted, robust, secure, architecture neutral, portable, high- performance, multithreaded, dynamic language.” The Java Language: An Overview – java.sun.com
Miért pont Java? II. Interpretált, dinamikus virtuális gép class loader byte kód Többszálú elosztott rendszerek
Hello World! /* Hello World! */ class HelloWorldApp { public static void main(String[] args) { System.out.println("Hello World!"); } ClassLoader() Ellenőrzés Memória foglalás A hivatkozott osztályok betöltése Inicializálás main metódus meghívása
Fordítás JVM Java API program file: osztaly.java compiler: `javac osztaly.java` bytekód: osztaly.class interpreter: `java osztaly`
JAR file-ok Segítségükkel több file-t egy archívumba pakolhatunk Tipikusan egy alkalmazás class file-jait tartalmazza Az így csomagolt alkalmazás futtatható közvetlenül, appletként, az osztályai hozzáférhetőek Előnyei: biztonságos rövid letöltés tömörítés hordozhatóság
Java komponensek – JDK 1.4
Java komponensek – JDK 5.0
Szemétgyűjtő (Garbage Collector) egyik legfontosabb szolgáltatás mérőszámai: Szünet időtartam Szünet megjósolhatóság Memória használat CPU használat Virtuális memória kezelés Cache kezelésű
Java nyelv alapok adattípusok változók operátorok vezérlő szerkezetek osztályok interfészek RTTI reflexió alap objektumok csomagkezelés
Változók – adattípusok
Primitív adattípusok C++ boolean: 1, 0 nincs! szigorú szabályok a byte-okra (platform függetlenség) standard default értékek (platform függetlenség) nincs unsigned! string mindig objektum (String)
Wrapper (csomagoló) osztályok Minden primitív adattípusnak van csomagoló osztálya Segítségükkel a primitív típusokat is objektumként kezelhetjük Boolean, Integer, …
Változók Minden változóhoz típust és nevet kell rendelnünk. A változók nevét kicsi betűvel kezdjük, a több szóból álló változókat a szóhatárnál nagybetűvel választjuk el. bool isVisible; az aláhúzást mindenhol használhatjuk de csak a konstansokban szokás az utasítások végén ; Létrehozáskor az alapértelmezett érték: False /U0000 null
Példa public class MaxVariablesDemo { public static void main(String args[]) { byte largestByte = Byte.MAX_VALUE; short largestShort = Short.MAX_VALUE; int largestInteger = Integer.MAX_VALUE; long largestLong = Long.MAX_VALUE; float largestFloat = Float.MAX_VALUE; double largestDouble = Double.MAX_VALUE; char aChar = 'S'; boolean aBoolean = true; System.out.println("The largest byte value is " + largestByte); … }
Operátorok különbözô értékadások = += -= *= /= %= ^= &= |= >= >>>= feltételes kifejezés ? : logikai OR || logikai AND && bitenkénti OR | bitenkénti XOR ^ bitenkénti AND & egyenlô, nem egyenlô == != összehasonlítások >= <= bitenkénti léptetések > >>> összeadás, kivonás + - szorzás, osztás, moduló * / % új egyed létrehozása new (type)expression (pre- vagy poszt-) inkremens és dekremens, logikai és bitenkénti negálás, típus ellenôrzés ! ~ instanceof zárójelek, indexelés, osztály komponensére hivatkozás () []. nincs sizeof() van instanceof
Vezérlő szerkezetek I. ciklusok: while do-while for döntési pontok: if-else switch-case while (kifejezés) { utasítások } do { utasítások } while (kifejezés); for (inicializálás; befejezés; növekmény) { utasítások } if (feltétel) { utasítás ha teljesül} else { utasítás ha nem teljesül } switch (változó(csak int)) { case érték1: utasítás1; break; case érték2: utasítás2; break; default: utasítás; }
Vezérlő szerkezetek II. kivétel kezelés: try-catch-finally elágazás break (kilép) continue (ellenőrzi a feltételt) return (kilép a metódusból) try { utasítások } catch (kivétel neve) { utasítások} finally { utasítások}