background image

15/02/02

Programowanie Java 1  Copyri
ght Marek A. Chmielowski

1

Programowanie w Java 1

Marek Chmielowski

MChmielo@MChDelaware.com

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

background image

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 

background image

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)

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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


Document Outline