Temat: Uruchamianie programów w JavaTM
Celem pierwszego wykładu jest napisanie prostego programu w JavaTM . Jego zadaniem będzie wyprowadzenie na ekran zadanego ciagu znaków - napisu.
Celem pierwszego wykładu jest napisanie prostego programu w JavaTM . Jego zadaniem będzie wyprowadzenie na ekran zadanego ciagu znaków - napisu.
Na podstawie:
Ken Arnold, James Gosling, JavaTM, WNT, Warszawa 1999;
Monica Pawlan, Basic Java 1 & Basic Java 2 [ ]
1 JavaTM
Twórcą języka JavaTM jest James Gosling, obecny wiceprezes firmy Sun Microsystems. JavaTM posiada najlepsze cechy współczesnych języków programowania, Jako uniwersalny język programowania posiada wiele możliwości pozwalających budować duże programy bądź wykorzystujące sieć bądź od niej niezależne. Łatwość programowania w JavaTM i możliwość wykonywania programów na odległych komputerach w sposób bezpieczny są niezwykle istotne w zastosowaniach JavaTM związanych z siecią. JavaTM posiada rozwinięte mechanizmy programowania obiektowego (klasy, obiekty, dziedziczenie, możliwość rozszerzania klas itp), wbudowana obsługę wyjątków (błędów), możliwość tworzenia programów wielowątkowych, bogate srodowisko graficzne oraz możliwość obsługi zdarzeń (okna, klawiatura, mysz).2 Co to jest Platforma JavaTM
Platforma JavaTM to API - application programing interface oraz JVM - JavaTM virtual machine. API to zbiór gotowych podprogramów w JavaTM , które można wykorzystać w konkretnych zadaniach. Pozwala to zaoszczędzic czas przy tworzeniu programów. Programy napisane w JavaTM uruchamiane sa (interpretowane) za pomocą JVM - wirtualnej maszyny JavaTM . Można je uruchamiać na dowolnych komputerach wyposażonych w JVM. Jest to wielka zaleta tego rodzaju programów (podobnie perl). Na przykład, program napisany na komputerze Sun z systemem operacyjnym Solaris może być uruchomiony na komputerze PC z systemem WINDOWS lub na komputerze z systemem LINUX lub odwrotnie.3 Przygotowanie komputera
Zanim zaczniemy pisać nasze programy w JavaTM musimy przygotowac środowisko JavaTM . W tym celu musimy udac sie na stronę domowa firmy Sun [ java.sun.com ] gdzie powstała JavaTM . Tam znajdziemy odpowiednie oprogramowanie, a więc Java 2 SDK, wiele cennych podręczników w wersji elektronicznej, przykłady itp.4 Pierwszy program
Program piszemy używając dowolnego (dobrego) edytora tekstu. Zapisujemy go pod nazwa Przyklad.java. Należy przy tym zwracać uwagę na wielkość liter w nazwie jak tez w samym programie. Zauważmy, że zarówno nazwa pliku zawierającego program jak i nazwa klasy głównej (jedynej w tym programie) są takie same, a mianowicie Przyklad:/* Fizyka komputerowa, IV, 2001. JavaTM. Program #1. A. Baran, IFiz UMCS, 2001. http://tytan/umcs.lublin.pl/baran/ */ //Prosty przykład class Przyklad { public static void main(String[] args){ System.out.println("Bardzo prosty program w Java."); } }Tak to zostało ustalone i ma tak być. (Program do pobrania: jpgm/Przyklad). Pierwsza linia programu, zaczynajaca sie od dwóch znaków slash, a wiec //, jest komentarzem. Następna linia jest deklaracją głównej funkcji programu. Powinna mieć nazwę main. Argumentem funkcji main jest standardowa tablica args, której elementami są łańcuchy (String), a więc ciągi znaków. Sa to te same łancuchy, ..., ale o tym dalej. Linia System.out.println("Bardzo prosty program w Java."); powoduje wypisanie na ekran łańcucha Bardzo prosty program w Java. W linii tej skorzystaliśmy z funkcji println umieszczonej w module bibliotecznym System.out. Funkcja ta działa podobnie jak funkcja writeln języka Pascal. Następny krok to kompilacja programu. W wierszu poleceń piszemy -
javac Przyklad.java
Wynikiem jest plik Przyklad.class.
Jest to tzw B-kod
JavaTM
. Nadaje sie on do interpretacji
przez dowolną maszynę wirtualną
JavaTM
.
Wykonamy ten program poleceniem
- java Przyklad
Proszę zwrócić uwagę na brak rozszerzenia nazwy pliku.
Wynikiem jego działania jest linia tekstu: Bardzo prosty program
w Java.
5 Dokumentacja
Oprócz środowiska programistycznego Java 2 SDK zawiera obszerną dokumentacją dotycząca API [ http://java.sun.com/products/jdk/1.2/docs/api/index.html ] jak też podręcznik do nauki JavaTM [ http://java.sun.com/docs/books/tutorial/getStarted/problems/index.html ] . Temat: Budowa aplikacji
Celem tej części zajęć jest omówienie budowy aplikacji w JavaTM .
Celem tej części zajęć jest omówienie budowy aplikacji w JavaTM .
6 Budowa aplikacji. Klasy.
Program w JavaTM zbudowany jest z klas (class). Klasa jest podobna w swojej budowie do klasy w Delphi lub do struktury (structure) w C++ i jest trochę podobna do recordu Pascala. Różnica między rekordem, a klasą polega między innymi na tym, że klasa oprócz pól danych (jak w rekordzie) posiada metody. Metody są to funkcje i procedury operujące na danych zgromadzonych w klasie. Mogą więc one ustawiać pola danych, podawać je, coś obliczać itp. W pierwszym naszym przykładzie klasa Przyklad nie zawiera żadnych pól danych natomiast zawiera jedna metodę o nazwie main. Deklaracja tej metody jest następującapublic static void main(String[] args) { ////... }Słowo public oznacza, że metoda jest dostępna spoza modułu w którym jest deklarowana. Słowo void znaczy tyle co nic, tzn., że metoda main nie zwraca do wołającego ją podprogramu żadnej wartości. Jeśli by tak było nałeżałoby podać zamiast słowa void (określającego typ) typ zwracanej wielkości, a więc np. int, double, string itd. Przybliżymy teraz sens deklaracji static. Jeśli słowo to wystąpi to JVM uruchamia metodę main bez tworzenia kopii, instancji klasy wzorcowej. Instancja jest wykonywalną kopia klasy. Można utworzyć wiele egzemplarzy tej samej klasy wzorcowej. Dokładniej zostanie to omówione dalej. Słowo public pozwala JVM uruchomic metodę main w taki właśnie sposób a więc bez kopiowania. Metoda main wywołuje następnie statyczną metodę println, która znajduje się w klasie System. Klasa java.lang.System umie obsłużyc terminal i między innymi potrafi drukować. Jest ona zbudowana ze statycznych pól danych i metod. W przypadku klas niestatycznych, przed uruchomieniem ich metod, należy utworzyć instancje klas, a następnie uruchomić metody na rzecz tychże.
7 Pola i metody
Czym różni się niżej wypisany program od poprzedniego?/* Fizyka komputerowa, IV, 2001. JavaTM. Program #2. A. Baran, IFiz UMCS, 2001. http://tytan/umcs.lublin.pl/baran/ */
////Prosty przykład 2 class Przyklad2 { static String tekst = "Bardzo prosty program w Java."; public static void main(String[] args){ System.out.println(tekst); } }
/* Fizyka komputerowa, IV, 2001. JavaTM. Program #3. A. Baran, IFiz UMCS, 2001. http://tytan/umcs.lublin.pl/baran/ */
////Prosty przykład 3 class Przyklad3 { String tekst = "Bardzo prosty program w Java."; static String tekst2 = "Tekst statyczny"; String pobierzTekst(){ return tekst; } String pobierzTekstStat(){ return tekst2; } public static void main(String[] args){ Przyklad3 instancjaPrzyklad = new Przyklad3(); String pobranyTekst = instancjaPrzyklad.pobierzTekst(); String pobranyTekstStat = instancjaPrzyklad.pobierzTekstStat(); System.out.println(pobranyTekst); System.out.println(pobranyTekstStat); } }
8 Konstruktory
Klasy posiadaja specjalne metody zwane konstruktorami. Są one wywoływane gdy kreowana jest instancja klasy. Konstruktor posiada taką samą nazwę jak klasa i nie zwraca żadnej wartości. Konstruktory rezerwują zasoby dla tworzonego egzemplarza klasy. Oprócz tego mogą wykonywać różne prace wstępne, np. ustawiać dane, coś obliczać, itd. Jeśli konstruktor nie jest zadeklarowany wówczas JavaTM dostarcza bezargumentowego konstruktora o nazwie takiej jak nazwa klasy./* Fizyka komputerowa, IV, 2001. JavaTM. Program #4. A. Baran, IFiz UMCS, 2001. http://tytan/umcs.lublin.pl/baran/ */
////Prosty przykład 4 class Przyklad4 { String tekst; // Konstruktor klasy Przyklad4() { tekst = "Bardzo prosty program w Java."; } // Metoda pobierania String pobierzTekst(){ return tekst; } public static void main(String[] args){ Przyklad4 instancjaPrzyklad = new Przyklad4(); String pobranyTekst = instancjaPrzyklad.pobierzTekst(); System.out.println(pobranyTekst); } }
9 Inne proste przykłady aplikacji
Program w następnym przykładzie oblicza kolejne wyrazy ciągu Fibonacciego. Dzieje się to w pętli while(...){...}. Działa ona tak jak np. pętla while w języku Pascal./* Fizyka komputerowa, IV, 2001. JavaTM. Program #5. A. Baran, IFiz UMCS, 2001. http://tytan/umcs.lublin.pl/baran/ */
//// K. Arnold, J. Gosling class Fibonacci { /** Ciąg Fibonacciego */ public static void main(String[] args) { int lo = 1; int hi = 1; System.out.println(lo); while (hi < 50) { System.out.println(hi); hi = lo + hi; // nowe lo lo = hi - lo; /* nowe lo wynosi (suma - stare lo), tzn. stare hi */ } } }
/* Fizyka komputerowa, IV, 2001. JavaTM. Program #6. A. Baran, IFiz UMCS, 2001. http://tytan/umcs.lublin.pl/baran/ */
//// wg. K. Arnold, J. Gosling class Fibonacci1 { /** Ciąg Fibonacciego */ public static void main(String[] args) { long lo = 1; long hi = 1; int MAX_INDEX = 50; int i = 0; System.out.println(lo); while (i < MAX_INDEX) { System.out.println(hi); hi = lo + hi; // nowe lo lo = hi - lo; /* nowe lo wynosi (suma - stare lo), tzn. stare hi */ i++; } } }