Java. Michał Wójcik. michal.wojcik@eti.pg.gda.pl http://mwojcik.eti.pg.gda.pl



Podobne dokumenty
Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

Programowanie w języku Java. Kolekcje

Programowanie aplikacji na urządzenia mobilne

1 Wprowadzenie do J2EE

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Podstawy i języki programowania

Aplikacje Internetowe, Servlety, JSP i JDBC

BEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Java Collections Framework

JAVA EE 8. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Java Server Faces narzędzie do implementacji w wy prezentacji

Przykłady tworzenia aplikacji komponentowych w technologii JavaServer Faces 2.1 na podstawie

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

JAVA EE MODEL APLIKACJI. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Programowanie w języku Java. Wykład 13: Java Platform, Enterprise Edition (Java EE)

Programowanie w języku Java

JavaServer Faces (JSF)

SOP System Obsługi Parkingów

Tworzenie aplikacji w języku Java

Kolekcja (kontener) to po prostu obiekt, który grupuje wiele elementów w jeden twór.

Kolekcje. Na podstawie:

Programowanie komponentowe 5

java.util.* :Kolekcje Tomasz Borzyszkowski

Programowanie obiektowe zastosowanie języka Java SE

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Realizacja ekstensji klasy. Paulina Strzelecka, Tomasz Roszkowski

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Strumienie, pliki. Sortowanie. Wyjątki.

Kurs programowania. Wykład 9. Wojciech Macyna

Wybrane działy Informatyki Stosowanej

JAVA I BAZY DANYCH. MATERIAŁY:

Dawid Gierszewski Adam Hanasko

Strumienie i serializacja

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Strumienie, pliki. Sortowanie. Wyjątki.

EJB 3.0 (Enterprise JavaBeans 3.0)

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Wstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008

Tworzenie komponentów logiki biznesowej i warstwy dostępu do danych w oparciu o EJB3.0/JPA lub EJB 3.1/JPA2

Szkolenie wycofane z oferty

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

Kolekcje mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Java niezbędnik programisty spotkanie nr 8. Kolekcje c.d.

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.

Wykład dla studentów Informatyki Stosowanej UJ 2012/2013

Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej

Enterprise JavaBeans

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

Serwery aplikacji. mgr Radosław Matusik. Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego radmat radmat@math.uni.lodz.

Programowanie obiektowe

Programowanie w Javie cz. 1 Wstęp. Łódź, 24 luty 2014 r.

JAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt

Zad.30. Czy można utworzyć klasę, która implementuje oba interfejsy?

Programowanie obiektowe

Enterprise JavaBeans (EJB)

Java Platform Micro Edition

Tworzenie aplikacji w języku Java

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz

Wykład 4. Tablice. Pliki

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

Kolekcje - pakiet Java Collections Framework

Java Server Faces - wprowadzenie

Język JAVA podstawy. Wykład 6, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Podstawowe wykorzystanie Hibernate

Certyfikaty firmy Sun. Ścieżka certyfikacyjna dla Javy Egzamin SCJP

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Wykład 3 Inżynieria oprogramowania. Przykład 1 Bezpieczeństwo(2) wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

mgr inż. Michał Paluch

Programowanie MorphX Ax

Protokół JDBC współpraca z relacyjnymi bazami danych lab4. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych

Java Podstawy JUST JAVA Michał Bereta Intytu Modelowania Komputerowego Wydział Fizyki, Matematyki i Informatyki Stosowanej

Programowanie 3 - Funkcje, pliki i klasy

Programowanie Obiektowe GUI

Enterprise JavaBeans. 1. Architektura EJB: komponenty encyjne, komponenty sesyjne, komponenty sterowane komunikatami. 2. Kontenery EJB JBoss.

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Aplikacje w środowisku Java

JAVA I SIECI. MATERIAŁY:

Wprowadzenie do J2EE. Maciej Zakrzewicz.

Nowoczesne aplikacje internetowe oparte na Seam, JSF, EJB3, JPA, AJAX

Diagramy klas. dr Jarosław Skaruz

Aplikacje internetowe i rozproszone - laboratorium

dr inż. Piotr Czapiewski Tworzenie aplikacji w języku Java Laboratorium 1

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Podstawy otwartych języków programowania Przechowywanie danych

Tworzenie i wykorzystanie usług

Programowanie Obiektowe (Java)

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

KOMUNIKACJA MIĘDZYPROCESOWA O B S Ł U G A WEJŚCIA/WYJŚCIA

Wybrane działy Informatyki Stosowanej

Programowanie w Javie 2. Płock, 26 luty 2014 r.

GUI - projektowanie interfejsów cz. II

Aplikacje RMI

Programowanie Obiektowe Ćwiczenie 4

Transkrypt:

Java Michał Wójcik michal.wojcik@eti.pg.gda.pl http://mwojcik.eti.pg.gda.pl Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechnika Gdańska 5 kwietnia 2014 Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 1 / 32

Tematy 1 Uruchomienie 2 Obsługa wyjątków 3 Obsługa IO 4 Kolekcje 5 JDBC 6 JavaServer Faces Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 2 / 32

Tematy 1 Uruchomienie 2 Obsługa wyjątków 3 Obsługa IO 4 Kolekcje 5 JDBC 6 JavaServer Faces Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 3 / 32

Technologie Java Rodzaje Java Platform: Java Platform, Standard Edition (Java SE): wcześniej J2SE, aktualna wersja 8 (1.8), głównie wykorzystywana wersja 7 (1.7); Java Platform, Enterprise Edition (Java EE): wcześniej J2EE, aktualna wersja 7 (1.7), głównie wykorzystywana wersja 6 (1.6), wersja 5 ciągle używana, J2SE używana w starszych długo rozwijanych systemach (np. banki), tworzenie aplikacji serwerowych; Java Platform, Micro Edition (Java ME): wcześniej J2ME, przeznaczona na urządzenia mobilne, CLDC Connected Limited Device Configuration, CDC Connected Device Configuration. Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 4 / 32

Java SE Uruchomienie aplikacji desktopowych: aplikacja spakowana jako archiwum jar, główna klasa aplikacji zgodna z konwencją, uruchomienie poleceniem: java -jar aplikcja.jar. public class Main { public s t a t i c void main ( S t r i n g [ ] a r g s ) { System. out. p r i n t l n ( " H e l l o world! " ) ; } } Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 5 / 32

Java EE Uruchomienie aplikacji webowych: aplikacja spakowana jako archiwum war, strony i klasy obsługi żądań, uruchamiania na serwerze. Serwery aplikacji: GlassFish Server Open Source Edition, Oracle GlassFish Server, Oracle WebLogic Server, JBoss Application Server, Apache Geronimo, WildFly. Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 6 / 32

Tematy 1 Uruchomienie 2 Obsługa wyjątków 3 Obsługa IO 4 Kolekcje 5 JDBC 6 JavaServer Faces Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 7 / 32

Wyjątki Wyjątek (Exception) zdarzenie zgłaszane podczas wykonania nieoczekiwanej akcji: połączenie z nieistniejącym serwerem, działania na źle sformatowanych danych, brak zasobów, itd. Istnieją dwa rodzaje wyjątków: zgłaszane jawnie zadeklarowane w kodzie wymagają obsłużenia, niezgłaszane nie wymagają obsłużenia. Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 8 / 32

Obsługa wyjątków public class Klasa { public void metoda ( int i ) throws Exception { i f ( i < 0) { throw new Excetpion ( ) ; } } } Klasa k l a s a = new Klasa ( ) ; try { k l a s a. metoda ( 2); } catch ( Exception e ) { System. out. p r i n t l n ( e. getmessage ( ) ) ; } f i n a l l y { } Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 9 / 32

Tematy 1 Uruchomienie 2 Obsługa wyjątków 3 Obsługa IO 4 Kolekcje 5 JDBC 6 JavaServer Faces Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 10 / 32

Strumienie Strumienie: Character Streams pisanie/czytanie znakami: Reader, Writer, FileReader i FileWriter, BufferedReader i BufferedWriter, wykorzystuje Unicode do przechowywania znaków, automatyczna translacja znaków pomiędzy Unicode a lokalnym zbiorem znaków, należy zawsze zamykać strumienie. Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 11 / 32

Strumienie standardowe i konsola Standardowe strumienie: System.in (InputStream), System.out (PrintStream), System.err (PrintStream). Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 12 / 32

Otwieranie i zamykanie strumieni FileReader f r = null ; try { f r = new FileReader ( " f i l e " ) ; } catch ( FileNotFoundException ex ) { } f i n a l l y { i f ( f r!= null ) { try { f r. c l o s e ( ) ; } catch ( IOException ex ) { } } } Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 13 / 32

Tematy 1 Uruchomienie 2 Obsługa wyjątków 3 Obsługa IO 4 Kolekcje 5 JDBC 6 JavaServer Faces Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 14 / 32

Kolekcje Kolekcja kontener, obiekt grupujący elementy. Collection Framework narzędzia służące reprezentacji i manipulacji kolekcjami: interfejsy abstrakcyjne typy reprezentujące kolekcje, implementacje konkretne implementacje interfejsów. Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 15 / 32

Rodzaje kolekcji Rodzaje kolekcji (interfejsy): Collection najbardziej ogólny rodzaj kolekcji, brak konkretnej implementacji, brak ograniczeń typu powtarzalność elementów lub kolejność, Set nie zawiera dwóch lub więcej takich samych elementów, List sekwencja elementów, może zawierać takie same elementy, (kolejki priorytetowe), Map mapowanie kluczy i wartości, nie może zawierać powtórzonych kluczy, jeden klucz może wskazywać jedną wartość. Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 16 / 32

Implementacje kolekcji Implementacje kolekcji: Set: HashSet brak zapewnienia sortowania, TreeSet sortowany na bieżąco, List: ArrayList zachowana kolejność dodawanych elementów, Map: HashMap brak sortowania, TreeMap sortowanie kluczy. Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 17 / 32

Operacje na kolekcjach Przeglądanie kolekcji: for-each: for (Object o: collection) {...}, nie należy usuwać elementów, również dla tablic. Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 18 / 32

Tematy 1 Uruchomienie 2 Obsługa wyjątków 3 Obsługa IO 4 Kolekcje 5 JDBC 6 JavaServer Faces Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 19 / 32

JDBC elementy JDBC to zestaw interfejsów pozwalających na komunikację z bazami danych: Connection reprezentuje połączenie z bazą danych: pozwala stworzyć obiekty do tworzenia zapytań, po użyciu należy je zamykać! Statement służy do wykonywania statycznych zapytań: gdy skończymy go używać należy zamykać ten obiekt; PreparedStatement służy do wykonywania dynamicznych (parametryzowanych) zapytań: wygodny gdy potrzebujemy w zapytaniu użyć typów takich jak data czy string, ponieważ zapewnia automatycznie właściwe cytowanie, pozwala na szybsze wykonywanie podobnych zapytań (są one prekompilowane), gdy skończymy go używać należy zamykać ten obiekt. Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 20 / 32

JDBC elementy JDBC: ResultSet służy do przeglądania wyników: może istnieć tylko jeden dla jednego obiektu Statement/PreparedStatement: kolejne zapytania z tego samego obiektu Statement powodują nadpisanie poprzednich wyników; jest zamykany automatycznie przy zamknięciu jego rodzica (Statement, PreparedStatement), można go zamknąć oddzielnie by szybciej zwolnić niepotrzebne już zasoby. Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 21 / 32

JDBC sterowniki, połączenia Połączenie z bazą danych: żeby móc połączyć się z bazą Java musi mieć dostęp do odpowiedniego sterownika: odpowiedni JAR dołączony do classpath ; sposoby na uzyskanie połączenie z bazą: Class.forName("jdbc.DriverXYZ"), Connection con = DriverManager.getConnection(url, "login", "haslo"); Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 22 / 32

Tematy 1 Uruchomienie 2 Obsługa wyjątków 3 Obsługa IO 4 Kolekcje 5 JDBC 6 JavaServer Faces Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 23 / 32

JSF JavaServer Faces 2: jest częścią standardu Java EE od wersji 5, posiada ustandaryzowane API dla komponentów, posiada oddzielony model komponentów od algorytmów wyświetlania ich na różne sposoby, posiada model obsługi zdarzań, posiada modele dla konwersji i walidacji danych z komponentów, Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 24 / 32

Aplikacja korzystająca z JSF Żeby napisać aplikację korzystającą z JSF trzeba przynajmniej: napisać beany do obsługi aplikacji, których: właściwości można mapować do komponentów, metody mogą służyć do ustalania decyzji nawigacyjnych, walidacji, nasłuchiwania zdarzeń; utworzyć strony JSP/XHTML korzystające z komponentów UI JSF: dostępne są komponenty do wyświetlania tekstu, formularzy itp. <h:inputtext... />, <h:selectmanycheckbox... />,..., komponenty JSF (beany zarządzane, konwertery, walidatory itd.) oznaczamy adnotacjami, Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 25 / 32

JSF servlet FacesServlet: zajmuje się obsługą wszystkich żądań do stron JSF, zmapowany w deskryptorze web.xml. Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 26 / 32

JSF JSF udostępnia 6 zakresów widzialności atrybutów aplikacji: aplikacji, sesji, widoku, żądania, żaden, własny (programisty). Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 27 / 32

Konwertery, walidatory, listenery JSF udostępnia: konwertery: konwertują wartości wpisywane w formularzach na typy Javy, standardowo dostępne są konwertery do wszystkich podstawowych typów (w tym dat); walidatory: odpowiadają za kontrolę wpisywanych wartości w pola formularzy, można samemu zaimplementować walidację jako metodę w beanie lub klasę spełniającą interfejs Validator; listenery: pozwalają nasłuchiwać na pewne zdarzenie jak: kliknięcie przycisku lub linku, zmiana wartości pola itp., implementuje się je jako metodę w beanie lub klasę spełniającą odpowiedni interfejs. Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 28 / 32

Język wyrażeń (expression language) Są dwa typy wyrażeń: #{wyrazenie}: do odczytu i zapisu (rvalue, lvalue), obliczane w dowolnym etapie cyklu życia strony (deferred). Można go używać: w statycznym tekście oraz w atrybucie znacznika, który na to pozwala, nie wszystkie znaczniki pozwalają na użycie każdego typu wyrażeń, wyrażenie jest automatycznie konwertowane do potrzebnego typu (String, int,...). Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 29 / 32

Język wyrażeń dostęp do zmiennych Dostęp do zmiennych: #{zmienna}: kontener będzie szukał zmiennej o podanej nazwie kolejno w kontekstach: strony, żądania, sesji, aplikacji; dostęp do właściwości obiektów następuje przez:. znak kropki: #{osoba.imie}; []: #{osoba[imie]}. Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 30 / 32

Język wyrażeń dostęp do zmiennych Dostęp do zmiennych: dla wyrażania #a.b (#{a[b]}): jeśli zmienna jest mapą zwróci obiekt pod kluczem b, jeśli zmienna jest listą zwraca obiekt spod indeksu b, jeśli zmienna jest beanem zwraca a.getb(); operatory: +, -, *, /, div, %, mod, and, &&, or,, not,!, ==, eq,!=, ne, <, lt, >, gt, <=, ge, >=, le, empty, A? B : C. Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 31 / 32

Pomocne Źródła I [1] Java SE 7 Documentation. http://download.oracle.com/javase/7/docs/. [2] The Java Tutorials. http://download.oracle.com/javase/tutorial/index.html. [3] JDBC Tutorial. http: //docs.oracle.com/javase/tutorial/jdbc/basics/index.html. [4] The Java EE 7 Tutorial. Oracle, July 2013. http://download.oracle.com/javaee/7/tutorial/doc/. [5] Bruce Eckel. Thinking in Java. 4th edition. Michał Wójcik (KASK, ETI, PG) Java 5 kwietnia 2014 32 / 32