logo_EMBEDIT_RGB.jpg PA165: Úvod do Java EE Petr Adámek logo_EMBEDIT_RGB.jpg Obsah přednášky •Organizace předmětu –Formy výuky –Hodnocení –Osnova •Java EE aplikace •Architektury Java EE aplikací •Technologie Java EE •Základní koncepty • 2 PA165: Úvod do Java EE logo_EMBEDIT_RGB.jpg ORGANIZACE PŘEDMĚTU • 3 PA165: Úvod do Java EE logo_EMBEDIT_RGB.jpg Formy výuky •Přednáška –Doporučená účast •Cvičení –Povinná účast –Příklady k probírané látce –Konzultace k projektům •Projekt –Řešený ve čtyřčlenných týmech –Kontrolní body –Průběžná práce během semestru – – – PA165: Úvod do Java EE 4 logo_EMBEDIT_RGB.jpg Hodnocení •Projekt: 70 bodů –Kontrolní body: 4x10 bodů –Obhajoba: 30 bodů •Závěrečná zkouška: 30 bodů • •Ukončení: –Zápočet: min. 60 bodů –Zkouška: min. 70 bodů – – PA165: Úvod do Java EE 5 logo_EMBEDIT_RGB.jpg Osnova předmětu •Úvod do Java EE (architektura, technologie, koncepty) •Perzistence dat (ORM, JPA, Spring JDBC, iBatis, Testování) •Aplikační logika (IoC, AOP, Transakce, Bezpečnost, Testování) •Prezentační vrstva (Webové frameworky, Stripes, Spring MVC, Wicket, JSF, Bezpečnost) •Integrační technologie (Webové služby SOAP, REST, JMS, RMI, IIOP, ESB) •Testování (jednotkové, integrační, funkční, akceptační, uživatelské přívětivosti, výkonnosti, bezpečnosti) PA165: Úvod do Java EE 6 logo_EMBEDIT_RGB.jpg Doporučené zdroje •Viz osnova předmětu • • • •Effective Java (2nd Edition) •Joshua Bloch •http://amazon.com/dp/0321356683/ •Ostatní viz osnova v IS • • PA165: Úvod do Java EE 7 logo_EMBEDIT_RGB.jpg PLATFORMA JAVA EE • PA165: Úvod do Java EE 8 logo_EMBEDIT_RGB.jpg Co je to platforma Java EE •Platforma pro vývoj moderních informačních systémů –Poskytuje potřebnou infrastrukturu –Průmyslový standard (JCP) –Aktuální verze je Java EE 6 (JSR 316) • •Podpora pro vývoj –Webových aplikací –Webových služeb –Vícevrstvých aplikací PA165: Úvod do Java EE 9 logo_EMBEDIT_RGB.jpg Charakteristika moderních IS •Složité, rozsáhlé a komplexní systémy •Nutnost integrace s ostatními systémy v rámci organizace i mimo ni •Přizpůsobitelnost požadavkům různých zákazníků •Provoz na různých platformách •Podpora pro velké množství klientů (zejména u webových aplikací) •Bezpečnost • PA165: Úvod do Java EE 10 logo_EMBEDIT_RGB.jpg Požadavky na vývoj IS •Rychlý vývoj •Snadná údržba •Snadná rozšiřitelnost a přizpůsobení •Snadná integrovatelnost s jinými systémy •Podpora pro agilní metodiky •Podpora pro týmový a multi-týmový vývoj •Přenositelnost –Různé SW i HW platformy, různé nástroje i aplikační servery •Škálovatelnost •Bezpečnost PA165: Úvod do Java EE 11 logo_EMBEDIT_RGB.jpg ZÁKLADNÍ KONCEPTY • PA165: Úvod do Java EE 12 logo_EMBEDIT_RGB.jpg Základní koncepty •Infrastruktura •Modularita •Nezávislost a nízká invazivnost •Deklarativní přístup •Dodržování obecných zásad pro vývoj udržovatelného kódu • PA165: Úvod do Java EE 13 logo_EMBEDIT_RGB.jpg Infrastruktura •Vývojář by se měl zaměřit na vlastní problémovou doménu a neměl by být nucen se zabývat obecnými problémy, které je nutné řešit v každé aplikaci. –Architektura aplikace, bezpečnost, řízení transakcí, perzistence dat, komunikace a integrace, vzdálený přístup, infrastruktura prezentační vrstvy, lokalizace, atd. •Platforma Java EE a na ní postavené aplikační rámce (frameworky) proto nabízejí potřebnou infrastrukturu. • •Nikdy neimplementujte svůj vlastní framework! – PA165: Úvod do Java EE 14 logo_EMBEDIT_RGB.jpg Modularita •Aplikace je vyvíjena jako množina spolupracujících komponent •Komponenty by měly –Být volně propojené (loosely coupled), tj. mělo by mezi nimi být co nejméně závislostí –Být znovupoužitelné (ať už pouze v rámci projektu, nebo i mimo něj) –Mít dobře navržené rozhraní –Být dobře otestované •Pokud máme množinu dobře navržených komponent, je snadné měnit a přizpůsobovat chování aplikace –Výměnou komponenty –Změnou konfigurace komponenty –Změnou propojení mezi komponentami PA165: Úvod do Java EE 15 logo_EMBEDIT_RGB.jpg Nezávislost a nízká invazivnost •Komponenty by měly být nezávislé nejenom mezi sebou, ale také na konkrétních technologiích a aplikačních rámcích •To zjednodušuje údržbu a zvyšuje znovupoužitelnost •Koncept POJO komponent • PA165: Úvod do Java EE 16 logo_EMBEDIT_RGB.jpg Deklarativní přístup •Určité aspekty chování programu nejsou definovány tradičním imperativním kódem (tj. posloupností příkazů jak se to má udělat), ale specifikací cíle (tj. co se má udělat). •To vede ke zjednodušení a zpřehlednění kódu. •Vhodné např. pro řízení transakcí, řízení bezpečnosti a přístupových práv, automatické konverze, různá automatická mapování, apod. •Vlastní deklarace požadovaného chování může být umístěna –V popisovači nasazení (deployment descriptor) –Přímo v kódu prostřednictvím anotace (modernější a preferovaný přístup) – PA165: Úvod do Java EE 17 logo_EMBEDIT_RGB.jpg Imperativní řízení transakcí •public void someMethod() { • • UserTransaction transaction = context.getUserTransaction(); • • try { • transaction.begin(); • doSomething(); • transaction.commit(); • } catch (Exception ex){ • try { • transaction.rollback(); • } catch (SystemException syex){ • throw new EJBException • ("Rollback failed: " + syex.getMessage()); • } • throw new EJBException • ("Transaction failed: " + ex.getMessage()); • } •} • PA165: Úvod do Java EE 18 logo_EMBEDIT_RGB.jpg Deklarativní řízení transakcí •@TransactionAttribute(TransactionAttributeType.RequiresNew) •public void someMethod() { • doSomething(); •} PA165: Úvod do Java EE 19 logo_EMBEDIT_RGB.jpg Jak to bylo v dřívějších verzích •První verze platformy Java EE byly zaměřeny zejména na infrastrukturu a technologie. •Snadnost vývoje byla podceňována –Složité technologie se složitým použitím –strmá učící křivka –Nutnost používání složitých nástrojů •To vedlo k frustraci vývojářů a ke vzniku alternativních přístupů a technologií (Hibernate, Spring) •Změna přišla s Java EE 5 –Silná inspirace nástroji Spring, Hibernate, apod. –Anotance –POJO komponenty PA165: Úvod do Java EE 20 logo_EMBEDIT_RGB.jpg ARCHITEKTURA & TECHNOLOGIE • PA165: Úvod do Java EE 21 logo_EMBEDIT_RGB.jpg PA165: Úvod do Java EE 22 Integrační vrstva (EIS Tear) Jiný IS Databáze Aplikační vrstva (Business Tier) Webová vrstva (Web tier) Klientská vrstva (Client Tier) Spring EJB Desktop application Web Browser Mobile application Servlety JSP JDBC ORM JSF logo_EMBEDIT_RGB.jpg Prezentační vrstva •Desktopové aplikace –Swing –AWT –SWT –Java Web Start • •Mobilní aplikace –Java ME –Android/iOS/BlackBerry OS/Windows Phone • •Webové aplikace –Servlety, JSP, JSTL –MVC frameworky •Request based (Struts, Stripes, Spring MVC) •Component based (JSF, Tapestery, Wicket) –Portlety –Aplety • 23 © 2012 Petr Adámek logo_EMBEDIT_RGB.jpg Aplikační logika •Obyčejná knihovna tříd –Pro větší aplikace nevhodné řešení – •EJB –Vyžaduje aplikační server s podporou EJB nebo EJB lite. • •Spring framework –Není standardní součástí Java EE –Přesto je velmi oblíbený –Není invazivní 24 © 2012 Petr Adámek logo_EMBEDIT_RGB.jpg Persistence dat •JDBC –Univerzální API pro přístup k DB –Těžkopádné na přímé používání •Template Method •Spring JDBC •Commons DB •RowSet •ORM –Standard JPA (aktuálně JPA 2.0) –Hibernate, TopLink, Eclipse Link •Zastaralé technologie –EJB 2.x –JDO • – 25 © 2012 Petr Adámek logo_EMBEDIT_RGB.jpg Aplikační servery •Open Source – plnohodnotné –JBoss –Glassfish • •Open Source – pouze servlet kontejner –Tomcat –Jetty • •Komerční –WebSphere (IBM) –WebLogic (Oracle, dříve BEA) 26 © 2012 Petr Adámek logo_EMBEDIT_RGB.jpg Závěr •? 27 © 2012 Petr Adámek