Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Dr Anna Kwiatkowska http://pluton.pol.lublin.pl/~aniak JAVA dr Anna Kwiatkowska http://pluton.pol.lublin.pl/~aniak.

Podobne prezentacje


Prezentacja na temat: "Dr Anna Kwiatkowska http://pluton.pol.lublin.pl/~aniak JAVA dr Anna Kwiatkowska http://pluton.pol.lublin.pl/~aniak."— Zapis prezentacji:

1 dr Anna Kwiatkowska http://pluton.pol.lublin.pl/~aniak
JAVA dr Anna Kwiatkowska

2 Literatura B. Eckel "Thinking in Java", Helion, 2001
Laurence Vanhelsuwe [i in.], Programujemy w Java, t.1-2, EXIT, Warszawa 1997 Kris Jamsa, Java, MIKOM, Warszawa 1998 B.Boone "Java dla programistów C i C++", WNT, 1998 Ken Arnold, James Gosling, Java, WNT, Warszawa 1999 Krzysztof Barteczko, Java. Wykłady i ćwiczenia, MIKOM, Warszawa 2000 Wiesław Porębski, Język Java, HELP, Michałowice 2000 Michael Morgan, Poznaj język Java 1.2, MIKOM, Warszawa 2001

3 Historia języka Java       Język Java został opracowany w laboratoriach firmy Sun Microsystems pod kierunkiem Jamesa Goslinga początek prac na projektem Green mającym na celu stworzenie oprogramowania dla sprzętu elektronicznego opracowanie w ramach projektu Green kompilatora języka Oak (Object Application Kernel)

4 Historia języka Java zakończenie prac nad przeglądarką WWW o nazwie WebRunner napisaną w języku Oak; nazwę WebRunner zmieniono później na HotJava zmiana nazwy Oak na Java i oficjalna prezentacja języka na pokazie Sun World 95

5 Cechy języka Java język kompilowany do postaci kodu pośredniego (bajtowego) kod pośredni wykonywany przez maszynę wirtualną przenośność, niezależność od architektury i systemu operacyjnego zorientowanie obiektowe

6 Cechy języka Java jednokrotne dziedziczenie silna kontrola typów
brak samodzielnych funkcji zewnętrznych tj. definiowanych poza klasami obsługa błędów poprzez wyjątki wymuszana przez kompilator

7 Cechy języka Java brak jawnych operacji na wskaźnikach pamięci
bezpieczne konwersje w fazie wykonywania programu zarządzanie pamięcią, odzyskiwanie nieużytków wielopoziomowe mechanizmy bezpieczeństwa

8 Cechy języka Java wsparcie dla programowania współbieżnego, wielowątkowość wsparcie dla programowania sieciowego i aplikacji rozproszonych wsparcie dla zastosowań multimedialnych

9 Cechy języka Java liczne biblioteki (pakiety) standardowe i zewnętrzne
możliwość ładowania klas i pakietów poprzez sieć modularyzacja poprzez mechanizm klas i pakietów

10 Infrastruktura języka Java
obiektowy język programowania; pliki źródłowe z programami w języku Java mają po kropce rozszerzenie java biblioteki standardowe języka Java dostarczane razem z implementacją maszyny wirtualnej

11 Infrastruktura języka Java
kompilator tłumaczący kod źródłowy programu w języku Java na kod pośredni nazywany kodem bajtowym (byte-code, B-code); pliki wynikowe mają po kropce rozszerzenie class i zawierają po jednej skompilowanej klasie lub interfejsie, pliki wynikowe grupowane są w logicznie powiązane całości tworzące program lub bibliotekę dzięki mechanizmowi pakietów;

12 Infrastruktura języka Java
maszyna wirtualna Javy (JVM, Java Virtual Machine), wirtualny (programowy) procesor, który wykonuje kod pośredni ładowany z plików class lub archiwów z lokalnego systemu plików lub poprzez sieć

13 Infrastruktura języka Java
maszyna wirtualna implementowana jest jako samodzielnie uruchamiany program lub wbudowywana np. w przeglądarkę WWW albo w system operacyjny (statycznie jako moduł lub biblioteka łączona dynamicznie)

14 Infrastruktura języka Java
Podstawowa wersja środowiska Javy dostarczana jest przez firmę Sun Microsystems w postaci pakietu narzędzi Java 2 Software Developers Kit Standard Edition (Java 2 SDK SE) Zestaw przygotowywany jest dla różnych systemów operacyjnych Dawniej nazywany był Java Developers Kit (JDK)

15 Infrastruktura języka Java
istnieje rozbudowana wersja pakietu - Enterprise Edition - zawierająca dodatkowe narzędzia oraz biblioteki środowisko zawierające tylko implementację maszyny wirtualnej dla określonego systemu operacyjnego i biblioteki standardowe Javy, bez narzędzi programistycznych, nazywane jest Java Runtime Environment i służy tylko do uruchamiania programów utworzonych w Javie

16 Maszyna wirtualna Javy
Kod źródłowy programów Java zapisywany jest w plikach tekstowych z rozszerzeniem java W wyniku kompilacji powstają pliki z kodem pośrednim (bajtowym) z rozszerzeniem class o nazwach odpowiadających klasom zdefiniowanym w pliku źródłowym W zestawie J2SDK kompilatorem jest program o nazwie javac (Java Compiler)

17 Maszyna wirtualna Javy
pliki wynikowe mogą być pogrupowane logicznie w pakiet, który fizycznie może być zlokalizowany w pewnej drzewiastej strukturze katalogowej pakiet może być zarchiwizowany do formatu zip lub jar np. za pomocą programu narzędziowego jar dostarczanego w zestawie J2SDK

18 Maszyna wirtualna Javy
Maszyna wirtualna może być samodzielnym programem uruchamianym z poziomu systemu operacyjnego może być wbudowana w system operacyjny statycznie lub jako moduł albo biblioteka łączona dynamicznie może być również częścią przeglądarki WWW

19 Maszyna wirtualna Javy

20 Programy w języku Java aplety - małe programy z interfejsem graficznym uruchamiane przez przeglądarkę WWW z wbudowaną obsługą Javy lub specjalną przeglądarkę apletów o nazwie appletviewer dostarczaną w pakiecie J2SDK; informacja o tym skąd i jaki plik class lub jar załadować wbudowywana jest w stronę WWW w postaci specjanego znacznika HTML, który dodatkowo może zawierać parametry uruchomieniowe apletu,

21 Programy w języku Java aplikacje - graficzne lub tekstowe programy uruchamiane przez maszynę wirtualną pracującą z poziomu systemu operacyjnego; implementacją maszyny wirtualnej w pakiecie J2SDK jest program java uruchamiany z linii komend wraz z parametrem określającym plik class lub jar w lokalnym systemie plików, od którego zaczyna się wykonywanie aplikacji

22 Programy w języku Java serwlet - program wykonywany po stronie serwera
midlet - program wykonywany w urządzeniu przenośnym

23 Aplikacja jedna z klas musi zawierać metodę public static void main(String[ ] args) jeśli jest to klasa publiczna, nazwa tej klasy musi być taka sama jak nazwa pliku, w której jest zdefiniowana po kompilacji pliku źródłowego .java do B-kodu (polecenie javac) powstają pliki .class (dla każdej klasy osobny plik)

24 Aplikacja poleceniem java klasa .class zostaje załadowana przez JVM (Java Virtual Machine) i sterowanie zostaje przekazane do metody main( ), gdzie zaczyna się „życie”: tworzenie obiektów, odwołania do innych klas aplikacji

25 Aplikacja class Aplikacja1 { public static void main(String[] args)
System.out.println("Hello World!"); }

26 Aplikacja Przy założeniu, że kod aplikacji zapisany został w pliku
Aplikacja1.java kompilujemy go kompilatorem javac wydając polecenie: javac Aplikacja1.java

27 Aplikacja W wyniku kompilacji otrzymamy plik z kodem pośrednim
Aplikacja1.class który możemy uruchomić wykorzystując interpreter java java Aplikacja1

28 Aplikacja jedna z klas dziedziczy klasę Applet, np.: class Aplet1 extends Applet{ ...} po kompilacji powstaje (między innymi) plik Aplet1.class

29 Aplet import java.applet.Applet; import java.awt.Graphics;
public class Aplet1 extends Applet { public void paint(Graphics g) { g.drawString("Hello world!", 200, 100); }

30 Aplet Jeżeli kod źródłowy zapisany został w pliku Aplet1.java
to kompilujemy go kompilatorem javac poleceniem: javac Aplet1.java

31 Aplet Po poprawnej kompilacji utworzony zostanie plik z kodem pośrednim Aplet1.class odwołanie do tego pliku umieszczamy w kodzie HTML przykładowej strony WWW za pomocą znacznika <applet>:

32 Aplet <html> <head> <title>Aplet1</title></head> <body> Wynik działania apletu: <applet code="Aplet1.class" width="400" height="200"> </applet> </body> </html>

33 appletviewer Aplet1.html
Jeżeli kod HTML strony WWW został zapisany w pliku Aplet1.html to działanie apletu możemy sprawdzić ładując stronę do przeglądarki lub korzystając z interpretera appletviewer poprzez podanie komendy: appletviewer Aplet1.html

34 AppletViewer

35 Widok w przeglądarce

36 Maszyna wirtualna Javy
Wyszukiwaniem i ładowaniem plików zawierających kod pośredni zajmuje się moduł ładujący (byte-code loader, class-loader) klasy, o ile to możliwe, ładowane są w pierwszej kolejności z lokalnego systemu plików a następnie z sieci

37 Maszyna wirtualna Javy
Przed rozpoczęciem wykonywania załadowanego kodu bajtowego jest on sprawdzany przez weryfikator w czterech etapach weryfikacja pliku klasy: weryfikacja sygnatury pliku i jego struktury weryfikacja tworzenia podklas, stałych, wskaźników do obszarów pamięci

38 Maszyna wirtualna Javy
weryfikacja kodu bajtowego: analiza metod, kontrola argumentów, inicjalizacji zmiennych, analiza stosu argumentów, badanie możliwości wystąpienia nadmiaru i niedomiaru podczas operacji arytmetycznych sprawdzenie podczas wykonania typu danych oraz dostępu: analiza poziomów dostępu do składowych prywatnych i chronionych

39 Maszyna wirtualna Javy
Maszyna wirtualna może zawierać zintegrowany kompilator JIT, który "w locie" (Just-In-Time) generuje kod wykonywalny specyficzny dla danego komputera na podstawie kodu pośredniego. Przy pierwszym uruchomieniu kod pośredni trafia wprost do interpetera, ale jest kompilowany i zapamiętywany w postaci kodu wynikowego. Kolejne odwołanie do tego kodu powoduje, że wykorzystywany jest kod wynikowy, co przyśpiesza działanie programu nawet 20-krotnie.

40 Maszyna wirtualna Javy
menedżer bezpieczeństwa jest klasą implementującą powłokę ochronną w układzie maszyna wirtualna/przeglądarka określa i nadzoruje politykę dostępu przeglądarki do zasobów lokalnych i sieciowych

41 Maszyna wirtualna Javy
menedżer bezpieczeństwa musi wyrazić zgodę na uzyskanie przez aplet dostępu do następujących zasobów: komunikacji sieciowej, danych w lokalnym systemie plików, procesów systemu operacyjnego, modułu ładowania, bibliotek Javy

42 Maszyna wirtualna Javy
przy standardowych ustawieniach aplety załadowane przez sieć nie mają np. dostępu do lokalnego systemu plików i mogą nawiązywać połączenia sieciowe tylko z serwerem, z którego zostały załadowane. aplikacje nie podlegają tym ograniczeniom i mogą uzyskiwać dostęp do dowolnych zasobów lokalnych i sieciowych

43 Maszyna wirtualna Javy
Obiekty, do których nie istnieją w programie żadne odwołania (referencje), są usuwane przez moduł czyszczenia pamięci (garbage collector) - implementowany jako osobny wątek sterowania o niskim priotytecie. Może być on uaktywniony: synchronicznie - gdy brakuje pamięci lub na żądanie programu, asynchronicznie - gdy system nie wykonuje żadnych działań na rzecz programu

44 Narzędzia pakietu Java 2 SDK
wersję pakietu Java 2 Software Developers Kit Standard Edition można pobrać ze stron WWW firmy Sun Microsystems pod adresem

45 Narzędzia pakietu Java 2 SDK
instalator umieszcza pliki pakietu w podkatalogach katalogu instalacyjnego standardowo jest to podkatalog o nazwie jdk-numer-wersji tworzony we wskazanym katalogu

46 Narzędzia pakietu Java 2 SDK

47 W momencie uruchamiania programów Javy, maszyna wirtualna poszukuje klas do załadowania kolejno w następujących miejscach wśród klas rozruchowych (bootstrap classes) w archiwach rt.jar i i18n.jar z katalogu jdk/jre/lib, wśród zainstalowanych rozszerzeń (installed extensions) tj. klas zawartych w plikach jar lub zip z katalogu jdk/jre/lib/ext, wśród klas użytkownika z katalogów i plików jar lub zip wskazanych przez zmienną środowiskową CLASSPATH lub opcję -classpath interpretera (katalog aktualny zawsze dołączany jest do listy katalogów z klasami użytkownika).

48 Podstawowe narzędzia pakietu
Interpreter apletów Javy; uruchamia aplety Javy zawarte w dokumentach HTML. appletviewer interpreter aplikacji Javy; uruchamia kod bajtowy aplikacji Javy bezpośrednio z plików klasowych class java kompilator Javy; przetwarza kod źródłowy programu w Javie na kod pośredni javac Opis Nazwa

49 Podstawowe narzędzia pakietu
generator dokumentacji; tworzy dokumentację w języku HTML na podstawie plików źródłowych i specjalnych komentarzy dokumentacyjnych, plików z kodem pośrednim wykorzystywanych klas i dodatkowych plików z informacjami dostarczonymi przez programistę javadoc Opis Nazwa

50 Podstawowe narzędzia pakietu
weryfikator rozszerzeń; sprawdza poprawność zainstalowanych rozszerzeń pod kątem konfliktów wersji i nazw extcheck debuger Javy; pozwala na wykonywanie programu krok po kroku po jednej linii na raz, przy jednoczesnym śledzeniu stanu zmiennych. jdb archiwizator Javy; pozwala tworzyć i zarządzać archiwami w formacie jar jar Opis Nazwa

51 Podstawowe narzędzia pakietu
Generator plików w języku C; tworzy pliki nagłówkowe .h i źródłowe .c, które mogą być wykorzystane w programach w języku C wywołujących procedury w Javie lub do pisania procedur w C wykorzystywanych przez programy w Javie javah Disasembler Javy; odtwarza kod źródłowy na podstawie kodu pośredniego z pliku klasowego class javap Opis Nazwa

52 Podstawowe narzędzia pakietu
Ścieżka (bezwględna) do katalogu jdk/bin powinna być umieszczona w zmiennej systemowej PATH

53 javac - kompilator Składnia wywołania:
javac [opcje] [pliki-źródłowe] pliki źródłowe z rozszerzeniem java mogą być wymienione w linii komend lub zebrane w listę rozdzieloną odstępami i/lub znakami nowego wiersza zapisaną w pliku, którego nazwa podawana jest po

54 javac - kompilator w wyniku kompilacji powstają pliki z kodem pośrednim o rozszerzeniu class. każdy plik class zawiera jedną skompilowaną klasę lub interfejs program w języku Java jest zbiorem definicji klas i interfejsów

55 javac - kompilator Program w języku Java może być zapisany w jednym pliku lub w wielu plikach przy czym: w jednym pliku źródłowym może znajdować się co najwyżej jedna klasa publiczna jeżeli plik źródłowy zawiera definicję klasy publicznej, to jego nazwa musi być identyczna z nazwą tej klasy (wielkość liter jest istotna).

56 javac - kompilator

57 javac - kompilator

58 Ważniejsze opcje kompilatora javac
classpath lista-ścieżek-do-katalogów-i-archiwów opcja wskazuje położenia plików jar, zip i katalogów z klasami i interfejsami użytkownika, potrzebnymi do przeprowadzenia kompilacji separatorem listy jest separator ścieżek systemu operacyjnego opcja zastępuje ustawienia zmiennej CLASSPATH jeżeli nie jest ustawiona zmienna CLASSPATH i nie podano opcji -classpath to domyślnie przyjmowany jest katalog aktualny

59 Ważniejsze opcje kompilatora javac
sourcepath lista-ścieżek-do-katalogów-i-archiwów opcja wskazuje położenia plików jar, zip i katalogów z klasami i interfejsami użytkownika w wersji źródłowej, potrzebnymi do przeprowadzenia kompilacji separatorem listy jest separator ścieżek systemu operacyjnego jeżeli opcja -sourcepath nie została podana, to wykorzystywane są ścieżki ustawione w zmiennej CLASSPATH lub za pomocą opcji -classpath

60 java - interpreter aplikacji
Składnia wywołania: java [opcje] nazwa-klasy [argumenty] jako parametr podawana jest nazwa klasy (bez rozszerzenia class), od której zaczyna się wykonanie aplikacji. Klasa taka nazywana jest klasą startową

61 java - interpreter aplikacji
java [opcje] -jar plik.jar [argumenty] wskazywany jest plik archiwum z rozszerzeniem jar, który zawiera klasę startową, inne klasy aplikacji oraz pliki zasobów (grafiki, dźwięki i.t.p.).

62 appletviewer - interpreter apletów
Składnia wywołania: appletviewer [opcje] url interpreter apletów pozwala uruchamiać aplety bez korzystania z przeglądarki WWW jako parametr podawany jest url strony WWW jeśli w stronę WWW wbudowanych jest kilka apletów, to dla każdego z nich otwierane jest osobne okno interpretera

63 Pakiet pakiet jest mechanizmem łączenia w pewną całość logicznie powiązanych klas i interfejsów zapewniania kontrolę dostępu do klas i interfejsów oraz ich składowych pozwala unikać kolizji nazw biblioteki Javy zorganizowane są w pakiety

64 Pakiet Przynależność klas i interfejsów zdefiniowanych w danym pliku do konkretnego pakietu możemy określić podając jako pierwszy wpis w pliku źródłowym deklarację pakietu package nazwa-pakietu; dalsza-część-pliku-źródłowego

65 Pakiet pakiety mogą zawierać podpakiety i tworzyć hierarchie zorganizowaną w strukturę drzewa struktura ta jest mapowana na strukturę katalogów katalogi zawierają skompilowane pliki klas i interfejsów

66 Pakiet

67 Pakiet programy mogą wykorzystywać klasy i interfejsy z istniejących pakietów deklarując ich import można importować wszystkie klasy i interfejsy danego pakietu podając w deklaracji importu symbol * na końcu nazwy pakietu

68 Pakiet deklaracja z symbolem * oznacza, że wykorzystane zostaną z danego pakietu tylko te defnicje klas i interfejsów, które są niezbędne do skompilowania i uruchamiania programu jeśli nie podano żadnej deklaracji importu, to i tak domyślnie zawsze importowany jest pakiet java.lang.*

69 Przykładowe pakiety platformy Java 2
Nazwa Opis java.lang podstawowe klasy jezyka np. Object, String java.applet tworzenie apletów java.awt składniki GUI java.io strumienie we/wy i pliki java.net obsługa sieci java.util klasy użytkowe, specjalne struktury danych


Pobierz ppt "Dr Anna Kwiatkowska http://pluton.pol.lublin.pl/~aniak JAVA dr Anna Kwiatkowska http://pluton.pol.lublin.pl/~aniak."

Podobne prezentacje


Reklamy Google