Projekty klientów aplikacji zawierają zasoby wymagane przez moduły klientów aplikacji. Moduł klienta aplikacji zawiera w pełni funkcjonalną aplikację kliencką w języku Java (inną niż WWW), która łączy się z zasobami J2EE zdefiniowanymi w danym serwerze i korzysta z nich. Gdy kod klienta jest umieszczony w module klienta aplikacji zamiast w prostym pliku JAR, klient aplikacji może korzystać z zasobów serwera (bez ponownego określania ścieżki klasy do plików J2EE i JAR serwera), a także z łatwiejszego wyszukiwania JNDI (kontener klienta wypełnia początkowy kontekst i inne parametry). Projekt klienta aplikacji pozwala pracować tak, jakby się tworzyło autonomiczną aplikację Java w projekcie Java.
Projekt klienta aplikacji umożliwia wykonanie następujących czynności:
Podobnie jak w przypadku projektów Java, projekty klienta aplikacji zawierają zasoby potrzebne klientom aplikacji, w tym pliki klas Java. Podczas tworzenia nowego projektu klienta aplikacji środowisko jest konfigurowane do programowania w języku Java. Z projektem jest powiązany program budujący Java, dzięki czemu kod źródłowy w języku Java może być kompilowany przyrostowo w miarę aktualizacji. Projekt klienta aplikacji zawiera informacje dotyczące hierarchii typów oraz elementów języka Java. Informacje te są aktualizowane w miarę wprowadzania zmian, a program budujący Java przyrostowo kompiluje zasoby w tych projektach w miarę ich aktualizacji.
W środowisku roboczym do projektów klienta aplikacji zawsze odwołują się projekty aplikacji korporacyjnych (EAR). Podczas tworzenia projektu klienta aplikacji określa się projekt aplikacji korporacyjnej, do którego dany projekt klienta aplikacji należy. Do deskryptora wdrażania application.xml dla projektu EAR dodawany jest automatycznie element modułu.
Projekt klienta aplikacji jest wdrażany jako plik JAR. Plik ten zawiera niezbędne dla aplikacji zasoby, między innymi pliki klas Java, informacje deskryptora wdrażania oraz inne rozszerzenia metadanych i pliki powiązań.
Projekty klienta aplikacji są zazwyczaj wykonywane w systemach klientów sieciowych połączonych z serwerami J2EE (EJB). Punktem wejścia dla klienta aplikacji jest klasa główna języka Java, która jest po prostu klasą Java zawierającą statyczną metodę główną. Klasa ta jest zadeklarowana w pliku manifestu modułu klienta.
Kontener klienta aplikacji J2EE zapewnia dostęp do usługi J2EE (usług nazewnictwa JNDI, usług wdrażania, usług transakcyjnych oraz dotyczących bezpieczeństwa), a także do komunikacyjnych funkcji API (takich jak: protokoły internetowe, protokoły RMI, protokoły OMG i protokoły komunikacyjne oraz formaty danych).
Domyślnie projekty klienta aplikacji składają się z jednego folderu o nazwie appClientModule, który zawiera zarówno kod źródłowy w języku Java, jak i skompilowane pliki .class, a także wszystkie pliki metadanych w podfolderze META-INF.