Transcript
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:
[email protected] 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
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
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?
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
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
Źródło: J2EE training: http://courses.coreservlets.com
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;
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
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…)
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
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 (1)
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%
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007 (1) http://java.sun.com/docs/books/tutorial/getStarted/intro/definition.html
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ą Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
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 Parsowanie XML
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Java 2 Standard Edition
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
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
Standardowy mechanizm wykonywania zapytań bazodanowych
Również regularne jak i parametryzowane zapytania do DB
Standaryzowany struktury danych do przechwytywania rezultatów zapytań
Wymaga wyłączenie specyficznych sterowników dla serwera po stronie klienta. Nie trzeba nic zmieniać po stronie serwera
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
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
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 …
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
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 Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
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
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
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) Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Eclipse
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Netbeans
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Literatura Core Java 2 Podstawy Java 2 Techniki Zaawansowane
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Pytania ?
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007