15/02/02
Programowanie Java 1 Copyri
ght Marek A. Chmielowski
1
Programowanie w Java 1
Marek Chmielowski
Koncepcje tworzenia programów
Virtualna Maszyna
Java a internet
Bezpieczeństwo w sieci
Java w przeglądarkach
Program wykładów
Dla Specjalizacji Systemy Informacyjne w
Gospodarce
15/02/02
Programowanie Java 1 Copyri
ght Marek A. Chmielowski
2
Koncepcje tworzenia
programów
Programowanie interakcyjne
Polecenia DOSu z linii komend
Klasyczny Basic z linii komend
Interpretacja instrukcji
Polecenia DOSu z pliku n.p. Autoexec.bat
Klasyczny Basic z programem zapisanym w pliku
Kompilacja
Kompilator C
Delphi
Dołączenie bibliotek
Linker MS
Delphi (automatycznie)
Przenoszalność
Kodu zródłowego (n.p. Delphi 6 i Kylix)
Plików wykonywalnych
15/02/02
Programowanie Java 1 Copyri
ght Marek A. Chmielowski
3
Programowanie interakcyjne
Wykonywane przez interpretator (interpreter) poleceń
N.p. Command.com w DOS-ie
Kod źródłowy wpisywany na bieżąco (raczej krótki i trywialny)
Polecenia wpisuje się na tej samej maszynie która je „natychmiast” wykonuje
(technicznie polecenia mogą być wpisywane w oknie otwartym na innym komputerze)
Różne interpretatory mają różną składnie
W DOS-ie Command.com -> dir
W Linux-ie Bash -> ls
Takie same interpretator mogą występować na w różnych systemach i działać na
różnych procesorach
Cshell we wszystkich unix-ach
interpretatory działają tak samo, są to jednak inne programy ale mające taką samą
funkcjonalność (analogią mogą być zegarki elektroniczne i mechaniczne pokazujące czas)
Przenaszalność
„Przenaszalna” jest wiedza użytkownika pomiędzy tak samo nazwanymi interpretatorami
interakcyjnymi
Różne interpretatory (nawet na tym samym systemie) mają różną składnie (ale bardzo
podobną funkcjonalność ogólną - analogią mogą być zegarki z wskaźnikiem cyfrowym i
wskazówkowym)
15/02/02
Programowanie Java 1 Copyri
ght Marek A. Chmielowski
4
Interpretatory
Wykonywane przez interpretator poleceń z pliku
N.p. Command.com w DOS-ie przetwarzający skrypt (bat)
Klasyczny Basic z programem zapisanym w pliku (bas)
Zwykle istnieje możliwość przełączania się z trybu interakcyjnego na przetwarzanie skryptu
Relatywnie wolne działanie związane z ciągłym przełączaniem się pomiędzy pobieraniem
instrukcji a jej wykonywaniem
Pobranie jednej linii instrukcji
Przetworzenie na instrukcje maszynowe (coś w rodzaju mikro-kompilacji)
Dołączenie wywołań bibliotek systemowych (mikro-likowanie)
Wykonanie powstałego kodu maszynowego
Powtórzenie cyklu dla każdej linii
Plik z poleceniami znajduje się na tej samej maszynie która je „kolejno” wykonuje
Interpretatory różnych języków mają różną składnie
Lisp
Basic
Interpretatory takich samych języków mogą występować w różnych systemach i
działać na różnych procesorach
Basic – prawie wszędzie
Są to jednak inne programy i mają zwykle trochę różne możliwości
Przenaszalność
Prosty kod źródłowy może być przenaszalny (oczywiście tylko w ramach tego samego języka)
Programy graficzne lub sieciowe wymagają zwykle wykonania pewnych zmian przy przenoszeniu na inny system
15/02/02
Programowanie Java 1 Copyri
ght Marek A. Chmielowski
5
Kompilatory
Przetwarzanie poleceń z pliku na język procesora i zapisywanie kodu maszynowego w
innym pliku
N.p. Kompilator C, Delphi
Proces przetwarzania instrukcji jest odseparowany od procesu wykonywania
Relatywnie szybkie działanie związane z jednorazowym przetworzeniem wszystkich instrukcji w
pliku
Wyprodukowany kod maszynowy wymaga dołączenie odwołań do bibliotek systemowych lub
innych uprzednio skompilowanych modułów (proces zwany likowaniem)
Niektóre kompilatory są zintegrowane z linkerem (n.p. Delphi) i wykonują operacje kompilacji i
linkowania automatycznie
Zwykle kompilator przetwarza jeden język programowania ale są kompilatory
wielojęzykowe
Delphi przetwarza składnie Pascala i asemblera
Gcc na Linux-ie przetwarza C, C++, fortran, Ada, ...
Kompilatory tego samego języka programowania mogą występować na w różnych
systemach i działać na różnych procesorach
C – prawie wszędzie
Są to jednak inne programy i mają zwykle trochę różne możliwości
Przenaszalność
Prosty kod źródłowy może być przenaszalny (oczywiście tylko w ramach tego samego języka)
Programy graficzne lub sieciowe wymagają zwykle wykonania pewnych zmian przy przenoszeniu na inny system
15/02/02
Programowanie Java 1 Copyri
ght Marek A. Chmielowski
6
Dołączanie bibliotek
Większość kompilatorów produkuje kod maszynowy który wymaga
dołączenie odwołań do bibliotek systemowych lub innych uprzednio
skompilowanych modułów (proces zwany likowaniem) w celu
wyprodukowania pliku wykonywalnego (n.p. exe)
Linkować można moduły napisane w różnych językach i skompilowane
różnymi kompilatorami n.p. Do programu w Delphi można dołączyć
biblioteki pisane w C (i oczywiście skompilowane kompilatorem C)
Przenaszalność
Linkowane moduły muszą być zgodne ze specyfikacją linkera – jest to jedna
z przyczyn dla której nie można linkować modłów skompilowanych dla
różnych systemów mimo że pracujących na tym samym procesorze
Inną, i zasadniczą, przyczyną są moduły systemowe które muszą być
dołączone lub wołane przez program
Program odwołuje się podczas wykonywania do bibliotek systemowych dołączanych
automatycznie przez system (dynamicznie ładowanych bibliotek DLL), są one oczywiście
różne w różnych systemach
15/02/02
Programowanie Java 1 Copyri
ght Marek A. Chmielowski
7
Koncepcja
nieprzenoszalnego
oprogramowania
Klasyczne kompilatory
Kompilacja i linkowanie wykonywane jest na maszynie
programisty – użytkownik dostaje plik z kodem maszynowym
Brak uniwersalności kompilatora
Produkuje kod maszynowy dla jednego typu procesora
Program wynikowy wymaga dołączenia bibliotek z jednego
(określonego) systemu
Plik wykonywalny jest przenaszalny tylko pomiędzy maszynami
z takim samym procesorem i systemem operacyjnym
Kod źródłowy zwykle wymaga modyfikacji przy zmianie systemu,
a rekompilacji przy zmianie procesora
Rezultatem jest duży nakład pracy dla wyprodukowania
osobnej wersji programu dla każdej kombinacji systemu i
procesora
15/02/02
Programowanie Java 1 Copyri
ght Marek A. Chmielowski
8
Koncepcja Virtualnej
Maszyny
Dla każdej kombinacji procesora i systemu
operacyjnego producent wykonuje specjalny program
i biblioteki implementujące idealny komputer według
jednolitego standardu (Virtualna Maszyna)
Emulator Virtualnej Maszyny (VM) jest instalowany na
maszynach użytkowników
Kompilator programisty wytwarza plik z kodem dla
VM (bytecody)
Jednolity standard zapewnia, że taki program może
być wykonany przez każdą Virtualną Maszynę
niezależnie na jakim systemie czy procesorze została
zaimplementowana
15/02/02
Programowanie Java 1 Copyri
ght Marek A. Chmielowski
9
Znaczenie koncepcji VM
dla internetu
W internecie działają komputery różnych
producentów, z różnymi procesorami i systemami
operacyjnymi
Jednolity standard danych HTML umożliwia wszystkim
różnorodnym komputerom pobieranie i prezentowanie tych
samych danych pobieranych z sieci
Jednolity standard VM umożliwia pobieranie i wykonywanie
tych samych programów przez różnorodne komputery
Ta kompatybilność z internetem jest najważniejszą
przyczyną sukcesu koncepcji VM i przyczyną dla
której warto nauczyć się języka Java
15/02/02
Programowanie Java 1 Copyri
ght Marek A. Chmielowski
10
Java
Java powstała w 1990 r. (pod nazwa
oak) w Sun Microsystems jako język do
programowania kontrolerów urządzeń
elektronicznych (n.p. pralki)
Jako pozostałość kontrolerów istnieją
procesory Javy które implementują w
„hardwarze” standard VM
W 1995 zdano sobie sprawę ze
znaczenia koncepcji VM dla internetu i
zapoczątkowano gwałtowny rozwój Javy
15/02/02
Programowanie Java 1 Copyri
ght Marek A. Chmielowski
11
Problem bezpieczeństwa w
sieci
Ładujemy (także automatycznie) programy z sieci
Nie wiemy kto te programy napisał i co moją one robić
Olbrzymie zagrożenie dla naszego komputera i naszych
danych
Java VM pozwala ograniczyć możliwości działania
programów ładowanych z sieci (głównie apletów)
n.p. Zabraniająć operacji I/O
Inne rozwiązania
„konkurencją” dla Javy miały być komponenty ActiveX
Microsoftu i rozszerzenia standardu HTML w IE
Nie zapewniały one bezpieczeństwa i działały tylko w
produktach Microsoftu – obecnie prawie znikneły z sieci
15/02/02
Programowanie Java 1 Copyri
ght Marek A. Chmielowski
12
Java VM w przeglądarkach
Przeglądarki WWW implementują VM
Umożliwia to automatyczne pobieranie przez
internet specjalnych graficznych programów
java (apletów) i bezpieczne ich wykonywanie
Przeglądarka może sama działać jako
interpreter (wykonywać bez uprzedniej
kompilacji) specjalnego podzbioru instrukcji i
procedur języka Java (Java Script) zapisanych
w kodzie źródłowym w dokumentach HTML
15/02/02
Programowanie Java 1 Copyri
ght Marek A. Chmielowski
13
Program wykładów
Ilustracja koncepcji VM przypomocy JDK firmy SUN, Java VM i
kompilacji z linii komend
Prosty program tekstowy napisany w notepadzie
Kompilacja z linii poleceń
Wykonanie z linii poleceń na pod różnymi systemami
Podstawy składni języka Java
Analogie i różnice z Pascalem
Powtórzenie podstaw programowania obiektowego
Powtórzenie koncepcji przeciążenia metod i konstruktorów
Obsługa zintegrowanego kompilatora (IDE) JBuilder Borlanda
Pisanie kodu
Używanie elementów graficznych
Kompilacja i debugowanie
Pisanie prostych
programów
apletów