Rys historyczny l
Pierwsze prace w firmie Sun w 1990 roku
Chciano stworzyć prosty i wydajny system operacyjny
Pierwotne przeznaczenie systemu dla urządzeń gospodarstwa domowego jak telefon lub magnetowid
Pod kierownictwem Jomesa Goslinga powstał system „Oak" - wzorowany na C++
Rys historyczny 2
Programy były niezależne od platformy sprzętowej
Pozwalał na szybkie i proste programowanie przez szybką kompilację, łączenie, debuggowanie i uruchomienie
Programy miały być stabilniejsze
Rys historyczny 3
W 1992 firma Sun rozpoczęła poszukiwania zastosowań w elektronice „konsumcyjnej"
Nikt się nie zainteresował
W 1994 postanowiono zawiesić wszystkie prace nad językiem Oak i technologiami z nim związanymi
Rys historyczny 4
Dopiero powstanie Internetu odnowiło zainteresowanie językiem „Oak"
W 1995 firma Sun zaprezentowała pierwszy raz publicznie swój nowy język
Język otrzymał nazwę: „Java"
Charakterystyka języka Java l
Język tworzący aplikacje niezależne od platformy sprzętowej
Charakterystyka języka Java 2
Wysokie bezpieczeństwo
Podczas uruchamiania programu jest on najpierw sprawdzany pod względem poprawności syntaktycznej kodu
Brak jest zawieszania się programów i błędów podczas działania
Charakterystyka języka Java 3
Zarządzanie pamięcią
JVM zarządza pamięcią jako obiekt niskiego priorytetu
Przydzielenie i zwalnianie pamięci odbywa się automatycznie
Charakterystyka języka Java 4
Zarządzanie pamięcią
Przy tworzeniu nowego obiektu JVM automatycznie przydziela mu odpowiednią ilość pamięci
Gdy obiekt nie jest już potrzebny zostaje on przez specjalny proces porządkujący usunięty z pamięci
Proces porządkujący działa z niskim priorytetem i jest on obsługiwany, gdy system jest „bezczynny"
Charakterystyka języka Java 5
Przeznaczenie Java
Internet - HTTP, FTP, SOCKET
Multimedia
Automatyka - Java Jimi
Java ma wbudowane szereg bibliotek, które czynią zeń uniwersalne narzędzie
Charakterystyka języka Java 6
Wielowątkowość 1
Java posiada wbudowaną obsługę wielu wątków
Dostarcza mechanizmy
synchronizowania wątków,
priorytetów (l-najniższy, 5 -domyślny 10 -najwyższy)
Pozwala na łatwe posługiwanie się wieloma wątkami
JVM działa w harmonogramie wywłaszczeniowym i korporacyjnym
Charakterystyka języka Java 7
Wielowątkowość 2 - harmonogramy
Wywłaszczający - wątek o niższym priorytecie zostanie zatrzymany wcześniej czy później przez wątek o wyższym priorytecie. Gdy zgłoszą chęć zadziałania wątki o tych samych priorytetach to zostanie losowo wybrany jeden z nich.
Korporacyjny - czeka aż wątek sam odda sterowanie innemu wątkowi
Charakterystyka języka Java 8, 9
Cel stosowania aplikacji wielowątkowych
program wykonywany współbieżnie
Obowiązki programisty i obowiązki języka w różnych językach programowania
Porównanie do innych języków programowania
Charakterystyka języka Java 10
Rozszerzenia i ograniczenia Javy w stosunku do C i C++
Narzucono ograniczenia, które ułatwiają testowanie programów i czynią kod przejrzystym.
Usunięto wskaźniki i uproszczono model zarządzania zasobami,
Usunięto możliwość przeciążania operatorów,
Usunięto wielodziedziczenie (zastępując je mechanizmem implementacji interfejsów),
Zwolniono programistę z konieczności alokacji pamięci.
Charakterystyka języka Java 11
Rozszerzenia i ograniczenia Javy w stosunku do C i C++ cd.
usunięto niektóre konstrukcje języka C++ (np.: typedef, #define, goto, struci, union)
usunięto preprocesor, jako elementy niezgodne 7 paradygmatem programowania zorientowanego obiektowo oraz utrudniające zrozumienie i modyfikowanie kodu; można je zastąpić poprzez definicje klas,
"zlikwidowano" możliwość definiowania procedur i funkcji nie związanych z definicją żadnej klasy
Programowanie obiektowe - wstęp
Program w Javie to zbiór kas i obiektów
Klasa to taki twór, który zawiera dane i metody ich przetwarzania
Klasa > pole danych, metody ,klasy
Programowanie obiektowe - wstęp
Klasy są jedynymi typami danych w Javie
Z klas budujemy obiekty na, których operują klasy
Za pomocą specjalnych słów kluczowych można wskazać czy dane mają należeć do całej klasy czy tylko do obiektu
Istnieją typy proste, które nie są obiektami: liczby całkowite, liczby zmiennopozycyjne, znaki i zmienne logiczne.
Tablice i napisy (ciągi znaków) są obiektami.
Programowanie obiektowe - wstęp l
Dziedziczenie
klasa A jest klasą bazową klasy B
klasa B jest klasą potomną klasy A
klasa B jest klasą bazową klas C,D,E
klasa C,D,E są klasami potomnymi klasy B
klasy potomne dziedziczą wszystkie metody oraz zmienne do swoich klas bazowych
Programowanie obiektowe - wstęp 2
Działanie dziedziczenia
Gdy tworzysz obiekt tworzone są jednocześnie „miejsca” przeznaczone dla każde zmiennej zdefiniowanej w danej klasie i we wszystkich jej klasach bazowych
Nowy obiekt ma dostęp do wszystkich nazw metod zdefiniowanych w jego klasie oraz we wszystkich klasach bazowych, jednakże definicje metody wybierane są dynamicznie podczas ich wywoływania.
Programowanie obiektowe - wstęp 3
Przesłanianie metod
Nowo zadeklarowana metoda przesłania starą i do niej następuje odwołanie automatyczne
Pojedyncze dziedziczenie
Mechanizm dziedziczenia dostępny w Javie nazywany jest dziedziczeniem pojedynczym.
Oznacza to, iż każda klasa w Javie może posiadać tylko jedną klasę bazowa (chociaż każda klasa rnoże posiadać wiele klas potomnych).
Programowanie obiektowe - wstęp 4
Interfejsy i pakiety
Interfejs jest zbiorem nazw metod, bez ich definicji, które mogą być dodawane do klasy w celu dostarczenia jej dodatkowych możliwości, których klasa sama w sobie nie posiada i których nie dziedziczy od klas bazowych.
Pakiety w Javie są. metodą grupowania powiązanych ze sobą klas i interfejsów w jedną bibliotekę. Pozwalają one na korzystanie z grup klas tylko w momencie, kiedy są faktycznie potrzebne i eliminują potencjalne zagrożenie konfliktów nazw pomiędzy klasami umieszczonymi w różnych pakietach.
Programowanie obiektowe - wstęp
Najważniejsze pakiety
java - biblioteka klas dostarczona z JDK (Java Development Kit)
- zawira klasy dostępne we wszystkich implementacjach Javy
- zawiera wiele innych pakietów
Standardowo nowy program bidzie miał dostęp do klas umieszczonych w pakiecie aby odwołać się do innych pakietów musimy je zaimportować (importjava.net.*) lub przez podanie nazwy pakietu (java.awt.Color)
Programowanie obiektowe - wstęp
Najważniejsze pakiety pakietu java
java. iang - jest, podstawowym pakietem języka Java, domyślnie importowanym dla każdej definiowanej klasy,
java,applet - zawiera klasy potrzebne do tworzenia apletów zamieszczanych na stronach WWW.
java.awt - Abstract Window Toolkit, jest to pakiet zawierający niezależny od platformy systemowej zestaw klas do projektowania aplikacji w środowisku graficznym.
java.io - w pakiecie tym zebrano klasy implementujące operacje wejścia / wyjścia (ang. input / output),
java.net - jest pakietem zawierającym klasy służące do realizacji operacji wejścia / wyjścia w sieci Internet na niskim poziomie.
java.ulil - zawiera różne przydatne klasy jak np. Date, która jest używana do operacji na datach, niezależnie od platformy systemowej.
Programowanie obiektowe - wstęp
Sytuacje wyjątkowe
Gdy wystąpi sytuacja wyjątkowa (błąd) zostanie wygenerowany wyjątek.
Wyjątek ten musi być obsłużony przez obsługę wyjątków
Niezbędne elementy l, 2
JDK - Java Development Kit
Firma Sun oferuje szereg wersji JDK dla różnych systemów - można je pobrać ze strony http://java.sun.com
Należy posługiwać sięjak najnowszą wersją JDK
Po pobraniu pliku należy go zainstalować jak każdą aplikację
Modyfikacja autoexec.bat
Dodać ścieżkę do katalogu /bin/ znajdującego się w katalogu JDK.
Zdefiniować classpath zmienna ta pomaga JDK lokalizować klasy Java zainstalowane na komputerze, również klasy napisane przez nas.
Niezbędne elementy 3
Narzędzia JDK
javac- kompilator Java. Tworzy kod pośredni (bytecode)
java- interpreter Java - wykonuje skompilowane programy w Javie (zapisane już w bylecode)
appleUiewer-jest bardzo przydatnym narzędziem pozwalającym wykonywać i debagować applety Java bez użycia przeglądarki.
javadoc- tworzy dokumentacje API (w HTML), pobierając komentarze z kodu źródłowego.
jdb- narzędzie debagujace Javy
javap- dekompilator Java
jar - tworzy pliki JAR (Java Archive). Kompresuje klasy i tworzy jeden plik jar.
javah - generator C (header, stub generator). Używany do generowania metod native
Niezbędne elementy - kompilator
javac źródło.java -classpath -d -O
Parametry:
plik źródłowy, koniecznie z rozszerzeniem *.java
classp;ilh - lokalizacja klas, przestania zmienną środowiskową o tej samej nazwie
-d - wskazanie miejsca zapisu wyników kompilacji
-O —kompilator wstawia w miejscu wywołania wynik kompilacji metod oznaczonych jako static, final i private
Niezbędne elementy - testowanie apletów
appletvewer test_apletu.html
Parametry:
debug - pozwala na uruchomienie apletu pod kontrolą programu śledzącego
Wywołanie apletu w HTTP:
<applet code=applet.class width=300 height=20>
</applet>
Niezbędne elementy - generowanie dokumentacji
javadoc
Polecenie wygeneruje dokumentacje na podstawie komentarzy zapisanych w pliku w składni /**tekst*/
Do polecenia przekazujemy nazw? klasy
Po znaku @ podajemy słowa sterujące, które wpiszą w dokumentacji dodatkowe informacje
@ see Nazwa klasy - wpisze odsyłacz do klasy
@ yersion - wersja
@ author - autor
Pierwsza aplikacja
W pliku u nazwie HelloWorld.java wpisujemy następujący kod
Program „Hello Word”
Lass Hello Word {
Public static void main(String args[]){
System.out.prontln(„Hello Word”);
}
}
Kompilacja javac Hello Word.java
Uruchamianie java Hello Word