Java EE (Enterprise Edition) - Pooky/java-enterprise-examples GitHub Wiki

Java Enterprise Edition

Java EE is set of standards which was developed by Java Community and the aim is to enable better development of bigger (enterprise application) and also to decouple and split logic of application.

This standards are mainly abstracts. Many ares of this standards is implemented differently, by various companies (vendors).

Main ideas of Java EE

  • Containers
  • Dependency Injection
  • Persistence
  • Servlets
  • XML Binding
  • Web-Services
  • Transactions
  • CDI

Dependency Injection (DI)

Don't use application to create new instance of class like "new Class()". Dependency Injection delegate this to Container or some other library to inject this instance into variable. Usually you need to configure it and correctly setup annotation for the variables, which need to be setup.

Container or library will after that create the new instance of Class instead of you. It's good if you want to have differend implementation of classes and switch between them.

Web services

  • JAX-RS Java API for RESTful Web Services
  • JAX-WS Java API for XML Web Services

XML Binding

  • JAXB Java Entity to XML translator

Persistence

  • Java Persistence
  • Hibernate
  • HQL = SQL with Hibernate dialect
  • Named Queries
  • Criteria Quieries
  • Hibernate Entity
  • DAO = Object which should get data from db

Java security

  • Management and authorization - link: https://shiro.apache.org/
  • OWASP
  • Session management - UNDERTOW
  • HTTPS - Wildfly
  • CSRF tokens

Java Mapping

Dozer -> DAO and DTO

Transactions

Big thing in java is multi-threading and concurrent access. Multi-threading application can run multidimensionality mullite instructions in same time. That's very nice concept for faster processing but problem is when you access one resource randomly. In worst case you can read some value and modify the value before other thread will read this value.

It can result in data inconsistency, dirty write or dead-lock. To prevent this java containers use transaction management to keep operation in one flow or rollback if whole transaction is not completed.

Version Name Released
Java EE 9 J4EE, Eclipse Enterprise for Java unknown
Java EE 8 Java EE 8, JSR 366 (Java Specification Request) 18 Sep, 2017
Java EE 7 Java EE 7, JSR 342 (Java Specification Request) 28 May, 2013
Java EE 6 Java EE 6, JSR 316 (Java Specification Request) 10 Dec, 2009