Technologie JAVA Java Platform Standard Edition JSE Java Platform Enterprise Edition JEE Java Platform Micro Edition Wersje Różnice
Java Enterprise Edition Java EE to platforma umożliwiająca tworzenie oraz uruchamiania rozproszonych aplikacji wielowarstwowych, wykorzystywanych w Internecie Java EE składa się z: zbioru bibliotek standardowych zbioru zasad projektowania, implementowania i instalowania aplikacji Java EE serwera aplikacji Java EE, stanowiący środowisko uruchomieniowe dla aplikacji Java EE
Struktura warstwowa JEE Źródło: http://docs.oracle.com/javaee/6/tutorial/doc/bnafd.html
Komponenty w JEE Aplikacje klienckie i aplety Komponenty technologii Java Servlet, JSF, JSP EJB
Klienci JEE Klient przeglądarkowy Aplikacje klienckie Aplety
Komunikacja z serwerem JEE Źródło: http://docs.oracle.com/javaee/6/tutorial/doc/bnafd.html
Komponenty Webowe Źródło: http://docs.oracle.com/javaee/6/tutorial/doc/bnafd.html
Komponenty Biznesowe oraz Warstwa Danych Źródło: http://docs.oracle.com/javaee/6/tutorial/doc/bnafd.html
Kontenery JEE Źródło: http://docs.oracle.com/javaee/6/tutorial/doc/bnafd.html
Budowanie i wdrażanie aplikacji Źródło: http://docs.oracle.com/javaee/6/tutorial/doc/bnafd.html
SOAP Simple Object Access Protocol Oparty na XML, protokół komunikacyjny Struktura komunikatu składa się z: - <Envelope> - <Header> - <Body> - <Fault> Tryby wywołań - RPC - dokumentowy
Przykład żądania wysłanego protokołem SOAP <?xml version="1.0"?> <soap:envelope xmlns:soap="http://www.w3.org/2001/12/soapenvelope" soap:encodingstyle="http://www.w3.org/2001/12/soapencoding"> <soap:body xmlns:d= test"> <d:divide> <d:val1>4</d:val1> <d:val2>2</d:val2> </d:divide> </soap:body> </soap:envelope>
Przykład odpowiedzi <?xml version="1.0"?> <soap:envelope xmlns:soap="http://www.w3.org/2001/12/soapenvelope" soap:encodingstyle="http://www.w3.org/2001/12/soapencoding"> <soap:body xmlns:d= test"> <d:divideresponse> <d:val1>2</d:val1> </d:divideresponse> </soap:body> </soap:envelope>
WSDL Web Services Description Language Służy do opisywania usług sieciowych Struktura dokumentu: <d e f i n i t i o n s> <t y p e s>..........</ t y p e s> <mes s a ge>..........</ mes s a ge> <p o r tty pe>..........</ p o r tty pe> <b i n d i n g>..........</ b i n d i n g> </ d e f i n i t i o n s>
EJB Enterprise JavaBeans Komponenty zarządzane przez kontener serwera aplikacji Realizują logikę biznesową aplikacji Są wykorzystywane do budowy złożonych aplikacji Obsługują lokalnych i zdalnych klientów Klientami mogą być zarówno aplikacje jak serwlety, strony JSP
Typy komponentów EJB Sesyjne: - bezstanowe, - stanowe, - singleton; sterowane komunikatami (message-driven)
Sesyjny komponent EJB Posiada odpowiednią adnotację Posiada publiczny, bezparametrowy konstruktor Klasa jest publiczna i nie może być abstrakcyjna ani finalna, Klasa nie jest abstrakcyjna, ani finalna Implementuje metody biznesowe,
Przykład Komponentu Sesyjnego (min. 2 pliki) package com.my.lecture; import javax.ejb.localbean; import javax.ejb.stateless; @Stateless @LocalBean public class Calc implements CalculatorRemote, CalculatorLocal { public float add(int a, int b) { return a + b; } public float subtract(int a, int b) { return a - b; } } { } public interface CalculatorLocal public float add(int a, int b); public float subtract(int a, int b);
Komponent sterowane komunikatami Nie posiadają stanu Wykorzystują Java Message Service (JMS) Składa się wyłącznie z klasy beana Umożliwia asynchroniczne przetwarzanie komunikatów
Interfejsy EJB Sesyjne EJB mogą udostępniać dwa rodzaje interfejsów: - Lokalny, który może zostać zadeklarowany jako interfejs Javy lub być w postaci publicznej metody implementacji EJB. Klienci w takim wypadku muszą znajdować się na tej samej maszynie - Zdalny, mogą z niego korzystać inne komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować się na tej samej maszynie
Komponent EJB Składa się z: - Klasy implementującej funkcjonalność - Interfejsu biznesowego - Remote - Local - Opcjonalnych deskryptorów
Transakcje w JEE Czym jest transakcja? Cechy transakcji. Rodzaje transakcji: - Zarządzane przez komponent - Zarządzane przez kontener
Atrybuty Transakcji Required RequiresNew, Mandatory, NotSupported, Supports, Never
Czym jest Framework? Zestaw narzędzi, sprawdzonych rozwiązań, szkielet do budowy aplikacji. Definiuje strukturę oraz ogólny mechanizm działania aplikacji. Narzuca przepływ sterowania. Poszczególne komponenty Frameworka są rozszerzalne przez programistę.
Ciężkie Frameworki Technologie, których aplikacje wymagają serwera aplikacyjnego jako środowiska do działania. Można do nich zaliczyć m.in.: - Apache Geronimo - JBoss Application Server - JOnAS - Oracle WebLogic Server - IBM Websphere Application Server - Oracle AS
Lekkie Frameworki Mniejsze wymagania sprzętowe wobec serwera. Możliwość wykonywania testów jednostkowych, bez wdrożenia aplikacji na serwer. Możliwość uruchomienia aplikacji na kontenerze webowym Możliwość wykorzystania frameworka w aplikacjach desktopowych.
Spring Framework Wielowarstwowy szkielet aplikacji Java/Java EE Lekki kontener komponentów JavaBean Obsługa JDBC Integracja z Hibernate Obsługa transakcji Programowanie aspektowego Model MVC Integracja ze Struts Integracja z technologiami szablonów JSP, JSF
Architektura Spring Framework Źródło: http://www.springbyexample.org/examples
Inversion of Control (IoC) Źródło: http://www.springbyexample.org/examples
Wstrzykiwanie zależności Przykład Źródło: http://www.springbyexample.org/examples
Przykład 2 Wstrzykiwanie przez konstruktor Źródło: http://www.springbyexample.org/examples
Przykład 3 Setter injection Źródło: http://www.springbyexample.org/examples
Przykład 4 Wstrzykiwanie przez referencję Źródło: http://www.springbyexample.org/examples
Spring AOP Czym jest aspekt? Celem jest integracja AOP wewnątrz Spring IoC Wywołanie metody jest jedynym punktem złączenia Konfiguracja poprzez kontener
Spring AOP Umożliwia modularyzację kodu na szerszą skalę. Likwidacja nakładających się problemów przekrojowych Aspekty mogą modyfikować zachowanie kodu Podstawowe pojęcia AOP: - aspect problem przekrojowy - advice dodatkowa czynność, która zostanie wykonana w punkcie złączenia - join point punkt w aplikacji w którym zostanie zastosowana rada(advice)
Rodzaje rad w Spring AOP around advice: wykonywany jest przed i po punkcie styku, ma możliwość przerwania przepływu kontroli programu poprzez zwrócenie własnej wartości lub wyjątku, before advice: wykonuje się przed punktem styku, nie może zablokować przepływu kontroli programu, after returning advice: wykonywany jest po poprawnym wykonaniu operacji. throws advice: wykonywany jest w momencie zgłoszenia wyjątku
Deklaracja aspektu oraz punktu przecięcia Źródło: http://www.springbyexample.org/examples
Deklaracja rady Źródło: http://www.springbyexample.org/examples
Praktyczny przykład cz.1 package com.test.spring; public class ObslugaKina { public void zajmijmiejsca() { System.out.println("Obsluga wpuszcza kinomaniakow na sale."); } public void uruchomprojektor() { System.out.println("Obsluga kina uruchamia projektor i przewija reklamy!"); } }
Praktyczny przykład cz.2 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <bean id="obslugakina" class="com.test.spring.obslugakina"/> <aop:config> <aop:aspect ref="obslugakina"> <aop:pointcut id="seans" expression="execution(* com.test.spring.seans.start())"/> <aop:before pointcut="seans" method=zajmijmiejsca()/> </aop:aspect> </aop:config>
Praktyczny przykład cz.3 public class Seans { ObslugaKina pracuj = new ObslugaKina(); public void start() { pracuj.uruchomprojektor(); } }
Fabryki komponentów BeanFactory ApplicationContext obsługa zdarzeń, komunikatów ApplicationContext context = new ClassPathXmlApplicationContext("applicati on-config.xml"); ObslugaKina pracuj = (ObslugaKina) context.getbean("obslugakina");
Fabryki komponentów Dostarczają mechanizm zarządzania cyklem życia komponentu - InitializingBean - DisposableBean Oferują dwa tryby tworzenia komponentów: - singleton - prototype
Plan kolejnego wykładu Utrwalanie i dostęp do danych z wykorzystaniem Spring Hibernate Zarządzanie transakcjami Spring MVC Spring Web Flow Bezpieczeństwo Obsługa komunikatów w Springu
MATERIAŁY http://docs.oracle.com/javaee/6/tutorial/d oc/bnafd.html http://www.oracle.com/technetwork/java/ javaee/jsp/index.html http://www.tutorialspoint.com/spring/inde x.htm
Dziękuję za uwagę