Wstęp
Rozwój języków programowania
assembler – odejście od przełączników
C – język strukturalny, obliczenia matematyczne i programowanie strukturalne
C++ - język C + klasy
Java – niezależność od platformy, od kuchenek mikrofalowych do superkomputerów
Rozwój Javy
OAK język dla małych urządzeń 1992 (sterownik STAR)
Java w wersji 1, rok 1995, wersje 1.0, 1.1.x ...
Java 2 (J2SE Java 2 Standard Edition) wersje 1.2.x - 1.5.x
Java 2 wydanie 5 (J2SE 5) wersje 1.5.x ...
Java 2 wydanie (J2SE 7) wersje 1.7.x
Podstawowe pojęcia programowania obiektowego w Javie
Program jest zbiorem obiektów, wysyłających komunikaty.
Klasa, obiekt (pamięć).
Obiekty, metody.
Dziedziczenie, klasy abstrakcyjne, interfejsy.
Enkapsulacja, polimorfizm.
Zalety języka Java.
Prostota i wszechstronność.
Prosta do nauczenia się dla programistów. Różnorodne problemy
Język zorientowany obiektowo.
Czyste, użyteczne podejście do obiektowości. Model obiektów jest prosty, łatwy. Są typy proste (podwyższenie wydajności).
Niezawodność.
Programista jest wspomagany w znajdowaniu błędów. Ścisła kontrola typów. Niewiele błędów trudnych do znalezienia. Zarządzanie pamięcią pzrez maszynę wirtualną. Sytuacje wyjątkowe (np. dzielenie przez zero, odwołanie do pustej referncji), są obsługiwane przez maszynę wirtualną.
Wielowątkowość
Wielowątkowość została rozwiązana na poziomie języka.
Niezależność od sprzętu i systemu.
Programy stare mogą przestać działać z powodu zmiany systemu, procesora itp. Maszyna wirtualna Javy pozwala unikać tych problemów.
Duża wydajność mimo interpretacji
Bajt kod dla maszyny wirtualnej jest interpretowany. Kod bajtowy jest łatwy do przeniesienia na kod maszynowy przez kompilator JIT (Just-In-Time, Java Interpreter), tłumaczący bajt kod na maszynowy.
Programowanie rozproszone.
Klasy obsługujące protokoł TCP/IP i RMI (Transmission Control Protocol/Internet Protocol, Remote Method Invocation)
Internet i bezpieczeństwo.
Klasy ułatwiające pisanie programów dla Internetu. Dbałość o bezpieczeństwo w sieci. Czas rozwoju języka przypada na burzliwy rozwój Internetu.
Interakcja.
Dobrze rozwiązana obsługa zdarzeń.
Budowa Javy
Klasy umożliwiające działanie elementów języka.
Bogaty zestaw struktur i metod z pakietu util.
Ujednolicone operacje WE/WY.
Operacje sieciowe niskiego poziomu.
Abstrakcyjne klasy graficznego interfesu użytkownika (GUI).
. . .
Podstawowy tryb pracy
Podstawowy tryb pracy jest zilustrowany na poniższym rysunku.
Podstawowy tryb pracy składa się z poniższych kroków:
Napisanie kodu źródłowego.
Kompilacja do pliku typu "byte code".
Wykonaniu programu.
Przykład typu "Witaj świecie" w dwóch postaciach
Aplikacja
Aplet
Pierwsza aplikacja
Pierwszą z aplikacji zapiszemy w postaci "surowej" i za pomocą IDE Netbeans. W dowolnym edytorze zapiszmy program postaci takiej jak na poniższym obrazku.
P01Witaj.java
Elementy języka, z którymi można się zapoznać w tym przykładzie są następujące:
import - dołączanie bibliotek klas. Biblioteka java.util.* odpowiada katalogowi C:\j2sdk....\java\utill\* wszystkie klasy w systemie Windows lub /usr/java/j2sdk.../java/util/* wszystkie klasy w systemie Linux. W katalogu instalacyjnym jest zwykle plik src.zip.
Aplikacja zaczyna swoje działanie od metody main umieszczonej w klasie publicznej.
Metoda main musi być metodą statyczną, bo obiekt klasy P01Witaj nie jest tworzony.
Argumenty metody muszą być umieszczone.
Słowo kluczowym public przed funkcją oznacza, że może być dostępna na zewnątrz klasy.
Napis System.out.println("Witaj na jawie"); wyświetla tekst "Witaj na jawie". System jest klasą z java.lang.*. Ma składową out. Pole out jest klasy PrintStream. Pole out jest obiektem statycznym. Metoda println jest metodą z klasy PrintStream. Argumentem tej metody może być łańcuch tekstowy.
Napis System.out.println("Witaj na jawie"); można przeczytać wykonaj metodę println na polu out klasy System przekazując do niej argument "Witaj na jawie"
Napis Date d= new Date(); powołuje do życia obiekt d klasy Date
Wszystkie obiekty są tworzone za pomocą operatora new wybranego konstruktora, wszystkie zmienne muszą mieć nadane wartości, konstruktor to specjalna metoda, konstruktor ma taką samą nazwę jak klasa, może być wiele konstruktorów. Jeśli nie ma żadnego, to jest przyjmowany konstruktor domyślny, konstruktor domyślny jest bezargumentowy.
Klasa Date jest klasą z pakietu java.util*. Wywołanie konstruktora bezargumentowego powoduje pobranie bieżącego roku, miesiąca, dnia, godziny, minuty i sekundy. Dostęp do tych wielkości jest możliwy poprzez wykonane odpowiednich metod.
Napis System.out.println(d); powoduje wykonanie println z argumentem typu Date. Identyfikacja metody i konstruktora następuje przez nazwę i listę argumentów. Każdy obiekt ma zdefiniowaną funkcję toString() przyporządkowującą tekst do tego obiektu. Metoda println, jeśli dostaje argument w postaci obiektu, to wykonuje na tym obiekcie metodę toString(). Metoda ta jest dziedziczona z klasy Object. Można zmieniać sposób działania metody odziedziczonej.
Nawet w tym małym przykładzie wykorzystywane są dość zaawansowane cechy języka. Niemniej program jest przejrzysty, cała złożoność została przykryta przez obiekty.
Pierwszy applet
Applet jest aplikacją zajmującą część wyświetlacza przeglądarki. Wykonanie apletu należy do klienta. Przeglądarka klient musi mieć podłaczoną odpowiednią wtyczkę. Applet Javy typu "Witaj świecie" wgląda tak jak poniżej.
P02Witaj.java
Tak napisany program należy przesłać do przeglądarki. Należy napisać poniższy dokument HTML.
1 <html> 2 <head> 3 <title>Witaj na jawie</title> 4 </head> 5 <body> 6 <applet code=P02Witaj.class width=300 height=200></applet> 7 </body> 8 </html> |
---|
Opis apletu
Biblioteka java.awt.* zawiera podstawowe komponenty graficzne.
Pisanie apletów polega na ponownym zdefiniowanu kilku metod klasy Applet.
Metoda paint() jest wywoływana, wtedy gdy okno apletu musi być ponownie wyświetlone.
Inne metody, które można ponownie zdefiniować to init(), start() , update(), stop(), destroy().
Nagłówek klasy P02Witaj ma postać public class P02witaj extends Applet. Napis ten informuje, że klasa P02Witaj jest rozszerzeniem klasy Applet.
Mamy dostęp do wszystkich metod klasy bazowej, możemy je wzbogacić o nowe możliwości. To jest dziedziczenie.
Klasa Applet umie ustawić się w przeglądarce. Umie również reagować na zdarzenia oprogramowane w przeglądarkach.
Od momentu przedefiniowania metody paint() obowiązuje jej nowa treść.
Argument metody paint() jest klasy Graphics, metoda ta wykonuje operacje na tym obiekcie.
Metoda drawString() rysuje tekst "Witaj na jawie" w polu o rozmiarze 120x50 punktów (pixeli).
Metoda drawString() rysuje tekst, który otrzymujemy przez zamianę obiektu d na tekst.
Dobrze jest wiedzieć, że tym razem tekst jest traktowny tak, jak obrazek.
Dokumentacja źródłowych programów w Javie
W Javie dostępne są dwa rodzaje komentarzy
Komentarze zwykłe /* ... */ , // ...
komentarze dokumentujące /** ... */
Komentarze dokumentujące w zależności od ich umieszczenia zawierają
dokumentację dla klas
dokumentację dla pól
dokumentację dla metod
Rozmieszczenie komentarzy dokumentujących
[komentarze dokumentujące dla klasy]
public class P04Witaj ...{
[komentarze dokumentujące dla pola]
definicja pola_1;
[komentarze dokumentujące dla pola]
definicja pola_2;
...
[komentarze dokumentujące dla metody]
metoda
[komentarze dokumentujące dla metody]
metoda
.....
}
W komentarzach dokumentujących można umieścić
tekst
osadzony html
znaczniki zaczynające się od znaku @
Znaczniki zaczynające się od znaku @ dzielimy na grupy
znaczniki odwołania do innych klas, np.: @see nazwaklasy
znaczniki dokumentowania klas, np.: @version, @author, @since
znaczniki dokumentowania zmiennych, np.: tekst, @see
znaczniki dokumentowania metod, np.: tekst, @see, @param nazwa_param opis, @return opis, @throwspełna_nazwa_klasy opis, @deprecated
i inne, które być może będą omówione.
Poprzedni przykład uzupełniony o komentarze dokumentujące ma poniższą postać
P04Witaj.java