Java a J2EE Lukáš Marek lukas.marek@cleverlance.com
Agenda: Java ve zkratce architektura aplikací aplikaèní servery a Enterprise Java DEMO enterprise aplikace zajímavé produkty vývojová IDE Java a J2EE
Co je Java Java Plnì objektovì orientovaný jazyk Zdrojový kód je pøekládán do platformovì nezávislého byte-code Byte-code je interpretován v Java Virtual Machine (JVM) Pro každou platformu musí být specifická JVM existují JVM rùzných výrobcù (Sun, IBM, Blackdown, GNU Kaffe)
Java Java aplikace Java Virtual Machine Operaèní systém Hardware
Architektura Client - server server - C/C++.. client - C/C++.. Thin client server - WebForms, PHP... client - HTML
Architektura Výhody: - oddìlení obchodní logiky od dat - oddìlení obchodní a prezentaèní logiky - více typù klientù sdílí jednu obchodní logiku client business logic data storage
J2EE Co to je? aplikaèní server poskytuje kompletní tzv. middleware middle-ware = database connection, resource pooling, security, transactions, session-tracking, location transparency Komponenty: distribuované objekty rozdìl a panuj Proè J2EE standard? stejný kód funguje na rùzných platformách stejný kód funguje v aplikaèních serverech rùzných výrobcù platformy i AS jsou snadno porovnatelné z hlediska vlastností i výkonu
Co to je 'Enterprise' Java? J2EE Klíèová API: JDBC, RMI/IIOP, JNDI, EJB, Servlets, JSP, JMS, JTA Rozšiøující API: JAXP, JAAS, JCA, JavaMail, JMX Aplikaèní kontejner = RMI/IIOP + JNDI + EJB + JMS + JTA + JDBC Webový kontejner = Servlets + JSP
EJB - serverová komponenta EJB Session EJB reprezentuje logiku - akci, výpoèet apod. stateless, statefull Entity EJB reprezentuje data je persistentní mùže být ukládána programovì (BMP) nebo pomocí kontejneru (CMP) Message-driven EJB reakce na asynchronní (JMS) zprávu
EJB - distribuovaný objekt EJB objekt net stub skeleton stub, skeleton - objekty pro pøenos informací pøes sí client ani objekt nemusí obsahovat komunikaèní logiku nezávislost na použitém sí ovém (http, rmi) ani "datovém" (CORBA, XML-RPC) protokolu
J2EE client SOAP, UDDI, IIOP... HTTP (HTML, WML)... browser EJB EJB JSP JCA DB JMS legacy
DEMO
distribuované transakce Chyba: let je již obsazen X DB ck DB hotel DB ÈSA Java a J2EE obtížnì øešitelný chybový stav vìtšinou vyžaduje lidský zásah Øešení = distribuované transakce nároèné na prostøedky musí být podporováno db øešeno pomocí JTA
infrastruktura Java a J2EE DB lbb klient webserver AS ldap
Aplikaèní server JBoss jboss Základ tvoøí 30kb mikrokernel, zbytek dokonale modulární Jako web kontejner lze použít Tomcat nebo Jetty, pro jednoduší instalaci existují pøedkonfigurované verze Clustering - propracovaný systém pro škálovatelnost výkonu, clusterované JNDI, ošetøení výpadku a load balancing RMI všech EJB typù a èásteènì MDB, replikace SFSB http://www.jboss.org
JSP a servlety umí: umí oddìlit prezentaèní a business logiku resource pooling Java a J2EE JSP a servlety neumí: sdílet logiku pro více frontendù data caching, distribuované objekty apod. kdy NEPOUŽÍT EJB: když je potøeba aplikaci udìlat relativnì rychle když je potøeba udìlat relativnì jednoduchou aplikaci
Java Database Connection standardní API pro pøístup k databázi pøístup je realizován JDBC driverem více typù driverù (JDBC-ODBC bridge) pøístup ke všem relaèním databázím je unifikován možnost rozšiøování standardní cestou transparentní pøipojení k více databázím (URL) JDBC Ukázka kódu
Java a J2EE TagLibs možnost definovat vlastní JSP tagy tag je normální Java tøída, implementující urèitý interface Jakarta taglibs sada JSP tagù, øešící obvyklé situace - pøístup k databázi, internacionalizace, logování, I/O operace apod. <i18n:ifndef key="specialdisclaimer"> <H3>DISCLAIMER</H3> <i18n:message key="specialdisclaimer" /> Only those locales that do NOT have a specialdisclaimer key in their ResourceBundle will see the special disclaimer text. </i18n:ifndef>
MVC Model-View-Control standardní design pattern model - logika a øízení toku programu (data) control - ovládací prvky view - prezentace dat Java a J2EE Jakarta Struts open-source implementace MVC pro JSP stránky <th align="right"> <bean:message key="prompt.username"/> </th> <td align="left"> <html:text property="username" size="16"/> </td> <action path="/logon" type="example.logonaction" name="logonform" scope="request" input="/logon.jsp" unknown="false" validate="true" />
rychlost Javy http://dada.perl.it/shootout
IDE 100% pure Java subjektivnì pomalejší, potøebují více pamìti. využití vlastností jazyka - pro zobrazení tøíd, závislostí tøíd, inteligentní doplòování kódu, ladìní. vìtšinou umožòují snadnou tvorbu pluginù v Javì. Netbeans (Forte), JBuilder... nativní rychlejší, potøebují málo pamìti. nenabízí takové možnosti jako èistì Javové IDE. JCreator... kombinace kombinuje vlastnosti obou typù prostøedí Eclipse, Visual Age
Resources: Java a J2EE http://java.sun.com http://jakarta.apache.org http://www.builder.cz http://dione.zcu.cz/java/ http://www.techware.cz http://www.netbeans.org http://www.eclipse.org http://www.intellij.com