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