java
/programy
1
TYPY PROGRAMÓW JAVY
•
samodzielny program konsolowy
•
samodzielny program dostarczaj cy graficzny interfejs
u ytkownika - okno
•
aplet działaj cy w rodowisku Javy np. przegl darce www
•
serwlet działaj cy po stronie serwera
PROGRAM KONSOLOWY
public class Klasa
{
public static void main (String[] args)
{
System.out.println ("Pierwszy program w Javie");
}
}
OKNO
import java.awt.*;
public class Okno extends Frame
{
public Okno ()
{
super();
setSize(320, 200);
// ustawienie wielko ci okna
setVisible(true);
// wy wietlenie na ekranie
setTitle("Moja aplikacja"); // tytuł na pasku
}
public void paint(Graphics gDC)
{
gDC.drawString ("To jest aplikacja", 120, 100);
}
public static void main(String args[])
{
new Okno();
}
}
APLET
import java.applet.*;
import java.awt.*;
public class Hello extends Applet
{
public void paint (Graphics g)
{
g.drawString ("Pierwszy aplet w Javie", 100, 50);
}
}
java
/programy
2
Aplet
•
aplet to program w Javie działaj cy w przegl darce www
•
przegl darka traktuje program Javy jako obiekt zwi zany z
fragmentem ekranu - w Javie obiekt ten pochodzi z klasy
Applet i jest szczególnym przypadkiem komponentu
ekranowego Panel
import java.awt.Graphics;
import java.applet.Applet;
public class Klasa extends Applet {
........
}
•
aplet uruchamiany samodzielnie i pod WWW zawiera
zazwyczaj:
import java.awt.Frame;
import java.awt.Graphics;
import java.applet.Applet;
•
wywołanie apletu w ciele dokumentu HTML
<applet code=Nazwa_klasy.class [codebase=katalog]
alt=”tekst zast pczy je li aplet nie mo e by wczytany”
width=pixels height=pixels
align=left/right/top/texttop/middle/absmiddle/baseline/bottom/
absbottom
vspace=pixels hspace=pixels
name=”nazwa konieczna dla apletów na tej samej stronie
odnajduj cych si nawzajem”
>
<param name=.... value=....>
<param name=.... value=....>
</applet>
java
/programy
3
KOMPILACJA
•
w C/C++ efektem kompilacji jest
kod maszynowy
zoptymalizowany na konkretny procesor szybko
działania
•
Java to j zyk interpretowany (taki jest potrzebny dla
www) ródła tłumaczone s przy ka dym wykonaniu, co
jest zbyt wolne
rozwi zanie: kompilacja do
kodu po redniego (byte code)
dla abstrakcyjnej maszyny (
JVM – Java Virtual Machine,
Maszyna Wirtualna Javy)
•
JVM jest po rednikiem mi dzy konkretn maszyn a
programem w Javie interpreter
•
JVM
dynamicznie ł czy klasy, do których s odwołania
KOMPILACJA
plik.
java
klasa1.
class
osobne pliki dla ka dej
klasa2.
class
klasy zdefiniowanej
...........
class
w plik.java
•
wygodnie jest definiowa po jednej klasie w jednym
pliku przy zmianie jakiej klasy przekompilujemy
tylko j
Plik *
.
class
ma zdefiniowan struktur :
•
zawiera elementy o zmiennej długo ci
•
pola struktury zawieraj informacj o klasie i o jej
klasie nadrz dnej
•
pola struktury zawieraj informacj o typach pól,
metodach, atrybutach klasy (private, final itp.)
•
pierwsze 2 bajty pliku s znacznikiem klasy
(szesnastkowo:
cafebabe
)
•
metody składaj si z kodów operacji wygenerowanych
przez kompilator - te kody odpowiadaj instrukcjom
rozumianym przez JVM
java
/programy
4
URUCHAMIANIE
uruchomienie pliku
→
→
→
→
wywołanie funkcji main()
uruchomienie interpretera Javy
→
→
→
→
przekazanie mu nazwy klasy
→
→
→
→
interpreter wywołuje metod main() tej klasy
•
interpreter Javy wywołuje metod
main()
klasy, która
jest uruchomiona
java
Nazwa_klasy
•
JVM ładuje poszczególne klasy w miar pojawiania si
odwoła do nich
•
program działa do ko ca metody
main()
lub ko ca w tku
(np. je li w main() otworzono okno i main zako czy
działanie to program działa nadal, poniewa z oknem
jest zwi zany w tek czekaj cy na jak
akcie np.
zamkni cie okna przez u ytkownika)
•
pami
jest przydzielana w trakcie wykonywania
programu; klasy ładowane s dynamiczne
ORGANIZACJA PROJEKTU
•
interfejs i definicje s w jednym miejscu pliki
ródłowe zawieraj tylko DEFINICJE klas (a nie
DEKLARACJE - funkcji nie deklarujemy z wyprzedzeniem)
PAKIETY
•
przypominaj biblioteki w C i C++
•
Java dostarczana jest z kompletem pakietów
•
mo na pogrupowa swoje klasy w pakiety
→
na pocz tku pliku ródłowego klasy wstawi
package
nazwa_pakietu
•
mo na przypisa dowolne klasy do dowolnych pakietów
→
plik
.....
class
trzeba umie ci w katalogu o
nazwie
nazwa_pakietu
•
u ycie przez inn klas klasy z pakietu
→
na pocz tku pliku przed definicj klasy wstawiamy
import
nazwa_pakietu.*;
(wszystkie klasy)
import
nazwa_pakietu.nazwa_klasy;
(wybran klas )