290 likes | 456 Views
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. Zasady zaliczenia. Kolokwium + Projekt w ramach laboratorium
E N D
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
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, …)
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 Ź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;
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%
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
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) (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
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 • Parsowanie XML
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
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
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.
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
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/
Ś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)
Literatura • Core Java 2 Podstawy • Java 2 Techniki Zaawansowane