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

Slides:



Advertisements
Podobne prezentacje
20041 Projektowanie dynamicznych witryn internetowych Paweł Górczyński ASP 3.0.
Advertisements

Java dla studentów II roku Wydziału Fizyki PW Przemysław Duda, 2012
Programowanie obiektowe
Programowanie obiektowe
Wzorce.
Wprowadzenie do C++ Zajęcia 2.
Prezentacja o MS-DOS’ie
PROGRAMOWANIE STRUKTURALNE
Tworzenie i obsługa programów – przykład 3 uwagi cd. Wykorzystując różne klasy biblioteki języka Java należy pamiętać w jakim pakiecie się znajdują. Wszystkie.
Nguyen Hung Son Uniwersytet Warszawski
Podstawy języka Java Nguyen Hung Son Uniwersytet Warszawski.
CLR na platformie .NET Tomasz Kostarski.
Programowanie w środowiskach zintegrowanych wykład 1 PSZ Programowanie w Środowiskach Zintegrowanych > Systemy i środowiska zintegrowane > Środowisko zintegrowane.
WPROWADZENIE DO JĘZYKA JAVA
Tablice.
Biblioteki i przestrzenie nazw
Systemy operacyjne.
Systemy operacyjne Bibliografia:
Temat nr 10: System przerwań
Wzorce projektowe w J2EE
Java – programowanie obiektowe
Język Java Wielowątkowość.
1 Podstawy informatyki H. P. Janecki- 2006_ Systemy Operacyjne W6.
Podstawy programowania
Pakiety w Javie Łukasz Smyczyński (132834). Czym są pakiety? Klasy w Javie są grupowane w pewne zbiory zwane pakietami. Pakiety są więc pewnym podzbiorem.
Podstawy programowania II
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
Podstawy programowania. Język C i C++– podstawy Temat: 1
Wielozadaniowowść systemu operacyjnego Linux
Budowa systemu komputerowego
Programowanie strukturalne i obiektowe
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
Instalacja i narzędzia. Beta-kod i maszyna wirtualna
Sieciowe Systemy Operacyjne
Java – wprowadzenie, typy danych, operatory
Programowanie obiektowe – zastosowanie języka Java SE
JAVA c.d.. Instrukcji wyboru SWITCH używamy, jeśli chcemy w zależności od wartości pewnego wyrażenia wykonać jeden z kilku fragmentów kodu. Jest to w.
Andrzej Repak Nr albumu
Java – coś na temat Klas Piotr Rosik
Dziedziczenie Maciek Mięczakowski
Inicjalizacja i sprzątanie
JAVA.
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
Maszyna wirtualna ang. virtual machine, VM.
Java 3 MPDI Programowanie obiektowe W5. Java - obiektowy język programowania stworzony przez firmę Sun Microsystems. Java jest językiem tworzenia programów.
Programowanie obiektowe – język C++
Etapy uruchamiania systemu Pliki konfiguracyjne
Michał Gmerek, Krzysztof Słodowicz
Programowanie w języku C++
Podstawy programowania
C++.
XML Publisher Przedmiot i zakres szkolenia Przedmiot i zakres szkolenia Przeznaczenie XML Publisher Przeznaczenie XML Publisher Definiowanie Definiowanie.
Microsoft Disk Operating System
Treści multimedialne - kodowanie, przetwarzanie, prezentacjaOdtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Temat 1: CSS Dołączanie stylów do dokumentu
Podstawy języka skryptów
Dokumentacja obsługi programów Kamil Smużyński Piotr Kościński.
Platforma .Net.
Podstawy programowania
C++ WYKŁAD 12 ( ) Własne biblioteki. S PIS TREŚCI Kompilacja i łączenie Moduły Biblioteki Biblioteka statyczna Biblioteka współdzielona Biblioteka.
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
Programowanie Obiektowe – Wykład 2
Programowanie obiektowe – zastosowanie języka Java SE
Microsoft Disk Operating System
Podstawy programowania
Założenia projektowe Javy
Programowanie w Javie 1 Dr Robert Kowalczyk
Zapis prezentacji:

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

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

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

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

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

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

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

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

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

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

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;

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ć

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)

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)

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

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)

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

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

Maszyna wirtualna Javy

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,

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

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

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)

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

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

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

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

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

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); }

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

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>:

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

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

AppletViewer

Widok w przeglądarce

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

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

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

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.

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

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

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

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

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 http://java.sun.com

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

Narzędzia pakietu Java 2 SDK

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).

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

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

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

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

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

javac - kompilator Składnia wywołania: javac [opcje] [pliki-źródłowe] [@plik-z-listą-plików-źródłowych] 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 znaku @

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

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).

javac - kompilator

javac - kompilator

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

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

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ą

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.).

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

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

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

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

Pakiet

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

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.*

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