1 / 80

Java a J2EE

Java a J2EE. Peter Blšták. Obsah. Java charakteristika JavaBeans JDBC edície a verzie JEE (J2EE) špecifikácia JEE (JEE APIs) JEE kontajnery Java Servlets, JSP EJB. Java. Java. OO programovací jazyk (+ nástroje a knižnice) organizovanie programu do tried (objektov)

yachi
Download Presentation

Java a J2EE

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Java a J2EE Peter Blšták

  2. Obsah • Java • charakteristika • JavaBeans • JDBC • edície a verzie • JEE (J2EE) • špecifikácia JEE (JEE APIs) • JEE kontajnery • Java Servlets, JSP • EJB

  3. Java

  4. Java • OO programovací jazyk (+ nástroje a knižnice) • organizovanie programu do tried (objektov) • držia svoj stav (atribúty) • vykonávajú funkčnosť, príp. menia svoj stav (metódy) • interagujú s inými objektami (asociácie, referencie, metódy) • syntax podobná C++ • interpretovaný (multiplatformový) • kompilovanie do tvaru Java bytecode • *.java -> *.class • JVM (Java Virtual Machine) – interpreter bytecode • Windows, Linux / Unix, MAC, mobilné zariadenia, ...

  5. Java (vs. C++) • packages (balíky) • triedy sú organizované do namespace-ov (balíkov) • triede – súbor z názvom triedy • balík – adresárová štruktúra • java.lang.Object – trieda • /java/lang/Object.java (v src) • /java/lang/Object.class (v classes) • všetky objekty dedia od java.lang.Object • takmer všetko je objekt (okrem jednoduchých typov int, doube, ...)

  6. Java (vs. C++) • referencie (nemá pointre) • garbage collection • bez destructor-ov a delete • JVM runtime – odstraňovanie objektov bez referencie naň • jednoduchá dedičnosť + interface-y • všetky metódy ako „C++ virtual“ • polymorfizmus (tak ako sa patrí) • nemáme header súbory (*.h, *.hpp) • javadoc (generovanie)

  7. Java trieda – príklad package sk.tf.development.model; import java.lang.RuntimeException; import sk.tf.core.actions.*; public class Kniha extends PersistentObject implements Serializable, ContextListner { private String ciarovyKod; private BigDecimal cena; private Vector vypozicky; public void removeVypozicky(ActionContext context, Vector vypozicky) { … } }

  8. Java (vs. C++) • štandardné knižnice • ADT (Vector, List, Collection, Set, Array, ...) • thread synchronization, networking, logging, internationalization • reflection, dynamic-proxies • AWT, Swing (grafické komponenty) • XML (SAX, DOM, XSLT) • JavaBeans • JDBC, Corba, ... (enterprise features) • modifikácia bytecode (=> rutime enhancements) • exceptions (checked, runtime) • java.lang.Exception • java.lang.RuntimeException

  9. Java 5 – zaujímavé vlastnosti • anotácie • dodatočné informácie k Java kódu • využívané pri preklade alebo runtime @Overrideprotected void renderComponent(...) • generické (template) typy private Collection<Objednavka> objednavky; • enumerácie ~ štruktúrovaný typ • Scripting – podpora pre skriptovacie jazyky • jRuby, Groovy, Mozilla Rhino …

  10. JAR – Java ARchive • knižničný súbor • skompilované Java objekty • ďalšie zdroje (*.gif, *.properties, ...) • ZIP s koncovkou jar • classpath • vykonanie alebo skompilovanie programu • definuje cestu k triedam a ďalším zdrojom (*.class, *.jar, ...)

  11. JavaBeans • POJO (Plain Old Java Object) • názvové a štrukturálne konvencie pre triedu • verejná trieda s verejným prázdnym konštruktorom • atribúty: private Type xxx; • metódy: public Type getXxx(); public void setXxx(Type xxx); • Java poskytuje API na manipuláciu s vlastnosťami na základe mena (reflection)

  12. JavaBeans – príklad public class Kniha extends PersistentObject { private StringciarovyKod; private BigDecimal cena; … public Kniha() { … } public StringgetCiarovyKod() { return ciarovyKod; } public void setCiarovyKod(String ciarovyKod) { this.ciarovyKod = ciarovyKod; } public BigDecimal getCena() { return cena; } public void setCiarovyKod(BigDecimal cena) { this.cena = cena; } … }

  13. JDBC • Java DataBase Connectivity • API – unifikovaný prístup k RDBMS • odtieňuje aplikáciu od použitého RDBMS a jeho špecifických vlastností • preklad SQL do natívnych SQL dotazov • abstraktné volania a štruktúry (ResultSet, Connection) • zvýšenie výkonu • zabezpečuje connection pooling • JDBC driver pre konkrétny RDBMS • JDBC-ODBC bridge • MS SQL Server – net.sourceforge.jtds.jdbc.Driver • MySQL – org.gjt.mm.mysql.Driver

  14. JDBC – príklad public Vector getBalances() throws AccountException { try { Connection conn = getConnection(); PreparedStatementpstmt = conn.prepareStatement(“SELECT*FROM account WHERE balace > ?"); pstmt.setDouble(1, 20000.0); ResultSet rs = pstmt.executeQuery(); while (rs.next()) { result.add(rs.getDouble(“balance")); } return result; }catch (Exception e) { throw new AccountException(e); }finally { try { if (pstmt != null) pstmt.close(); }catch (Exception e) {} try { if (conn != null) conn.close(); }catch (Exception e) {} } }

  15. JDBC – príklad protected Connection getConnection() { Class.forName(“org.gjt.mm.mysql.Driver”); String url = "jdbc:mysql://localhost:3306/dbname"; returnDriverManager.getConnection(url, “username", “password"); } protected Connection getConnection() { Context ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/appDS"); return ds.getConnection(); }

  16. Java edície a ich verzie • JRE – Java Runtime Environment • JVM a základné knižnice potrebné pre vykonávanie programov • JSE – Standard Eddition • vývoj stand-alone (desktop) aplikácií • JRE, štandardné knižnice, zdrojové súbory a nástroje (javac, javadoc, ...)

  17. Java edície a ich verzie • JME – Micro Eddition • vývoj aplikácií pre mobilné zariadenia (mobilné zariadenia – mobilné telefóny, PDA) • zariadenia majú predinštalované runtime prostredie • nástroje pre simuláciu mobilných zariadení • JEE – Enterprise Eddition • vývoj podnikových aplikácií • knižnice pre podnikové aplikácie, kontajnery, ... • nadstavba nad JSE (neobsahuje JRE, javac, jar)

  18. Java edície a ich verzie • JSE ~ JRE • súčasnosť • Java ME • CLDC 1.1 - Connected Limited Device Configuration • CDC 1.1 - Connected Device Configuration • Java SE 1.4.x,5 (1.5.x) a 6 • JDK – Java Development Kit • Java EE 1.3,1.4, 5

  19. Java Platform Enterprise Eddition

  20. JEE • The mission of JEE is to provide aplatform-independent, portable, multiuser, secure, and standard enterpriseclassplatform for server-side deployments written in the Java language. • JEE is a specification, not a product. • JEE definuje • programové rozhrania (APIs) • runtime environment (JEE kontajner) • čo majú poskytovať • ako sa majú používať

  21. Architektúra JEE aplikácií

  22. JEE kontajnery

  23. JEE APIs – z JSE • JDBC API 3.0 • Java DataBase Connectivity • RMI-IIOP • Remote Method Invocation over the Internet Inter-ORB Protocol • JNDI • Java Naming and Directory Interface • JAXP 1.2 • Java API for XML Processing • JAAS • Java Authentication and Authorization Service

  24. JEE APIs – core • EJB 3.0 (2.1) 001 • Enterprise JavaBeans Technology • Servlet 2.5 010 • Java Servlet Technology • JSP 2.1 010 • JavaServer Pages Technology • JMS 1.1 111 • Java Message Service • JTA a JPA 011 • Java Transaction API a Java Persistance API

  25. JEE APIs – WebServices • JAX-WS 2.0 111 • Java API for XML-Based Web Services • JAX-RPC 1.1 111 • Java API for XML-Based RPC • JAXB 2.0 111 • Java Architecture for XML Binding • SAAJ 1.2 111 • SOAP with Attachments API for Java • JAXR 1.0 111 • Java API for XML Registries (ebXML, UDDI)

  26. JEE APIs – iné • JavaMail 1.3 111 • JavaMailAPI • JAF 1.1 111 • JavaBeans Activation Framework • JCA 1.5 011 • J2EE Connector Architecture

  27. JEE APIs – iné • J2EE Management 1.0 1011 • JMX 1.2 1011 • Java Management Extensions • JACC 1.0 0011 • Java Authorization Contract for Containers

  28. WEB aplikácie

  29. WEB aplikácie • Java Servlets • servlet • filter • JavaServer Pages – JSP • JSP stránky • tag libraries • JSTL, Struts tag libs, ... • custom tag libs • JavaServer Faces– JSF • Komponentový prístup pre vývoj web aplikácií • WEB (Servlet) kontajner

  30. Servlet • podobné CGI, perl, ... • obsluha požiadaviek na základe request-u a generovanie response (HTML, XML, PDF, ...) • tvorba WEB (prezentačnej vrstvy) aplikácie • Java trieda odvodená od • javax.servlet.Servlet • javax.servlet.http.HttpServlet • HttpServlet • metódy volané WEB (Servlet) kontajnerom • doGet(HttpServletRequest, HttpServletResponse) • doPost(HttpServletRequest, HttpServletResponse) • ...

  31. HttpServletRequest • reprezentuje HTTP request • HTTP parametre (GET, POST), hlavičky, ... • getParameter(String name) • getHeaders() • getCookies() • getLocale(), getContentType() • security • getRemoteUser() • getUserPrincipal() • isUserInRole(String role) • informácie o klientovi a contexte (IP, URL)

  32. HttpServletResponse • reprezentuje HTTP response a jeho obsah • getWriter() • getOutputStream() • setContentType(String contentType) • addHeader(String name, String value) • addCookie(Cookie) • redirection • setStatus(int status) • sendRedirect(String location)

  33. Ďalšie objekty Servlet API • HttpSession • perzistetné atribúty, ktoré sa vzťahujú k jednému používateľovi (sedenie) • getCreationTime() • getLastAccessTime() • getId() • ServletContext • globálne informácie pre danú aplikáciu (nepoužívať static premenné) • informácie o serveri, kontexte a zdrojoch servera

  34. package examples; public class SearchAlbumServlet extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { List albums = Album.findNamed(request.getParameter("name")); PrintWriter out = response.getWriter(); out.write(“<html><body><h1>Found albums:</h1>”); for (int i = 0; i < albums; i++) { Album album = (Album)albums.get(i); out.write(“<li>” + album.getName() ); } out.write(“</body></html>”); } } Servlet – príklad http://www.site.sk/app/searchAlbum?name=Rounds

  35. Filter • wrapper requestov • doFilter(request, response, ...) • realizácia aspektov (AOP ???) • Authentication • Logging and Auditing • Image conversion • Data compression • Encryption • XSL/T

  36. Filter – príklad public class AuditFilter implements Filter { public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { AuditHelper auditHelper = getAuditHelper(request); if (auditHelper != null) { auditHelper.audit(request); } // Pass control on to the next filter chain.doFilter(request, response); } }

  37. JSP– JavaServer Pages • principiálne podobné k PHP, ASP, ... • statické HTML s dynamicky generovanými časťami • scriptlety (časť JSP medzi<% … %>) • out, response, request premenné • JSP tagy • sprehľadnenie generovaného HTML • zrýchlenie vývoja • GUI design (možnosť použiť WYSIWYG nástroje) • programovanie • JSP je v runtime Servlet

  38. JSP tag libraries • knižnice (jar) špecializovaných JSP tagov • sprehľadnenie kódu (JSP) • zlepšenie udržiavateľnosti • JSTL – Java Standard Tag Libraries • štandardná knižnica od Sun-u • custom libraries • Struts (bean, logic, html, nested) • jakarta tag libraries (SQL, ...) • definícia – *.tld súbor • class, name, attributes, scripting variables, ...

  39. JSP – príklad <%@page import=“example.ArtistHelper" %> <HTML> … static HTML … <UL> <% ArtistHelperhelper = (ArtistHelper) request.getAttribute("helper"); for (int i = 0; i < helper.getAlbums().size(); i++) { out.print("<LI> "); out.print(((Album)helper.getAlbums().get(i)).getTitle()) out.print("</LI> "); } %> </UL> </HTML>

  40. JSP – príklad <%@taglib uri="/taglibs/struts-bean" prefix="bean" %> <bean:define id="form" name="changePasswordForm" type="yonban.promasus.view.ChangePasswordForm" /> <html:form action="<%= form.getFormAction() %>“> <h1><bean:message key="title.changePassword" /></h1> <table cellpadding="5" cellspacing="0" border="0"> <nested:nest property="item"> <tr> <td><bean:messagekey="text.oldPassword" />:</td> <td><nested:password property="oldPassword" redisplay="false"/> </td> </tr> ... </table> </html:form>

  41. WEB (Servlet) kontajner • runtime prostredie pre servlety, JSP, filtre • mapovanie URL na komponenty • security • API • WEB aplikácie • deployment v podobe .war súboru • .war (Web ARchive) – zip s koncovkou war • web.xml – deskriptor WEB komponentov • príklady kontajnerov – Tomcat, Resin

  42. Štruktúra WAR / kontext root JSP, HTML,obrázky /META-INF/MANIFEST.MF /WEB-INF/classes/ súčasť classpath /WEB-INF/lib/ súčasť classpath /WEB-INF/web.xml deskriptor /WEB-INF/jboss-web.xml vendor specific deskriptor

  43. WEB deskriptor – web.xml • definícia servletov a filtrov a ich inicializačných parametrov • mapovanie URL – servlet • mapovanie URL – filter • definícia JSP tag libraries • definícia security • definícia parametrov contextu (aplikácie) • ...

  44. web.xml – príklad <servlet> <servlet-name>SearchAlbumServlet</servlet-name> <servlet-class>examples.SearchAlbumServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>SearchAlbumServlet</servlet-name> <url-pattern>/searchAlbum</url-pattern> (/*.do, /secure/*) </servlet-mapping> ... <taglib> <taglib-uri>/taglibs/struts-bean</taglib-uri> <taglib-location>/WEB-INF/tld/struts-bean.tld</taglib-location> </taglib> ...

  45. EJB

  46. EJB • realizácia business logiky podnikových aplikácií • komponentovo orientované riešenia • znovupoužitie komponentov (reusing) • komponent = Enterprise JavaBeans (EJB) • Session EJB • Session Bean WebService • Entity EJB • MessageDriven EJB • EJB kontajner

More Related