Professional Documents
Culture Documents
01b Java
01b Java
1
Alkalmazsfejleszts
Irodalom
http://java.sun.com/
http://www.mindview.net/Books/TIJ/
2
Alkalmazsfejleszts
Java nyelv I.
Egyszer
a kezdk is knnyen boldogulnak vele (C,C++)
Magasszint
komplex feladatok egyszeren megoldhatak vele
(hlzat kezels, grafika)
Objetum orientlt
az alapoktl kezdve (a primitv adattpusok kivtelvel
minden objektum)
elosztott rendszerek (komponens alap fejleszts,
jrafelhasznlhatsg)
Biztonsgos, robosztus
fordtskor ellenrzs
nincs pointer (NULL pointerre hivatkozs, levegben lg
mutatk)
dinamikus szemtgyjts (memory leak)
3
Alkalmazsfejleszts
Tbbszl
Elosztott (a class loader kpes hlzatrl betlteni az
osztlyt, RMI, )
4
Alkalmazsfejleszts
Hogyan mkdik ? I.
JVM
Java API
.java fjl
javac osztaly.java
osztaly.class
java osztaly
6
Alkalmazsfejleszts
Hello World !
/** * A HelloWorldApp osztly mely a szabvnyos kimenetre kirja a Hello World
dvzletet. */
class HelloWorldApp
{
public static void main(String[] args)
{
System.out.println("Hello World!"); //Kirja a szveget.
}
}
1. ClassLoader()
2. Ellenrzs
3. Memria foglals
4. A hivatkozott osztlyok betltse (implementci fgg)
5. Inicializls
6. main metdus meghvsa
7
Alkalmazsfejleszts
Java megvalstsok
JVM
VM (Interpretlt)
Egy bjtos utastsok
(kicsi byte-kd)
Nincs regiszter ->
Minden a stack-ben
trtnik
JIT (Lefordtott)
Pl: HotSpot VM
8
Alkalmazsfejleszts
Fordt
JIT Just in Time fordt:
Egyszergyors hagyomnyos fordt
Problmk:
A felhasznl ideje alatt fordtdik
A Java metdusok nagy rsze polimorfikus (nem
hasznlhat a hagyomnyos statikus fordt)
A Java programok futs kzben megvltozhatnak
(dinamikus osztly betlts)
9
Alkalmazsfejleszts
HotSpot JIT
A legtbb program idejnek nagy rszt egy
kis rszbe tlti (HotSpot)
Az sszes metdus lefordtsa helyett csak a
leggyakrabban hasznlt metdusokat fordtja le gpi
kdra
A gyakran hasznlt metdusok behelyettestse
(inlininig). Nem foglalkozik azzal, hogy final-e.
Dinamikus deoptimalizls. Egy-egy osztly
betltse utn elfordulhat, hogy a behelyettestett
metdust vissza kell cserlni metdushvsra
Kt tpus:
Kliens (gyors, kevesebb memrit hasznl, nem optmlis)
Szerver (lassabb, optimlisabb)
10
Alkalmazsfejleszts
Tpusok
11
Alkalmazsfejleszts
12
Alkalmazsfejleszts
Objektumok
A primitv tpusok kivtelvel minden
objektum
Egy objektum ltrehozsnak fzisai:
Deklarls Pldnyosts
Inicializls
13
Alkalmazsfejleszts
14
Alkalmazsfejleszts
java.lang.Object
minden osztly belle szrmazik kzvetve
vagy kzvetlenl
fellrhat metdusai:
clone (klnozs)
equals/hashCode (sszehasonlts, int)
finalize (memria felszabadts, super.finalize())
toString
vgleges metdusai:
getClass
notify
notifyAll
wait
15
Alkalmazsfejleszts
16
Alkalmazsfejleszts
Plda
public class Rectangle {
public int width = 0;
public int height = 0;
public Point origin;
Rectangle()
{
origin = new Point(0, 0);
}
public Rectangle(Point p)
{
origin = p;
}
public Rectangle(int w, int h)
{
this(new Point(0, 0), w, h);
}
public Rectangle(Point p, int w, int h)
{
origin = p; width = w; height = h;
}
}
17
Alkalmazsfejleszts
Interfszek
az interfsz egy protokollt definil mely brhol
megvalsthat.
segtsgvel tulajdonkppen megvalsthat a
tbbszrs rklds
az interfsz metdusokat definil, de nem
implementlja ket, definilhat vltozkat is
klnbsg az absztrakt osztly s az interfsz kztt:
egy interfsz nem implementlhat metdusokat
egy osztly tbb interfszt megvalsthat
az interfsz nem tagja az osztlyhierarchinak
18
Alkalmazsfejleszts
Csomagkezels
az osztlykezels egyszerbb ttele
feloldja az elnevezsi problmkat
az sszefgg osztlyokat csomagokba lehet foglalni
minden forrs fjl elejre oda kell tenni a package
szt
a csomagon kvl csak a public tagok, osztlyok
hozzfrhetek
elnevezsre a cgek a cg URL cmnek inverze
hasznlhat: com.company.package
package graphics;
public class Circle extends Graphic implements Draggable
{...
}
19
Alkalmazsfejleszts
JAR fjlok
Segtsgkkel tbb fjlt egy archvumba
pakolhatunk
Tipikusan egy alkalmazs class fjlait
tartalmazza
Az gy csomagolt alkalmazs futtathat
kzvetlenl, appletknt, az osztlyai
hozzfrhetek
Elnyei:
biztonsgos
rvidletlts
tmrts
hordozhatsg
20