Uniwersytet Łódzki
Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej
Java 1
Wykład wstępny
mgr inż. Michał Misiak
Podstawowe informacje
mgr inż.. Michał Misiak
Konsultacje pokój 317, piątek po wykładzie
e-mail: mmisiak@math.uni.lodz.pl
strona www: www.michalmisiak.prv.pl
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Zasady zaliczenia
Kolokwium + Projekt w ramach laboratorium
Ocena z wykładu: 0,4 * ocena z kolokwium + 0,6 * ocena z projektu
Kolokwium na przedostatnich zajęciach
Program wykładów
Podstawy języka
Przegląd klas i pakietów
Obsługa zdarzeń
Rysowanie AWT
Swing
Aplety
Programowanie współbieżne
Programowanie sieciowe
Różności (JDBC, JMF, J2ME, …)
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Prawdy i mity o Javie
Java jest techniką webową?
Java jest bezpieczna?
Java jest niezależna od architektury?
Java jest wydajna?
Java jest prosta?
Java jest potężna?
Java jest obiektowa?
Java jest rozproszona?
Java jest interpretowana?
Java prowadzi przemysł programistyczny
Najbardziej popularne i pożądane języki programowania na lipiec 2007, zobacz: http://www.tiobe.com/tpci.htm
Java
C
C++
Visual Basic
PHP
Perl
C#
Python
JavaScript
Ruby
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Java jest techniką webową
Prawda! Przeglądarki WWW mogą uruchamiać programy w Java tzw. “applety”
Sieć WWW może być wykorzystana do dostarczenia i wykonywania aplikacji;
Nie trzeba instalować i ściągać uaktualnień aplikacji. Aplikacja znajduje się pod konkretnym adresem, jest zasobem sieciowym;
Prawda! Biblioteki sieciowe Java są łatwe w użyciu
Przeciętny użytkownik może w łatwy sposób pisać aplikacje sieciowe w oparciu o gniazda;
Standardowe protokoły dla systemów rozproszonych i API dla
DBMS;
Java jest techniką webową
Mit! Java jest rozwiązaniem tylko dla WWW
Aplety Java działają w ramach stron WWW
Aplikacje Javy mogą być również stacjonarne tzw.
„stand-alone”
Java również jako aplikacja mobilna
Aktualne wykorzystanie:
Klient (applet): 5%
Aplikacja stand-alone (application): 25%
Serwer (servlets/JSP/EJB): 70%
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Java jest bezpieczna
Prawda! Restrykcje na wykonywanie operacji
brak możliwości wykonywania operacji bezpośrednio na pamięci
Aplety standardowo zabraniają:
czytanie z dysku lokalnego;
zapisywanie na dysk lokalny;
wykonywania lokalnie programów
otwierania połączeń sieciowych innych niż HTTP
dostęp do prywatnych danych o użytkowniku (nazwa,
katalogi, zainstalowane aplikacje, etc…)
Java jest bezpieczna
Mit! Java jest zbyt bardzo restrykcyjna, ażeby była użyteczna
Restrykcje stosują się wyłączenie do apletów, nie do regularnych programów Java;
Podpisy cyfrowe wspierają ograniczanie
restrykcji
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Java jest niezależna od platformy
Prawda! Programy w języku Java mogą być kompilowane na „bytecode”
niezależnie od maszyny/systemu operacyjnego
Prawda! Większość systemów operacyjnych posiada implementacje Wirtualnej Maszyny Java (JVM)
Windows, Linux, Solaris, MaxOS, …
Mit! Bezpieczeństwo i przenośność może być osiągnięta bez straty wydajności
Obecnie programy napisane w języku Java są ok.. 20% wolniejsze niż w C++
Kolejne wersje JVM dążą do zwiększenia lub wyeliminowania start wydajności
Najprawdopodobniej różnice w wydajności pomiędzy aplikacjami w C++, a w Java pozostanie na poziomie ok. 10%
(1) http://java.sun.com/docs/books/tutorial/getStarted/intro/definition.html
(1)
Java jest niezależna od platformy
Mit! Java jest wyłącznie interpretowana
Wcześniejsze wersje były interpretowane, aktualnie wiele JVM wspiera JIT mechanizm „Just-In-Time”
Przykład kompilatora Javy bezpośrednio do języka maszynowego: The GNU Compiler for the Java Programming Language
Mit! Napisz raz uruchom gdziekolwiek (Write Once Run Anywhere)
Kod przenoszalny może być bardzo łatwo uzyskany natomiast musi być przetestowany na platformach, na których ma być używany
Aplikacje w języku Java mogą wykonywać lokalny kod
Graficzne biblioteki zachowują się trochę inaczej na różnych platformach
Obsługa wykonywania wątków jest bardzo luźno zdefiniowana
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Java jest prosta
Prawda! Java wspaniale upraszcza niektóre funkcjonalności języków programowania
Java dysponuje automatycznym zarządzaniem pamięcią (Garbage Collector).
Brak wskaźników oznacza brak niebezpieczeństwa wycieków pamięci. Nie ma bezpośrednich operacji na wskaźnikach
Nie wykorzystuje się plików „makefile”
Nie potrzeba plików nagłówkowych
Wbudowane zarządzanie wielowątkowością
Java jest potężna
Prawda! Java posiada duży zbiór standardowych bibliotek:
obsługa sieci: URL (Uniform Resource Locator), gniazdka TCP i UDP, adres IP, RMI, …
Komponenty programistyczne: beans
wielowątkowość (lekkie procesy)
rozproszone obiekty: CORBA, JNDI, …
obsługa baz danych: JDBC
Grafika: sterowanie GUI i rysowanie grafiki
Biblioteki z gotowymi strukturami danych
Bezpieczeństwo: Podpisy cyfrowe, kontrola i sterowanie dostępem do zasobów, certyfikaty
Serializacja (przesyłanie struktur danych)
Kompresja strumieni i plików
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Java 2 Standard Edition
Pakiety Javy
Główne pakiety:
JDBC
RMI
JavaBeans
Swing
Java 2D
Standardowe rozszerzenia
Serwlety i JavaServer Pages
Enterprise Java Beans (i JNDI)
Java 3D
Java JMF
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Java Data Base Connectivity (JDBC)
Standardowy mechanizm do podłączania się do serwerów bazodanowych
Wymaga wyłączenie specyficznych sterowników dla serwera po stronie klienta. Nie trzeba nic zmieniać po stronie serwera
Standardowy mechanizm wykonywania zapytań bazodanowych
Również regularne jak i parametryzowane zapytania do DB
Standaryzowany struktury danych do przechwytywania rezultatów zapytań
założeniem są relacyjne bazy danych, struktury danych jako tabele
Nie definiuje składni SQL
Zapytania SQL są ciągiem znaków
Wspieranie rozszerzeń serwera bazodanowego
Remote Method Invocation
Wbudowany protokół obiektów rozproszonych
RMI pozwala programistom na dostęp do obiektów Javy i sterowanie nimi w normalny sposób. Funkcje mogą być wywoływane na zdalnym obiekcie przez sieć
Struktury danych mogą być przesyłane przez sieć dzięki mechanizmowi serializacji
Podobny do mechanizmu CORBA, ale komunikacja wyłącznie Java-Java
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
JavaBeans „Fasolki”
Pozwala organizować kod programu jako komponenty, które mogą być wielokrotnie wykorzystywane
Graficzne IDE umożliwiają modyfikację i
manipulowanie „fasolkami” bez konieczności wnikania w ich strukturę. Konstrukcja programu techniką „drag-and-drop”
Bezpieczniejsze i bardziej przenośne niż komponenty ActiveX
Możliwość umieszczenia stworzonych wcześniej fasolek w narzędziach tj. JBuilder, Sun
JavaWorkshop, NetBeans, IBM VisualAage, etc
…
Swing
Podstawowa bibliotek do budowy GUI w Java 2
duży zbiór wbudowanych kontrolek
duża elastyczność i konfigurowalność
zawiera przydatne kontrolki w tworzeniu aplikacji
komercyjnych: tzw. tooltips, tabbed panes, dokowalne menu, wielodokumentowe interfejsy, wspieranie
HTML, etc…
Modyfikowalność wyglądu za pomocą tzw. look and
feel. Można zmieniać w trakcie działania aplikacji.
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Java 2D
Standardowa biblioteka do rysowania w Java 2
Standardowa architektura do łatwego rysowania obiektów 2D (struktury danych: kształty, płótno, pędzle, kolor, etc…)
Wiele przydatnych funkcjonalności :
Wypełnianie wzorcami i obrazami
Stosowanie różnych czcionek
Wybór różnych grubości i wzorów piór
Miksowanie kolorów, zmiana przeźroczystości
Różności Javy
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Konfiguracja oprogramowania wymaganego i pomocnego przy tworzeniu aplikacji w Javie
Należy zainstalować Java (aktualnie dostępna Java w wersji 6!) Najlepiej jednak użyć wersji JDK (Java Development Kit) 5:
http://java.sun.com/j2se/1.5.0/download.jsp
Pobrać J2SE (Stanard Edition), nie J2EE! (Enterprise Edition)
Pobrać JDK, nie tylko JRE
Ustawić zmienną środowiskową classpath
Dokumentacja
Sukcesem w programowaniu w Javie jest umiejętność posługiwania się
dokumentacją:
http://java.sun.com/j2se/1.4.2/docs/api/
Istnieje również szereg dobrych tutoriali:
The Java Tutorials:
http://java.sun.com/docs/books/tutorial/
http://www.apl.jhu.edu/~hall/java/
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Środowisko programowania
Eclipse (http://www.eclipse.org)
Eclipse IDE for Java Developers
Eclipse IDE for Java EE Developers
Netbeans (http://www.netbeans.org)
NetBeans Mobility 5.5.1 ML
NetBeans CDC
NetBeans Visual Web Pack 5.5.1
NetBeans Profiler
JBuilder (http://www.borland.com)
JCreator (www.jcreator.com)
Eclipse
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Netbeans
Literatura
Core Java 2 Podstawy
Java 2 Techniki Zaawansowane
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007