You are on page 1of 20

Alkalmazsfejleszts

Menedzselt kd: 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

Java nyelv II.


Platform fggetlen
nem tartalmaz architektra fgg elemeket (az int mrete
nyelvi szinten definilt)
Interpretlt, dinamikus
gyors fejlesztsi ciklus (nincs szksg make-re, ant)
class loader (package)
virtulis gp
byte kd (a hivatkozsok csak futs idben olddnak fel)
10-20-szor lassabb mint gpi kd megfelelje

Tbbszl
Elosztott (a class loader kpes hlzatrl betlteni az
osztlyt, RMI, )
4
Alkalmazsfejleszts

Hol, hogyan hasznlhatjuk?


Kliens oldal:
Java Applet
Java Kliens
Java Swing
Szerver oldal:
Java Swing
JDBC
Java Servlet
JSP
RMI
JMS
Java IDL
JTS
5
EJava Bean
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

Wrapper (csomagol) Osztlyok


Minden primitv adattpusnak van csomagol
osztlya
Segtsgkkel a primitv tpusokat is
objektumknt kezelhetjk
Boolean, Integer,

12
Alkalmazsfejleszts

Objektumok
A primitv tpusok kivtelvel minden
objektum
Egy objektum ltrehozsnak fzisai:
Deklarls Pldnyosts
Inicializls

Point origin_one = new Point(23, 94);


Rectangle rect_one = new Rectangle(origin_one, 100, 200);
Rectangle rect_two = new Rectangle(50, 100);

13
Alkalmazsfejleszts

Objektumok ltrehozsnak lpsei


1. Pdnyosts (lefoglalja az objektumhoz
tartoz terletet)
2. Alaprtelmezett inicializls
3. Explicit inicializls
4. Konstruktor meghvsa
5. A referencia hozzrendelse a vltozhoz

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

Hulladk gyjt (Garbage Collector)


A Java krnyezet egyik legfontosabb szolgltatsa
Az objektumok felszabadtsval a program futsa
utn nem kell foglalkoznunk.
A szemt gyjt megteszi ezt helyettnk
Nem j tlet 1960 ta: Lisp, Smalltalk, Modula-3,
A szemtgyjtre csak a memriakezelst rdemes
hagyni, a tbbit rdemes neknk megcsinlni

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

You might also like