Java.
1.
Ogólne
wiadomo± i
o
jzyku
2.
P
o
dsta
w
o
w
e
element
y
jzyk
a
Java
◮
t
w
ó
r ¡
jzyk
a
Java
jest
...
rma
Sun
Mi rosystems
(grupa
rob
o
za
p
o
d
kierunkiem
Jamesa
Goslinga)
◮
rok
1991
Java
◮
Java
p
o
wstaª
a
w
o
dp
o
wiedzi
na
p
otrzeb
y
sp
oª
e zno± i
p
rogramistó
w
p
ra uj¡ y h
na
rze z
internetu
◮
Java
jest
jzykiem
wyso
e
p
rzeno±nym:
aplik
a je
w
Javie
s¡
niezale»ne
o
d
k
omputera
i
systemu
op
era yjnego
◮
Java
zostaª
a
zap
rojekto
w
ana
z
p
rzezna zeniem
do
t
w
o
rzenia
du»y h
aplik
a ji,
w
sz zególno± i
dziaª
aj¡ y h
w
±ro
do
wisku
WWW
◮
Na
p
o
z¡tku
Java
b
yª
a
jzykiem
do
t
w
o
rzenia
tzw.
apletó
w,
zyli
aplik
a ji
uru hamiany h
p
rzez
p
rzegl¡da
rk
b
ez
k
o
rzystania
z
zasob
ó
w
serw
era,
z
któ
rego
aplik
a ja
zostaª
a
zaª
ado
w
ana
◮
z
zasem
staª
a
si
jednym
z
najp
o
wsze hniej
u»yw
any h
jzyk
ó
w
ogólnego
p
rzezna zenia
Java
a
C++
kilk
a
p
o
dsta
w
o
wy h
ró»ni
◮
skª
adnia
Javy
wzo
ro
w
ana
jest
na
skª
adni
C/C++
◮
Java
jest
jzykiem
nie o
wy»szego
p
oziomu
ni»
C++:
p
rogramista
nie
za
rz¡dza
pami i¡
◮
Java
nie
jest
jzykiem
wielopa
radygmat
y znym,
oferuje
jedynie
pa
radygmat
obiekto
wy
(w
ada
i
zaleta)
◮
Java
nie
jest
jzykiem
k
ompilo
w
anym
(w
t
ym
sensie
o
C/C++,
tzn.
do
k
o
du
maszyno
w
ego)
◮
nie
ma
mo»liw
o± i
p
rze i¡»ania
op
erato
ró
w
(denio
w
ania
dziaª
ania
op
erato
ró
w
dla
wª
asny h
t
yp
ó
w)
Programo
w
anie
obiekto
w
e
w
Javie
Java
jest
jzykiem
obiekto
wym,
a
nie
t
ylk
o
daj¡ ym
mo»liw
o±¢
p
rogramo
w
ania
obiekto
w
ego
(jak
C++):
◮
Java
na
rzu a
obiekto
wy
sp
osób
budo
w
ania
p
rogramu
(nie
da
si
p
rogramo
w
a¢
w
st
ylu
p
ro
eduralnym,
nie
ma
funk
ji,
zmienny h
globalny h,
wszystk
o
jest
'w
obiekta h')
Java:
b
yt
y
p
o
dsta
w
o
w
e
Byt
y
p
o
dsta
w
o
w
e
jzyk
a
(rst
o
rder
entities)
to
te
t
yp
y
,
któ
re
mo»na
p
rzypisa¢
zmiennym,
p
rzek
azyw
a¢
jak
o
a
rgument
y
,
zwra a¢
jak
o
w
a
rto±¢
wyw
oª
ania
meto
dy
.
Byt
y
p
o
dsta
w
o
w
e
jzyk
a
Java
dziel¡
si
na
dwie
k
atego
rie:
◮
w
a
rto± i
pierw
otne/p
rymit
ywne,
któ
re
nie
s¡
obiektami
(!):
li zb
y
,
znaki
i
w
a
rto± i
logi zne
◮
obiekt
y
Istnienie
enkla
wy
w
a
rto± i
nieobiekto
wy h
p
o
dykto
w
ane
jest
wzgldami
efekt
ywno± io
wymi.
W
a
rto± i
pierw
otne
s¡
alok
o
w
ane
na
stosie,
w
a
rto± i
obiekto
w
e
na
ster ie.
Java
Klasy
,
hiera
r hia
klas
W
szystkie
w
a
rto± i
p
oza
pierw
otnymi
s¡
obiektami,
b
ed¡ ymi
instan jami
o
dp
o
wiedni h
klas.
◮
W
Javie
hiera
r hia
klas
jest
drzew
em:
wszystkie
klasy
p
oza
jedn¡
maj¡
sw
oj¡
nadklas
-
dokª
adnie
jedn¡
(nie
ma
wielo
dziedzi zenia).
◮
Klasa
najogólniejsza,
nie
maj¡ a
nadklasy
,
b
d¡ a
k
o
rzeniem
aª
ej
hiera
r hii,
nazyw
a
si
Obje t.
Java
Za
rz¡dzanie
pami i¡
◮
pami ia
nie
za
rz¡dza
p
rogramista
t
ylk
o
system
wyk
ona
w
zy
Javy
(JVM)
◮
p
rogramista
nie
ma
mo»liw
o± i
alok
o
w
ania
(za»¡dania
p
rzydziaªu)
o
raz
zw
alniania
pami i
◮
nie
ma
op
era ji
na
wsk
a¹nik
a h
(nie
s¡
dostpne
adresy
obiektó
w)
Java
Za
rz¡dzanie
pami i¡
◮
p
rogramista
mo»e
ut
w
o
rzy¢
obiekt,
jest
on
alok
o
w
any
na
ster ie
◮
nie
mo»e
go
znisz zy¢
◮
obiekt
y
,
któ
re
nie
s¡
ju»
u»yw
ane,
do
któ
ry h
p
rogram
nie
ma
ju»
dostpu
s¡
usu
w
ane
z
pami i
automat
y znie
◮
p
rogramista
nie
wie,
kiedy
obiekt
zostanie
znisz zony
,
nie
wie
na
w
et
zy
w
ogóle
si
to
stanie
w
trak
ie
wyk
onyw
ania
p
rogramu!
Java
Od±mie a z
pami i
ang.
ga
rbage
olle to
r
◮
zw
alnianie
pami i
realizo
w
ane
jest
p
rzez
me hanizm
zw
any
'o
d±mie a zem'
(ang.
ga
rbage
olle to
r)
◮
p
ro
es
o
d±mie ania
jest
wyw
oªyw
any
p
rzez
system
wyk
ona
w
zy
(JVM),
p
rogram
nie
ma
nad
nim
k
ontroli
Java
Od±mie a z
pami i
-
k
onsekw
en je
◮
w
Javie
mamy
k
onstrukto
ry
◮
istnieje
o
dp
o
wiednik
destrukto
ra
(meto
da
nalize),
ale
w
ob
e
tego
o
p
o
wiedziano
wy»ej,
u»yw
anie
go
rzadk
o
ma
sens.
Java
Budo
w
a
p
rogramu
Program
w
Javie
jest
zbio
rem
deni ji
klas.
Jedna
z
klas
jest
wyró»niona.
Jest
to
klasa
aplik
a ji.
W
klasie
tej
musi
b
y¢
zdenio
w
ana
meto
da
main
Najmniejszy
p
rogram
w
Javie
musi
mie¢
p
osta¢:
lass
nazw
aklasy
{
publi
stati
void
main(String[℄
args)
{
instruk
je
}
}
Java
Budo
w
a
p
rogramu
-
p
rzykª
ad
lass
HelloWorldApp
//
klasa
aplika ji
{
publi
stati
void
main(String[℄
args)
//
metoda
main
(ststy zna)
{
System.out.println("Hel lo
World!");
//
wydrukuj
napis
...
}
}
Java:
uru hamianie
p
rogramu
◮
Program
»ró
dª
o
wy
w
Javie
jest
k
ompilo
w
any
do
k
o
du
p
o±redniego
(b
yte
o
de).
◮
k
ompilato
r
nazyw
a
sie
java
◮
K
o
d
p
o±redni
jest
wyk
onyw
any
p
rzez
Maszyn
Wirtulan¡
Javy
.
◮
maszyna
wirtualna
nazyw
a
si
java
Java:
uru hamianie
p
rogramu
Maszyna
Wirtualna
Javy
,
p
rzeno±no±¢
p
rogramó
w
◮
Maszyna
Wirtualna
Javy
(Java
Virtual
Ma hine
-
JVM)
jest
interp
reterem
k
o
du
p
o±redniego
(b
yte
o
de).
◮
dla
k
a»dej
a
r hitektury
k
omputera
i
systemu
op
era yjnego
istnieje
o
drbna,
o
dp
o
wiednia
w
ersja
maszyny
wirtualnej
◮
jednak
k
a»da
z
t
y h
maszyn
p
o
winna
wyk
ona¢
w
taki
sam
sp
osób
k
o
d
p
o±redni
Java
Przykª
ad
uru homienia
p
rogramu
-
krok
1.
◮
piszemy
p
rogram,
np.:
lass
HelloWorldApp
{
publi
stati
void
main(String[℄
args)
{
System.out.println("Hel lo
World!");
}
}
◮
i
zapisujemy
w
pliku
HelloWorldApp.java.
◮
Nazw
a
pliku
nie
ma
zna zenia.
Nie
musi
b
y¢
zgo
dna
z
nazw
¡
klasy
(w
pliku
mo»e
b
y¢
wiele
deni ji
klas).
Java
Przykª
ad
uru homienia
p
rogramu
-
krok
2.
◮
k
ompilujemy
p
rogram
do
k
o
du
p
o±redniego:
%
java
HelloWorldApp.java
◮
k
ompilato
r
t
w
o
rzy
osobne
pliki
wynik
o
w
e
dla
k
a»dej
z
klas
zdenio
w
any h
w
pliku
◮
pliki
wynik
o
w
e
maj¡
nazwy:
nazw
aklasy. lass
◮
pliki
te
za
wieraj¡
k
o
d
p
o±redni
(b
yte
o
de)
p
rzezna zony
do
interp
reta ji
na
maszynie
wirtualnej
Java
Przykª
ad
uru homienia
p
rogramu
-
krok
3.
◮
uru hamiamy
p
rogram
p
o
daj¡
interp
retero
wi
(JVM)
nazw
klasy
aplik
a ji:
%
java
HelloWorldApp
Maszyny
wirtualne
dygresja
◮
S hemat:
k
ompila ja
do
k
o
du
p
o±redniego
−
>
wyk
onanie
na
maszynie
wirtualnej
jest
stoso
w
any
dla
wielu
jzyk
ó
w,
np.
Lisp,
Prolog,
P
erl6
(p
rojekt)
◮
Naj iek
a
wszym
p
rojektem
maszyny
wirtualnej
jest
P
a
rrot:
uniw
ersalna
maszyna
wirtualna,
p
omy±lana
jak
o
system
wyk
ona
w
zy
dla
szerokiej
gamy
jzyk
ó
w
wysokiego
p
oziomu
(P
erl,
Rub
y
,
Python,
S heme,
Hask
ell,
Smalltalk,
...)
◮
zaintereso
w
any h
tematem
maszyn
wirtualny h
za h am
do
o
dwiedzenia
strony
p
rojektu
P
a
rrot
www.parrot ode.org
Java
ro
do
wisk
a
JRE
i
JDK
◮
ab
y
mó
wyk
onyw
a¢
p
rogramy
w
javie,
trzeba
mie¢
zainstalo
w
ane
±ro
do
wisk
o
JRE
(Java
Runtime
Environment);
JRE
za
wiera
system
wyk
ona
w
zy
Javy
(JVM
-
p
rogram
java)
o
raz
pakiet
y
klas
◮
ab
y
mó
t
w
o
rzy¢
p
rogramy
w
Javie,
trzeba
mie¢
zainstalo
w
ane
±ro
do
wisk
o
JDK
(Java
Development
Kit);
JDK
za
wiera
JRE
o
raz
k
ompilato
r
Javy
(p
rogram
java )
◮
±ro
do
wisk
a
te
s¡
dostpne
b
ezpª
atnie,
i h
najba
rdziej
rozp
o
wsze hniona
w
ersja
jest
dystrybuo
w
ana
p
rzez
rm
Sun
◮
strona
java.sun. om
◮
istniej¡
te»
alternat
ywne
implementa je
JDK
i
JRE
(np.
GNU)
Java
Sz zegóªy
P
o
dsta
wy
Java
T
yp
y
w
a
rto± i
pierw
otny h
t
yp
w
a
rto±¢
b
o
olean
true,
false
ha
r
znak
16-bito
wy
Uni o
de
b
yte
l.
aªk
o
wita
8-bito
w
a
b
ez
znaku
sho
rt
l.
aªk
o
wita
16-bito
w
a
ze
znakiem
int
l.
aªk
o
wita
32-bito
w
a
ze
znakiem
long
l.
aªk
o
wita
64-bito
w
a
ze
znakiem
oat
l.
zmiennop
ozy yjna
32-bito
w
a
ze
znakiem
double
l.
zmiennop
ozy yjna
64-bito
w
a
ze
znakiem
W
a
rto± i
pierw
otne
s¡
alok
o
w
ane
na
stosie.
UW
A
GA:
W
jzyku
C/C++
rozmia
ry
p
osz zególny h
t
yp
ó
w
b
yªy
zale»ne
o
d
k
ompilato
ra,
w
Javie
s¡
okre±lone
na
p
oziomie
sp
e yk
a ji
jzyk
a.
Java
W
a
rto± i
pierw
otne
Z
w
a
rto± i
pierw
otny h
w
Javie
k
o
rzysta
si
tak
samo
jak
w
C
(p
rze ho
wyw
anie
w
zmienny h,
p
rzek
azyw
anie
jak
o
pa
rametr
meto
dy
,
zwra anie
w
a
rto± i,
zakres,
wido
zno±¢).
Java
W
a
rto± i
obiekto
w
e
-
kryt
y zne
info
rma je
Sp
osób
manipula ji
w
a
rto± iami
obiekto
wymi
jest
inny
ni»
w
C++.
◮
do
obiektó
w
o
dw
oªujemy
sie
p
op
rzez
referen j
◮
w
a
rto± i¡
zmiennej/atrybutu
nigdy
nie
jest
obiekt,
le z
referen ja
do
obiektu
◮
dekla
ruj¡
zmienn¡
't
ypu
obiekto
w
ego'
nie
t
w
o
rzymy
obiektu,
t
w
o
rzymy
jedynie
miejs e
na
p
rze ho
wyw
anie
referen ji
do
obiektu
◮
obiekt
musimy
ut
w
o
rzy¢
(op
erato
r
new)
Java
Referen je
-
p
rzykª
ad
lass
Przyklad
{
publi
stati
void
main(String[℄
args)
String
s;
//
deklarujemy
s
jako
referen j
//
do
obiektu
klasy
String
System.out.println(s);
//
bª¡d!
s
=
new
String("Ala");
//
przypusujemy
s-owi
obiekt
System.out.println(s);
//
ok
}
}
Java
T
abli e
◮
T
abli e
s¡
obiektami
(p
o
dklasa
klasy
Obje t),
u»yw
a
si
i h
t
ylk
o
k
o
rzystaj¡
ze
sp
e jalnej
skª
adni
(na
wiasy
kw
adrato
w
e)
◮
elementami
tabli y
mog¡
b
y¢
w
a
rto± i
t
yp
ó
w
pierw
otny h
lub
referen je
do
obiektó
w
◮
w
dekla
ra ji
tabli y
nie
p
o
daje
si
jej
wymia
ru(ó
w)
String[℄
napisy;
int[℄[℄
tab;
◮
wymia
ry
p
o
daje
si
p
rzy
t
w
o
rzeniu
tabli y
napisy
=
new
String[50℄;
//
u»y ie
operatora
new
int[℄[℄
tab
=
1,2,
3,4;
//
ini jaliza ja
◮
Java
k
ontroluje,
zy
w
o
dw
oª
aniu
do
tabli y
indeks
nie
wy ho
dzi
p
oza
zakres
Java