# Application client projects

Application client projects contain programs that run on networked client systems so the project can benefit from a server's tools.

Application client projects contain the resources needed for application client modules. An application client module is used to contain a full-function client Java™ application (non Web-based) that connects to and uses the Java EE resources defined in your server. When you place the client code in an application client module instead of a simple JAR file, the application client benefits from the server's resources (it does not need to re-specify the class path to Java EE and server JAR files) as well as from easier JNDI lookup (the client container fills in the initial context and other parameters). The application client project allows you to work as if you are creating a standalone Java application in a Java project.

An application client project enables you to do the following things:

- Develop the Java classes that implement the client module
- Set the application client deployment descriptor
- Test the application client

Like Java projects, application client projects contain the resources needed for application clients, including Java class files. When you create a new application client project, the environment is set up for Java development. A Java builder is associated with the project so the Java source can be incrementally compiled as it is updated. The application client project contains information about the type hierarchy and Java elements. This information is kept current as changes are made, and the Java builder will incrementally compile the resources within these projects as the resources are updated.

In the workbench, application client projects are always referenced by enterprise application (EAR) projects. When you create an application client project, you specify the enterprise application project to which the application client project belongs. A module element is automatically added to the `application.xml` deployment descriptor for the EAR project.

An application client project is deployed as a JAR file. This application client JAR file contains the necessary resources for the application, including Java class files, and deployment descriptor information and any meta-data extensions and bindings files.

Application client projects are typically run on networked client systems connected to Java EE (EJB) servers. The point of entry for the application client is a Java main-class, which is simply a Java class that contains a static main method. The class is declared in the manifest file of the client module.

A Java EE application client container provides access to the Java EE service (JNDI naming services, deployment services, transaction services, and security services) and communications APIs (internet protocols, Remote Method Invocation protocols, Object Management Group protocols, Messaging protocols, and data formats).

By default, application client projects contain one folder named appClientModule, which contains both Java source code and compiled `.class` files, along with all the meta-data files in the META-INF subfolder.

Related concepts
J2EE architecture
Related tasks
Creating an application client project
Exporting an application client project
Importing an application client JAR file