Programowanie komputerów Wykład 1: Wprowadzenie do technologii Java dr inż. Walery Susłow walery.suslow@ie.tu.koszalin.pl
Czym jest Java? Obiektowy język programowania ogólnego przeznaczenia Opracowany przez firmę Sun Microsystems (James Gosling) Na podstawie C/C++ Zaprojektowany do łatwego tworzenia Web/Internet aplikacji Powszechnie akceptowany
Zarys historii Java 1991 Zespół inżynierów firmy Sun Green Team opracował: - Oak (Interpreter) - *7 (Star Seven, interfejs użytkownika) - Duke (Prowadzenie użytkownika) 1994 Pojawiła się nazwa Java 1995 prezentacja Javy na konferencji w San Francisco Licencja Netscape dla Java Hotjava (Java Browser) 1996 JDK 1.0 1998 J2SE 1.2 2006 Java SE 6 2006 Sun zwolniła Javę jako wolne i otwarte oprogramowanie (GNU General Public License) 2009 Oracle kupuje Sun Microsystems (razem z Javą:) 2011 Java SE 7
Cechy języka Java (1) Java jest językiem zorientowanym obiektowo, który w dużej mierze opiera się na C i C++. W porównaniu z poprzednikami Java jest zoptymalizowana. Usunięto mechanizmy będące przyczyną częstych błędów programistycznych (wskaźniki, wielokrotne dziedziczenie, przeciążanie operatorów). Początkowo Java służyła wyłącznie do tworzenia interaktywnego oprogramowania witryn internetowych. Obecnie obszar zastosowań Javy jest systematycznie rozszerzany.
Cechy języka Java (2) Niezależność od platformy sprzętowo-programowej napisany kod można wykorzystać w dowolnym środowisku, do którego przeniesiono JVM. Uniwersalne środowisko programowania GUI i multimediów. Uniwersalne środowisko dostępu do baz danych. Uniwersalne środowisko programowania w sieci i w systemach rozproszonych. Możliwość budowania programów z gotowych komponentów.
Wirtualna maszyna Javy Java Virtual Machine (JVM) to rodzaj wirtualnego komputera, który ma swój zestaw rejestrów, zestaw instrukcji, stos i pamięć dla programów. Dzięki standaryzacji maszyny wirtualnej, programy napisane w Javie są uniwersalne, tzn. wykonują się identycznie w każdym systemie operacyjnym. Programy napisane w Javie są kompilowane do poziomu kodu pośredniego, nazywanego kodem bajtowym Javy (bytecode). Kod bajtowy jest interpretowany przez wirtualną maszynę JVM do postaci programu wykonywalnego dla danego systemu operacyjnego.
Narzędzia Java Wszystkie narzędzia potrzebne do programowania w Javie znajdują się w bezpłatnym pakiecie SDK, który można pobrać z głównej witryny Javy: http://www.oracle.com/technetwork/java/javase/overview/ Kompletny kurs Javy, omawiający większość związanych z nią technologii zamieszczono na stronie http://docs.oracle.com/javase/tutorial/
Konfiguracja środowiska Zainstaluj platformę JavaTM2 na swoim komputerze! Może być zainstalowana na różnych OS: Unix/Linux Windows Mac OS Postępuj zgodnie z instrukcjami on-line: http://docs.oracle.com/javase/tutorial/getstarted/cupojava/
Zawartość pakietu SDK/JDK (1)
Zawartość pakietu SDK/JDK (2)
Jak pracujemy z Java?
Pierwsze kroki (1) Skompiluj program HelloWorldApp.java z poziomu konsoli, używając polecenia: javac HelloWorldApp.java, zostanie wygenerowany plik: HelloWorldApp.class. Jeśli widzisz jeden z komunikatów: javac is not recognized as an internal or external command, operable program or hatch file lub javac: Command not found, to masz do wyboru dwie opcje: użyj w poleceniu kompilacji kwalifikowanej nazwy ścieżki do folderu w którym znajduje się aplikacja javac, np. C:\j2sdk1.4.2_09\bin\javac HelloWorldApp.java ustaw zmienną środowiskową PATH
Pierwsze kroki (2) Uruchom kod poleceniem: java HelloWorldApp Zwróć uwagę: potrzebujesz polecenie java, a nie javac i odwołujesz się do HelloWorldApp, a nie do HelloWorldApp.java lub do HelloWorldApp.class Exception in thread "main" java.lang.noclassdeffounderror: HelloWorldApp - jeśli widzisz ten błąd, najprawdopodobniej potrzebujesz zdefiniowania zmiennej środowiskowej CLASSPATH.
Program w Javie Każdy program w Javie jest zestawem klas. Klasa jest podstawową jednostką enkapsulacji. Nie można pisać kodu poza definicją klasy. Program może być zapamiętany w jednym lub wielu plikach źródłowych o rozszerzeniu.java Konwencja dot. nazewnictwa nazwa pliku, który przechowuje program powinna być zgodna z nazwą klasy. W przypadku wielu klas w jednym pliku zgodność dotyczy tylko klasy głównej.
Aplikacje i aplety Wyróżniamy dwa rodzaje programów: aplikacje (standalone programs) i aplety (applets). Aplikacje mogą działać zarówno w trybie graficznym jak i tekstowym. Aby uruchomić aplikację musimy mieć zainstalowaną w komputerze wirtualną maszynę Javy JVM. Aplety działają jedynie w środowisku graficznym. Są one wykonywane przez środowisko przeglądarek internetowych i będą działać wtedy, gdy przeglądarka posiada zintegrowaną wirtualną maszynę Javy.
Kompilacja kodów Java Pliki źródłowe *.java są kompilowane za pomocą kompilatora Javy (javac.exe) do postaci kodu bajtowego. Polecenie kompilacji wymaga podanie nazwy pliku źródłowego z rozszerzeniem: javac nazwa_pliku.java Wynikiem kompilacji są pliki *.class, które mogą być wykonane przez maszynę wirtualną Javy. Podczas kompilacji pliku źródłowego każda klasa zostaje przeniesiona do swojego własnego pliku o nazwie właściwej zgodnej z nazwą klasy.
Aplikacja Java Aby aplikacja mogła zostać uruchomiona, główna klasa musi zawierać metodę public static void main(string args[]) Maszyna wirtualna Javy jest wywoływana za pomocą polecenia java z argumentami: java nazwa_pliku arg1 arg2 Po załadowaniu klasy przez JVM sterowanie zostaje przekazane do metody main() i tu zaczyna się właściwe działanie programu: tworzenie obiektów, odwołania do innych klas aplikacji
Pierwszy program w Java class Hello { // Wyświetla komunikat powitalny public static void main String[] args) { System.out.println ("Hello, world!"); } }
Pakiety Javy Java dostarcza nam do dyspozycji tzw. pakiety są to swoiste biblioteki klas, przy czym każda klasa w Javie należy do jakiegoś pakietu; Zdefiniowana przez nas klasa należy do pakietu "bez nazwy" (domyślnego), definiowanego przez środowisko. Pakiety poza grupowaniem klas pełnią również rolę porządkującą i chronią przed kolizjami nazw. Jednym ze standardowych pakietów, nie wymagających deklaracji, jest pakiet java.lang, zawierający główne klasy języka Java.
Metoda println() W klasie System pakietu java.lang zadeklarowano statyczne pole out związane ze standardowym wyjściem. Z polem tym związana jest metoda println(), która wypisuje na wyjściu wiersz podany jako argument. Czyli wynikiem działania programu będzie wypisanie na ekranie monitora pozdrowienia: "Witamy".
Aplet Jedna z klas dziedziczy klasę Applet, tworzymy plik HTML zawierający znacznik wywołania tej klasy, np.: <applet code = MyApps.class width = 300 height = 300 > </applet> Po napotkaniu tego znacznika przeglądarka ładuje plik MyApps.class, wywoływany jest konstruktor tej klasy, metoda inicjalizacyjna, itd.
Zintegrowane środowiska programistyczne Javy De-facto hierarchia poważnych Java IDE wygląda następująco: Borland - JBuilder IBM - Visual Age, Eclipse Oracle (Sun) - NetBeans, Java Studio, Creator, ME Java Studio, Java Creator Aplikacje Borland i IBM są bardzo znane, natomiast istnieje kilka powodów by wybrać dzieło pochodzące od Oracle (Sun): 1. Są oni autorami Java; 2. Jest to hardware compani, czyli kasę robią nie na soft jak Borland) i nie na konsultacjach (jak IBM) 3. Środowiska Sun napisane są na Java. Zaczynać warto z NetBeans jest to projekt OpenSource, rozwijany przez wielu fachowców patrz http://www.netbeans.org
Materiały uzupełniające Pierwsze kroki http://docs.oracle.com/javase/tutorial/getstarted/ Porady dot. języka Java http://docs.oracle.com/javase/tutorial/java/nutsandbolts/ Kompilowanie i uruchomienie prostego programu http://www.oracle.com/technetwork/java/compile- 136656.html