KIV/PIA 2013 Jan Tichava

Podobné dokumenty
Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz

NOVINKY V JEE EJB 3.1. Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze

JavaServer Faces Zdeněk Troníček

Technology Entry form Entry up-to-date? Internal links Faulty internal Possible internal links

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Servlety a JSP. Petr Adámek, petr.adamek@ibacz.eu

Platformy / technologie. Jaroslav Žáček jaroslav.zacek@osu.cz

Spring framework 2.0. Roman Pichlík CZJUG

Tvorba informačních systémů

public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text());

1. Distribuce Javy. 2. Vlastnosti J2EE aplikace. 3. Fyzická architektura J2EE aplikace. Distribuce Javy se liší podle jejího zamýšleného použití:

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

(Enterprise) JavaBeans. Lekce 7

Tvorba podnikových aplikací v jazyce JAVA. Josef Pavlíček KII PEF CZU

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Platformy / technologie. Jaroslav Žáček

Platforma J2EE. Lukáš Zapletal liberix.cz. Platforma Java 2 Enterprise Edition

Technologie Java. Jaroslav Žáček

PLATFORMY / TECHNOLOGIE JAROSLAV ŽÁČEK

Enterprise Java Beans 3.0

Vybrané partie z jazyka Java Spring a Enterprise JavaBeans (EJB)

Navrhněte a implementujte webový portál pro milovníky čokolády. Proveďte analýzu současných řešení a zdůvodněte návrh vlastního řešení.

Úvod. Petr Aubrecht (CA) Martin Ptáček (Wincor Nixdorf) Je 10 typů lidí: ti, kteří znají binární kód, a ti, kteří ne.

PA165: Úvod do Java EE. Petr Adámek

Tvorba informačních systémů

Další vlastnosti Springu Moduly Springu. Spring Framework. Pavel Mička. Pavel Mička Spring Framework 1/18

Semináˇr Java X J2EE Semináˇr Java X p.1/23

Co je nového v Java EE 6

Anotace a Hibernate. Aleš Nosek Ondřej Vadinský Daniel Krátký

Architektury informačních systémů

Architektury informačních systémů

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

KIV/PIA Semestrální práce

Web Services na SOAP

RESTful web service v Javě

UJO Framework. revoluční architektura beans. verze

X33EJA Enterprise Java

Platformy / technologie. Jaroslav Žáček

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15

JAVA. Aspekty (AOP) AspectJ

X36WWW. Technologie aplikačních serverů. Miroslav Bureš,, Martin Klíma. X36WWW: 12. přednáška 1

Object-relational mapping (JPA, Hibernate)

Databázové a informační systémy

Java Server-side. Štěpán Kuchař. VŠB-TUO FEI Katedra informatiky

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Server-side technologie pro webové aplikace

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Přizpůsobení JSTL pro Google App Engine Datastore

Vývojařská Plzeň AngularJS

Spring portfolio. Tomáš Krátký

Tvorba informačních systémů

Michal Krátký, Miroslav Beneš

Zabezpečení webové vrstvy a EJB projektu Část nastavení specifická pro Glassfish, část dána Java EE

Multiplatformní osobní organizér v jazyce Java

Vhodnost nasazení jednotlivých webových architektur, sdílení dat, perzistence, webové služby a REST, asynchronnost, messaging

Session Beans. Petr Aubrecht CA. Vtipy budou tentokrát o krizi:

E LEARNINGOVÁ WEBOVÁ APLIKACE PRO VÝUKU BIOMEDICÍNSKÉHO INŽENÝRSTVÍ Petr Huňka

Architektura aplikace

Java a Caché IV: Manipulace s objekty

Softwarové komponenty a Internet

UNIVERZITA PARDUBICE. Fakulta elektrotechniky a informatiky. Online galerie: využití J2EE s JPA Petr Bludský

RESTful API TAMZ 1. Cvičení 11

A7B39WPA Webové podnikové aplikace. Zdeněk Kouba Petr Aubrecht Petr Křemen

SPECIFIKACE PŘEDMĚTU PLNĚNÍ

KAPITOLA 3. Architektura aplikací na frameworku Rails. V této kapitole: modely, pohledy, řadiče.

Fakulta elektrotechnická. Bc. Petr Halaška. Studijní program: Elektrotechnika a informatika, strukturovaný, Navazující magisterský

GWT pro pokročilé. MoroSystems, s.r.o. Pavel Klobása. Senior Java Developer.

DPKOM_06 Dědičnost entit a zpětná volání posluchači

Tvorba informačních systémů

Oddělení webového a aplikačního serveru. Běží zde několik aplikací.

Návrhové vzory pro J2EE. Miroslav Beneš

Technologie JavaBeans

Podpora aplikační logiky v J2EE aplikačních rámcích

Platforma J2EE. Lukáš Zapletal liberix.cz. Platforma Java 2 Enterprise Edition vývoj webových aplikací

Návrhové vzory pro J2EE

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Distribuované systémy a výpočty

JAVA V Hibernate Java, letní semestr

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

Web Frameworks Java Server Faces. Petr Aubrecht CA

Obsah přednášky. Technologie. Enterprise Java Beans. Enterprise Java Beans. EJB kontejner. Enterprise Java Beans (EJB)

Technologie Java. Jaroslav Žáček

Možnosti návrhu webových aplikací. Lukáš Gemela, A11N0101P

Základy Guice Vazby Scopes. Google Guice. základní seznámení s frameworkem Google Guice

Ruby on Rails: zapomeňte na Javu

Databáze EMS podacích lístků

Převod LN aplikace do xpages

UNIVERZITA PARDUBICE DOPRAVNÍ FAKULTA JANA PERNERA

Tvorba informačních systémů

UNIVERZITA PARDUBICE

Transaction API + webové frameworky + další poznámky. Petr Aubrecht CA

Spring Framework Handout

Tvorba informačních systémů

Jalapeño: pekelně ostrá Java persistence v Caché. Daniel Kutáč Senior Sales Engineer

Tvorba informačních systémů na platformě J2EE Petr Hetmánek Masarykova Univerzita, Fakulta Informatiky, Botanická 68a, Brno

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

Tvorba informačních systémů

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Transkript:

KIV/PIA 2013 Jan Tichava

Java EE JSF, PrimeFaces Spring JPA, EclipseLink

Java Platform, Enterprise Edition

Persistence Zobrazovací vrstva Interakce aplikací Deployment Java Persistence API Enterprise Java Beans JavaServer Faces Servlety, JSP Java Messaging System Webové služby EAR, WAR, RAR Anotace namísto některých deskriptorů Nástroje Zpracování XML, JavaMail API, JNDI, JAAS a další

http://docs.oracle.com/javaee/7/tutorial/doc/overview008.htm

JavaServer Pages Standard Tag Library JavaServer Faces JavaServer Pages JavaServlet

Java Server Faces

Framework webové prezentační vrstvy Komponentový model (rozšiřitelný) Událostně řízené programování Sada základních UI komponent Aktuální verze: 2.2.4 Počátky v roce 2001 2004 JSF 1.0 2009 JSF 2.0 2013 JSF 2.2

Čistě oddělené chování a prezentace Stav uchován na úrovni komponent Snadná vazba uživatelských událostí na kód na straně serveru Několik implementací ICEfaces MyFaces RichFaces PrimeFaces

Velký framework Náročnější na prostředky Náročnější na naučení Nevhodné defaultní chybové hlášky Komplikovaný pokud funguje super pokud nefunguje problém POST Potřeba dalších frameworků

Výhody Nevýhody Výhody Nevýhody

Automatické vytváření JavaBeans Serializovatelné gettery/settery Konstruktor bez argumentů Různé rozsahy platnosti application, session, view, request Validace dat a obsluha událostí Udržování kontextu stránky @PostConstruct

Uzavřen do #{ } Typy výrazů Value Expression Hledá se hodnota rvalue, lvalue Doporučuje se vždy poskytovat getter i setter <h:inputtext value= #{user.name} /> Method Expression Hledá se metoda <h:commandbutton action= #{user.save} />

#{user.property} private T property; public T getproperty(); public void setproperty(t o); #{user.booleanproperty} private boolean booleanproperty; public boolean isbooleanproperty() public boolean getbooleanproperty(); public void setbooleanproperty(boolean value);

Akce uživatele Prohlížeč zobrazí Prohlížeč odešle HTTP odpověď HTTP požadavek Zpracování na serveru

JSP File jspinit() Servlet File Request Life Cycle Request _jspservice() Servlet Class Response jspdestroy()

Response Complete RC Faces Request Restore View Apply Requests Render Response Process Events Process Validations Response Complete Process Events Response Complete Faces Response Render Response Process Events Invoke Application Process Events Update Model Values Conversion Errors/Render Response Validation/Conversion Errors/Render Response

Model Managed Bean View JSF UI komponenty Controller Faces Servlet

PATŘÍ Události Formátování výstupu Validace Navigace Lokalizace Zobrazování chyb Volání business logiky NEPATŘÍ Operace nad DB Výpočty Business logika Transakce

MVC Prezentační vrstva Business logika UI JSF stránky Managed Beans EJB komponenty Komunikace s DB Databáze JSF EJB

The myth says one day a JSF component library will come and rule them all

Prime Teknoloji, podzim 2008 http://primefaces.org/ PrimeMobile Open-Source Enterprise Lightweight Zero Configuration Easy to Use No Required Dependencies Single JAR Maximum Productivity

100+ UI komponent HTML5 AJAX Server API: JSF 2.2 Klient API: jquery Témata (skiny) inspirací pro IceFaces Push notifikace

Stable 4.0.0 4.0.4 RoadMap polovina 2013.NET 1. čtvrtletí 2014 4.1 PrimeUI PrimeFaces Extensions

Let's build a better Enterprise

open-source framework historie červen 2003 první verze březen 2004 verze 1.0 listopad 2013 verze 3.2.5 budoucnost konec roku 2013 verze 4.0 aktálně 4.0 RC1

modulární framework části vyvíjené nezávisle na sobě a nezávisle verzované

dependency injection transaction management webové aplikace, RESTful web service data access, messaging podpora pro JDBC, JPA, JMS AOP testování

úplné a rozšiřitelná podpora pro autentifikaci a autorizaci ochrana proti případným útokům integrace se Servlet API podpora ověřování vůči AD a LDAP

Spring Data JPA Spring Data MongoDB Spring Data JDBC Extensions Spring Data REST a další

Java Persistence API

od vývojářů EJB květen 2006 verze 1.0 mnoho implementací obsahuje: API javax.persistence Java Persistence Query Language (JPQL) ORM více informací: Java EE 7 Tutorial

jedna z implementaci JPA open-source EL byl referenční implementací JPA 2.0 eclipse.org/press-release/... verze 2.5.1

generování tabulka entita entita tabulka jednoduchý viewer databáze okamžitá kontrola entit zda v tabulce existuje sloupek s daným názvem

@Entity @Table(name = "users", schema = "pia") @NamedQuery(name = "User.findAll", query = "SELECT u FROM User u") public class User implements Serializable { private static final long serialversionuid = 1L; @Id @Column(unique = true, nullable = false) private Integer id; @Column(name = "user_name", nullable = false, length = 64) private String username; public Integer getid() { return this.id; } public void setid(integer id) { this.id = id; } } public String getusername() { return this.username; } public void setusername(string username) { this.username = username; }

Jednoduchý dotaz public List<Sensor> getsensors() { return this.em.createquery( "SELECT s FROM Sensor s ORDER BY s.id", Sensor.class).getResultList(); } Složitější dotaz public Temperature getlasttemperature(sensor sensor) { return this.em.createquery( "SELECT t FROM Temperature t WHERE t.sensor = :sensor ORDER BY t.observed DESC", Temperature.class).setParameter("sensor", sensor).setmaxresults(1).getsingleresult(); }

public Long gettemperaturerecordlastday(sensor sensor) { CriteriaBuilder criteriabuilder = this.em.getcriteriabuilder(); CriteriaQuery<Long> criteriaquery=criteriabuilder.createquery(long.class); Root<Temperature> temperaturelogroot=criteriaquery.from(temperature.class); Date before24hour=new Date(new Date().getTime()-TimeUnit.DAYS.toMillis(1)); Predicate predicatedate = criteriabuilder.greaterthanorequalto (temperaturelogroot.<date> get("observed"), before24hour); Predicate predicatesensor = criteriabuilder.equal(temperaturelogroot.get("sensor"), sensor); criteriaquery.select(criteriabuilder.count(temperaturelogroot)); criteriaquery.where(criteriabuilder.and(predicatedate, predicatesensor)); } return this.em.createquery(criteriaquery).getsingleresult();

Jednoduchá ukázková aplikace

<ui:param name="title" value="#{msg['admin.session.title']}" /> <ui:param name="icon" value="menu-session-32.png" /> <ui:define name="content"> <p:growl id="messages" showdetail="true"/> <p:datatable id="users" var="u" value="#{users.users}" selection="#{users <!-- <p:ajax event="rowselect" listener="#{users.onrowselect}" update=":f <p:ajax event="rowedit" listener="#{users.onedit}" update=":formdata:mess <p:ajax event="roweditcancel" listener="#{users.oncancel}" update=":formd <p:column headertext="#{msg['users.firstname']}"> <p:celleditor> <f:facet name="output"> <h:outputtext value="#{u.firstname}" /> </f:facet> <f:facet name="input"> <p:inputtext id="firstnameinput" value="#{u.firstname}" style="width:100%

Doplňující dotazy: zcu@tichava.cz Běžící ukázková aplikace: http://pia2013.tichava.cz V případě zájmu o tisk této prezentace napište, změním na šablonu vhodnější pro tisk. user/pass admin/a guest/g