[[oktatas:programozás:java_ee|< Java EE]] ====== A Java EE ====== * **Szerző:** Sallai András * Copyright (c) Sallai András, 2014, 2015 * Licenc: GNU Free Documentation License 1.3 * Web: http://szit.hu ===== Bevezetés ===== A Java fejlődése során szükségessé vált a különböző kiadások létrehozása. | Java SE | Java Standard Edition | hagyományos asztali alkalmazások \\ appletek | | Java ME | Java Micro Edition | a Java SE kisebb része \\ és mobilalkalmazásokhoz API | | Java EE | Java Enterprise Edition | legnagyobb méret, \\ tartalmazza a Java SE-t, \\ elosztott sokfelhasználós, vállalati méretű szoftverek | A Java EE a Java Enterprise Edition rövidítése. A Java EE egy programozói platform, amely a Java SE kiterjesztése. A Java EE több programozói könyvtárat tartalmaz, szemben a Java SE rendszerrel. Java Community Process Az első Java EE verziót 1999-ben a Sun Microsystems szállította, J2EE néven. Ez után a fejlesztés a **Java Community Process** kereteiben folytatódott, ahol **JSR dokumentumok** formájában készítenek ajánlásokat megvalósítás előtt. Így minden változat egy JSR ajánlásnak feleltethető meg. * J2EE 1.2 (1999) * J2EE 1.3 (2001) * J2EE 1.4 (2003) * Java EE 5 (2006) * Java EE 6 (2009) * Java EE 7 (2013) {{:oktatas:programozás:java_ee:java_ee_verziok.png|}} ===== Megoldandó feladatok ===== ==== Perzisztencia ==== Szeretnénk, ha az adatok leállás után is rendelkezésre állnának. Ezt általában egy relációs adatbázissal van megoldva. Ehhez szükség van adatbázis kapcsolatok támogatására. ==== Skálázhatóság ==== A növekvő terhelés esetén a rendszer nem lehet lassabb. Ha bírja a terhelést, azt mondjuk skálázható. {{:oktatas:programozás:java_ee:java_ee_skalazas.png|}} ==== Magas rendelkezésre állás ==== Szükség van a folyamatos rendelkezésre állásra. Ennek egyik eszköze lehet a klaszterezés. ==== Többszálúság ==== A többfelhasználós rendszereknek a terhelés elviselése fontos követelménye. Előnyös, ha programozónak nem kell leprogramoznia a szálkezelést. ==== Tranzakciókezelés ==== A tranzakciókezelés fontos az adatbázis rendszerek konzisztensen tartásához. ==== Távoli elérés ==== Webes felület. Távoli metódushívás. ==== Névszolgáltatás ==== Elosztott rendszerekben szükség van az objektumok és az erőforrások név alapján való elérésére, anélkül, hogy ismernénk a hálózati címét. ==== Aszinkron üzenetküldés ==== Ha a partner szervere áll az üzenet nem továbbítható. Azonban szükség van arra, hogy a partner gépének újraindulása után a gép megkapjon egy üzenetet. Ezt hívják lazacsatolásnak. ==== Biztonság ==== Többfelhasználós rendszereknél fontos a hozzáférés-vezérlés, az azonosítás, a hálózati kapcsolatok titkosítása. A programozónak nincs szüksége alapos kriptográfiai ismeretekre. ==== Monitorozás, beavatkozás ==== Szükséges lehet a folyamatok, események nyomon követése, hibakezelés, statisztika készítés, beavatkozás. A Java EE rendszerben ezeket úgynevezett middleware-szolgáltatásokkal oldjuk meg. Ehhez több technológia áll rendelkezésre. ===== Java EE technológiák ===== ^ Alacsony szintű szolgáltatások ^^ ^ Technológia ^ Szolgáltatás ^ | Java Transaction API (JTA) | tranzakciókezelés | | Java Persistence API (JPA) | perzisztencia | | Validation | osztály és metódusszintű megkötések és ellenőrzésük | | Java Message Service (JMS) | Aszinkron üzenetkezelés | | Java Naming and Directory Interface (JNDI) | névszolgáltatás | | Java Mail | e-mail küldés alkalmazásból | | JavaBeans Activation Framework | Java SE, MIME típusok kezelése | | XML processing | A telepítés opcionálisan XML leírókkal, \\ XML manipuláció, XML továbbítása | | JSON processing | a Java EE 7-ben új; JSON generálása, használata | | Java Connector Architecture (JCA) | távoli elérés, biztonság, többszálúság, \\ tranzakciókezelés, aszinkron üzenetkezelés | | Security services | azonosítás, hozzáférés kezelés | | Web services | SOAP és RESTful web szolgáltatások; XML Webszolgáltatások \\ XML alapú RPC | | Dependency Injection | erőforrások (adatok, komponensek, EJB, stb.) injektálása | | Management | Java Management Extensions (JMX) monitorozás és beavatkozás | | Deployment | a telepítési eszközök és a Java EE közötti specifikációk | | Java DataBase Connectivity (JDBC) | Perzisztencia | ^ Magasabb szinten ^^ ^ Technológi ^ Szolgáltatás ^ | JavaServlet | távoli elérés weben, többszálúság, biztonság | | JavaServer Pages (JSP) | távoli elérés weben, biztonság, többszálúság | | JavaServer Faces (JSF) | távoli elérés weben, biztonság, többszálúság | | Enterprise JavaBeans (EJB) | perzisztencia, többszálúság, távoli elérés, \\ tranzakciókezelés, aszinkron üzenetküldés, biztonság | ===== Többrétegű architektúra ===== {{:oktatas:programozás:java_ee:tobbretegu_architektura.png|}} ===== Java architektúra ===== {{:oktatas:programozás:java_ee:javaee_kontenerek.png|}} ===== Komponensek ===== * Applet * Alkalmazások * Webalkalmazások * Vállalati alkalmazások (Enterprise) ===== Konténerek ===== * Applet konténer * Alkalmazás kliens konténer * Web konténer * EJB konténer (üzleti logika) ===== Hálózati protokollok ===== * HTTP * HTTPS * RMI-IIOP Az RMI-IIOP rövidítésből az RMI a **Remote Method Invocation** szavakból van. Távoli metódushívás jelent. Engedélyezi a távoli objektumok elérését alacsonyabb szintű protokolloktól függetlenül. Magába foglalja a CORBA specifikációt. A Java EE alkalmazások a külső CORBA objektumok eléréséhez az **IIOP protokollt** használják. ===== Az alkalmazás szerver és a kapcsolódó rendszerek ===== {{:oktatas:programozás:java_ee:alkalmazasszerver_es_kapcsolodo_kliensek.png|}} {{:oktatas:programozás:java_ee:javaee_server.png|}} ===== JavaEE szerverek ===== * [[wp>GlassFish|Glassfish]] * [[wp>Apache_Tomcat|Tomcat]] (Servlet és JSP) * [[wp>WildFly]] * [[wp>Jetty_(web_server)|Jetty]] * [[wp>IBM_WebSphere_Application_Server|WebSphere]] * [[wp>Oracle_Weblogic|Weblogic]] ===== Források ===== ==== Irodalom ==== * Imre Gábor: Szoftverfejlesztés Java EE platformon; 2007 * Antonio Goncalves: Beginning Java EE 7, 2013