Java EE

Zač je toho loket

Martin Polák

github.com/nigol/slides

slides.nigol.cz

Co je Java EE?

Framework pro vývoj aplikací + aplikační server.

Obsahuje zejména:

  • Webové technologie (Servlet, EL, JSP, JSF, ...)
  • Java API pro rozhraní SOAP, REST (JAX-WS, JAX-RS)
  • Enterprise JavaBeans (EJB)
  • Java Persistence API (JPA)
  • Contexts and Dependency Injection (CDI)

Stručná historie Javy EE

...bez nároku na úplnost

...včetně zmateného(?) číslování verzí.

  • 1996 První verze Javy JDK 1.0
  • 1999 J2EE 1.2
  • ...
  • 2006 Java EE 5
  • ...
  • 2017 Java EE 8

Hlavní benefit Javy EE? (IMHO)

Správa životního cyklu komponent a DI...

ApplicationSessionViewRequest
Request
ViewRequest
Request
SessionViewRequest
Request
ViewRequest
Request

...a stabilita API, zpětná kompatibilita.

Technologie JEE

Contexts and Dependency Injection (CDI)

Udržuje instance komponent, hlídá rozsah platnosti a poskytuje platné instance.

	      
		@RequestScoped
		public class ItemService
		...
		@Inject
		private ItemService itemService;
	      
	    

Umožňuje snadno implementovat některé návrhové vzory (Interceptor, Observer, ...).

Technologie JEE

Java Persistence API (JPA)

Obvykle zabezpečuje mapování (ORM) z relační reprezentace dat na objektovou reprezentaci a opačně + práci s databází.

  • Entity
  • Vazby (1:1, 1:n, m:n, ...)
  • Dotazy (JPQL)

Technologie JEE

Enterprise JavaBeans (EJB)

Komponenty, které spravuje EJB kontejner s vlastním životním cyklem.

  • Session beans (Stateful, Stateless, Singleton)
  • Message beans (asynchronní)

Interoperabilita s CDI.

Technologie JEE

Webové technologie (Servlet, EL, JSP, JSF, ...)

Umožňují vyvíjet webové uživatelské rozhraní.

  • Servlet - nízkoúrovňové rozhraní (přímo kód)
  • JSP (Java Server Pages) - základní šablonovací systém
  • JSF (Java Server Faces) - komponentově orientovaný šablonovací systém
  • EL (Expression Language) - propojuje šablonu s kódem v pozadí - kontrolerem

Ukázka JSF:

	      
		
		  
		  
		
	      
	    

Technologie JEE

Java API pro rozhraní SOAP, REST (JAX-WS, JAX-RS)

Usnadňuje vývoj rozhraní pro komunikaci aplikací přes SOAP nebo REST rozhraní.

Redukuje množství kódu (a tím i chyb).

	      
		@Path("/item")
		@Produces({MediaType.APPLICATION_JSON})
		@Consumes({MediaType.APPLICATION_JSON})
		@Model
		public class ItemApi {
		...
		@GET
		@Path("/all")
		public Response items() {
		...
	      
	    

Aplikační servery

Bez toho to nepůjde...

Volně dostupnéKomerční
TomEEWebSphere
GlassfishWebLogic
OpenLibertySAP NetWeaver AS

...a další.

Budoucnost?

Další vývoj platformy - Jakarta EE (2018, pod křídly Eclipse Foundation).

Díky za pozornost!