1. Ogólnewiadomo± io jzyku
2. Podstawowe elementy jzyka
◮
twór ¡jzyka Java jest... rmaSunMi rosystems(grupa
robo za pod kierunkiemJamesaGoslinga)
◮
rok1991
◮
Java powstaªa wodpowiedzina potrzeby spoªe zno± i
programistówpra uj¡ y h narze z internetu
◮
Java jestjzykiem wyso e przeno±nym: aplika je wJavie s¡
niezale»ne od komputera isystemu opera yjnego
◮
Java zostaªazaprojektowana zprzezna zeniemdo tworzenia
du»y h aplika ji,wsz zególno± idziaªaj¡ y h w±rodowisku
WWW
◮
Na po z¡tku Java byªajzykiem dotworzeniatzw. apletów,zyliaplika ji uru hamiany h przezprzegl¡dark bez
korzystania zzasobówserwera, zktórego aplika ja zostaªa
zaªadowana
◮
z zasemstaªasi jednym z najpowsze hniej u»ywany hjzyków ogólnegoprzezna zenia
kilkapodstawowy hró»ni
◮
skªadnia Javy wzorowanajest naskªadni C/C++
◮
Java jestjzykiem nie owy»szego poziomu ni» C++:programistanie zarz¡dza pami i¡
◮
Java nie jestjzykiem wieloparadygmaty znym, oferujejedynieparadygmatobiektowy (wadai zaleta)
◮
Java nie jestjzykiem kompilowanym (w tym sensie o
C/C++,tzn. do kodu maszynowego)
Java jestjzykiemobiektowym,anie tylko daj¡ ymmo»liwo±¢
programowania obiektowego (jak C++):
◮
Java narzu aobiektowy sposób budowaniaprogramu (nieda
si programowa¢ wstylupro eduralnym, nie mafunk ji,
zmienny hglobalny h, wszystko jest'w obiekta h')
Bytypodstawowejzyka(rstorder entities)totetypy,któremo»na
przypisa¢zmiennym,przekazywa¢jakoargumenty,zwra a¢jakowarto±¢
wywoªaniametody.
Byty podstawowe jzyka Java dziel¡si nadwie kategorie:
◮
warto± i pierwotne/prymitywne, którenie s¡ obiektami (!):li zby,znakii warto± i logi zne
◮
obiektyIstnienie enklawywarto± inieobiektowy hpodyktowanejestwzgldami
efektywno± iowymi.
Klasy,hierar hiaklas
Wszystkie warto± i pozapierwotnymi s¡obiektami,bed¡ ymi
instan jamiodpowiedni h klas.
◮
W Javiehierar hiaklasjestdrzewem: wszystkieklasy poza
jedn¡ maj¡swoj¡nadklas - dokªadnie jedn¡ (niema
wielodziedzi zenia).
◮
Klasa najogólniejsza,nie maj¡ anadklasy,bd¡ a korzeniemaªejhierar hii, nazywasi Obje t.
Zarz¡dzaniepami i¡
◮
pami ia nie zarz¡dza programistatylko systemwykonaw zyJavy (JVM)
◮
programistanie mamo»liwo± ialokowania(za»¡dania
przydziaªu) oraz zwalniania pami i
◮
nie maopera ji nawska¹nika h (nies¡ dostpneadresy
obiektów)
Zarz¡dzaniepami i¡
◮
programistamo»e utworzy¢ obiekt,jeston alokowany na
ster ie
◮
nie mo»e go znisz zy¢
◮
obiekty,którenie s¡ju»u»ywane, do który h program niema
ju»dostpu s¡ usuwane zpami i automaty znie
◮
programistanie wie,kiedyobiekt zostanieznisz zony,nie wie
nawet zyw ogóle sito staniew trak iewykonywania
programu!
Od±mie a zpami iang. garbage olle tor
◮
zwalnianiepami i realizowane jestprzezme hanizmzwany'od±mie a zem'(ang. garbage olle tor)
◮
pro esod±mie aniajestwywoªywany przezsystem wykonaw zy
(JVM),program nie manad nimkontroli
Od±mie a zpami i-konsekwen je
◮
w Javiemamykonstruktory
◮
istnieje odpowiednikdestruktora (metodanalize),ale wobe
tego o powiedzianowy»ej, u»ywanie gorzadko masens.
Budowaprogramu
Programw Javiejestzbioremdeni jiklas. Jedna zklasjest
wyró»niona. Jestto klasaaplika ji. W klasietej musiby¢
zdeniowana metoda main
Najmniejszy program w Javiemusi mie¢posta¢:
publi lass nazwaklasy
{
publi stati void main(String[℄ args)
{
instruk je
}
}
Budowaprogramu-przykªad
publi lass HelloWorldApp // klasa aplika ji
{
publi stati void main(String[℄ args) // metoda main (ststy zna)
{
System.out.println("Hel lo World!"); // wydrukuj napis ...
}
}
◮
Program»ródªowy wJavie jestkompilowany do kodupo±redniego (byte ode).
◮
kompilatornazywasie java◮
Kodpo±rednijestwykonywany przezMaszyn Wirtulan¡Javy.◮
maszyna wirtualna nazywa sijavaMaszynaWirtualnaJavy,przeno±no±¢programów
◮
Maszyna WirtualnaJavy(Java VirtualMa hine -JVM) jest
interpreteremkodupo±redniego(byte ode).
◮
dla ka»dejar hitekturykomputeraisystemu opera yjnego
istnieje odrbna, odpowiednia wersja maszyny wirtualnej
◮
jednak ka»daz ty h maszynpowinna wykona¢ w takisam
sposób kodpo±redni
Przykªaduru homieniaprogramu-krok1.
◮
piszemy program,np.:publi lass HelloWorldApp
{
publi stati void main(String[℄ args)
{
System.out.println("Hello World!");
}
}
◮
izapisujemy w pliku HelloWorldApp.java.
Przykªaduru homieniaprogramu-krok2.
◮
kompilujemyprogram do kodupo±redniego:
% java HelloWorldApp.java
◮
kompilatortworzyosobne plikiwynikowe dla ka»dejz klas
zdeniowany h wpliku
◮
plikiwynikowe maj¡ nazwy: nazwaklasy. lass
◮
plikite zawieraj¡kod po±redni(byte ode)przezna zony do
interpreta jina maszyniewirtualnej
Przykªaduru homieniaprogramu-krok3.
◮
uru hamiamy programpodaj¡ interpreterowi (JVM)nazwklasy aplika ji:
% java HelloWorldApp
dygresja
◮
S hemat: kompila jado kodupo±redniego− >
wykonanienamaszyniewirtualnej jeststosowany dlawielu jzyków, np. Lisp,
Prolog,Perl6(projekt)
◮
Naj iekawszymprojektemmaszyny wirtualnejjest Parrot:
uniwersalna maszyna wirtualna,pomy±lana jako system
wykonaw zy dlaszerokiejgamy jzykówwysokiego poziomu
(Perl, Ruby, Python,S heme, Haskell,Smalltalk,...)
◮
zainteresowany h tematemmaszyn wirtualny hza h am do
odwiedzeniastronyprojektu Parrot www.parrot ode.org
rodowiskaJREiJDK
◮
aby mó wykonywa¢ programy wjavie, trzebamie¢zainstalowane ±rodowisko JRE(JavaRuntime Environment);
JRE zawiera systemwykonaw zy Javy(JVM -program java)
oraz pakiety klas
◮
aby mó tworzy¢ programy w Javie,trzeba mie¢zainstalowane
±rodowisko JDK (JavaDevelopment Kit);JDK zawiera JRE
oraz kompilatorJavy(program java )
◮
±rodowiskate s¡dostpne bezpªatnie,i h najbardziejrozpowsze hniona wersja jestdystrybuowana przezrm Sun
◮
strona java.sun. om
◮
istniej¡te» alternatywneimplementa jeJDK i JRE(np. GNU)Sz zegóªy
Podstawy
Typywarto± ipierwotny h
typ warto±¢
boolean true,false
har znak16-bitowyUni ode
byte l. aªkowita8-bitowabezznaku
short l. aªkowita16-bitowazeznakiem
int l. aªkowita32-bitowazeznakiem
long l. aªkowita64-bitowazeznakiem
oat l. zmiennopozy yjna32-bitowazeznakiem
double l. zmiennopozy yjna64-bitowazeznakiem
Warto± ipierwotnes¡alokowanenastosie. UWAGA:WjzykuC/C++
rozmiaryposz zególny htypówbyªyzale»neodkompilatora,w Javies¡
okre±lonenapoziomiespe yka jijzyka.
Warto± ipierwotne
Z warto± ipierwotny hw Javiekorzysta sitaksamo jakw C
(prze howywanie wzmienny h, przekazywanie jako parametr
metody, zwra aniewarto± i,zakres, wido zno±¢).
Warto± iobiektowe-kryty zneinforma je
Sposób manipula jiwarto± iamiobiektowymi jestinnyni» wC++.
◮
do obiektów odwoªujemy sie poprzez referen j
◮
warto± i¡zmiennej/atrybutu nigdynie jest obiekt,le zreferen ja do obiektu
◮
deklaruj¡ zmienn¡ 'typu obiektowego' nie tworzymy obiektu,
tworzymy jedyniemiejs ena prze howywanie referen jido
obiektu
◮
obiekt musimyutworzy¢ (operatornew)Referen je-przykªad
publi 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
}
}
Tabli e
◮
Tabli e s¡obiektami(podklasaklasy Obje t),u»ywa si i h
tylko korzystaj¡ zespe jalnejskªadni (nawiasy kwadratowe)
◮
elementami tabli y mog¡by¢warto± itypów pierwotny h lub
referen jedo obiektów
◮
w deklara ji tabli ynie podajesijej wymiaru(ów)
String[℄ napisy;
int[℄[℄ tab;
◮
wymiarypodajesiprzy tworzeniu tabli ynapisy = new String[50℄; // u»y ie operatora new
int[℄[℄ tab = {{1,2}, {3,4}}; // ini jaliza ja