W Java Enterprise Edition (JEE) mamy wszystko, co jest dostępne w Java Standard Edition (JSE). Dodatkowo mamy bonus - zajęcia, które dostarczył serwer aplikacji. W JEE struktura aplikacji nieco się zmieniła. W JSE mieliśmy jeden punkt wejścia do aplikacji, która rozpoczęła nasz wątek (główny). Wtedy moglibyśmy zrobić wszystko z JVM. Nie jest to zalecane w JEE. Nadal mamy na to zasoby, jednak ponieważ serwer aplikacji może obsługiwać wiele aplikacji równolegle, nie jest rozsądne, aby jedna aplikacja otwierała kilka wątków i obliczała coś niezależnego od potrzeb otaczającego środowiska. Serwer aplikacji może zostać przeciążony.
W JEE klasyczne podejście ma formę wymagań i odpowiedzi. Zazwyczaj obsługujemy żądania typu HTTP, żądania typu CORBA lub usługę SOAP. To żądanie powoduje, że serwer aplikacji wywołuje do nas klasę, którą wcześniej wdrożyliśmy. Celem metody w wywoływanej klasie jest zareagowanie na nią. Po jego wygaśnięciu żądanie zostało spełnione. Wywoływany obiekt nie powinien obsługiwać niczego więcej - nie powinieneś rozpoczynać innych wątków ani na coś czekać.
W JEE mamy opcje tworzenia: