type=page
status=published
title=Quick Start for Basic Features
prev=preface.html
~~~~~~
Quick Start for Basic Features
==============================

[[GSQSG00003]][[aboaa]]


[[quick-start-for-basic-features]]
1 Quick Start for Basic Features
--------------------------------

Eclipse GlassFish Server provides a server for the
development and deployment of Java Platform, Enterprise Edition (Java EE
platform) applications and web technologies based on Java technology.
GlassFish Server 7 provides the following:

* A lightweight and extensible core based on OSGi Alliance standards
* A web container
* An easy-to-use Administration Console for configuration and management
* Update Tool connectivity for updates and add-on components
* Support for high availability clustering and load balancing

The following topics are addressed here:

* link:#ghgpe[About This Quick Start Guide]
* link:#ghpfg[Default Paths and File Names]
* link:#gixue[Default Administration Values]
* link:#gglog[Starting and Stopping the Default Domain]
* link:#gglmh[Starting and Stopping the Database Server]
* link:#ggllq[Starting the Administration Console]
* link:#geyvr[Deploying and Undeploying Applications]
* link:#gktqx[High Availability Clustering and Load Balancing]
* link:#ggkzh[For More Information]

[[ghgpe]][[GSQSG00030]][[about-this-quick-start-guide]]

About This Quick Start Guide
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Eclipse GlassFish Server 7 Quick Start Guide demonstrates
key features of the GlassFish Server product and enables you to quickly
learn the basics. Step-by-step procedures introduce you to product
features and enable you to use them immediately.

This guide assumes that you have already obtained and installed the
GlassFish Server 7 software. For more information about installing
GlassFish Server 7, see the
https://javaee.github.io/glassfish/documentation[GlassFish Server Open
Source Edition Installation Guide].

Instructions and examples in this guide that apply to all supported
operating systems use the forward slash character (`/`) as path
separators in all file names and commands. Ensure that you use the
correct character for the system on which GlassFish Server is installed.
For example:

* UNIX, Linux, or Mac OS X systems: as-install`/bin/asadmin`
* Windows systems: as-install`\bin\asadmin`

This guide provides basic information only. For comprehensive
information about GlassFish Server and other entities mentioned in this
guide, see link:#ggkzh[For More Information].

To review additional details about this release before you begin using
the software, see the link:../release-notes/toc.html#GSRLN[GlassFish Server Open Source Edition
Release Notes]. The Release Notes provide important information about
the GlassFish Server 7 release, including details about new features,
information about known issues and possible workarounds, and tips for
installing and working with GlassFish Server 7 software.

[[ghpfg]][[GSQSG00031]][[default-paths-and-file-names]]

Default Paths and File Names
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The following table describes the default paths and file names that are
used in this book.

[[sthref3]][[sthref4]]

Table 1-1 Default Paths and File Names

[width="100%",cols="14%,35%,51%",options="header",]
|=======================================================================
|Placeholder |Description |Default Value
a|
as-install


 |Represents the base installation directory for GlassFish Server. a|
Installations on the Oracle Solaris operating system, Linux operating
system, and Mac OS operating system:

user's-home-directory`/glassfish7/glassfish`

Installations on the Windows operating system:

SystemDrive`:\glassfish7\glassfish`

a|
as-install-parent


 |Represents the parent of the base installation directory for GlassFish
Server. a|
Installations on the Oracle Solaris operating system, Linux operating
system, and Mac operating system:

user's-home-directory`/glassfish7`

Installations on the Windows operating system:

SystemDrive`:\glassfish7`

a|
domain-root-dir


 |Represents the directory in which a domain is created by default.
|as-install`/domains/`

a|
domain-dir


 |Represents the directory in which a domain's configuration is stored.
|domain-root-dir`/`domain-name

a|
instance-dir


 |Represents the directory for a server instance.
|domain-dir`/`instance-name
|=======================================================================


[[gixue]][[GSQSG00032]][[default-administration-values]]

Default Administration Values
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The following table lists default administration values for GlassFish
Server. See link:#ghpfg[Default Paths and File Names] for more
information about the as-install and domain-dir placeholders.

[[sthref5]][[gixxy]]

Table 1-2 Default Administration Values

[width="100%",cols="50%,50%",options="header",]
|=======================================================================
|Item |Default Value or Location
|Domain name |`domain1`

|Master password |`changeit`

|https://javaee.github.io/glassfish/doc/5.0/reference-manual.pdf[`asadmin`(1M)]
command-line utility |as-install`/bin`

|Configuration files |domain-dir`/config`

|Log files |domain-dir`/logs`

|Administration server port |`4848`

|HTTP port |`8080`

|HTTPS port |`8181`

|Pure JMX clients port |`8686`

|Message Queue port |`7676`

|IIOP port |`3700`

|IIOP/SSL port |`3820`

|IIOP/SSL port with mutual authentication |`3920`
|=======================================================================


[[gglog]][[GSQSG00033]][[starting-and-stopping-the-default-domain]]

Starting and Stopping the Default Domain
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

When you install GlassFish Server, a default domain named `domain1` is
created. The following procedures describe how to start and stop
`domain1` when it is the only domain. For information about starting and
stopping a domain when there are multiple domains, see
"link:../administration-guide/domains.html#GSADG00006[Administering Domains]" in GlassFish Server Open
Source Edition Administration Guide.

[[ggmpd]][[GSQSG00005]][[to-start-the-default-domain]]

To Start the Default Domain
^^^^^^^^^^^^^^^^^^^^^^^^^^^

[[sthref6]]

Before You Begin

GlassFish Server software must be installed before you start the domain.

Run the `asadmin start-domain` command without an operand:

[source,oac_no_warn]
----
as-install/bin/asadmin start-domain
----

The command starts the default domain, `domain1`.

[[ggmsx]][[GSQSG00006]][[to-stop-the-default-domain]]

To Stop the Default Domain
^^^^^^^^^^^^^^^^^^^^^^^^^^

Run the `asadmin stop-domain` command without an operand:

[source,oac_no_warn]
----
as-install/bin/asadmin stop-domain
----

The command stops the default domain, `domain1`.


[TIP]
=======================================================================

To determine whether a domain is running, use the `asadmin list-domains`
command:

[source,oac_no_warn]
----
as-install/bin/asadmin list-domains
----

=======================================================================


[[gglmh]][[GSQSG00034]][[starting-and-stopping-the-database-server]]

Starting and Stopping the Database Server
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

A database server is not started by default when you start the GlassFish
Server domain. If your applications require a database back end, you
must start and stop the database server manually.

The following procedures describe how to start and stop the Apache Derby
server that is bundled with GlassFish Server. For information about
starting and stopping other database servers, see the documentation for
your specific product.

For the list of database products supported in this release, see the
https://javaee.github.io/glassfish/documentation[GlassFish Server Open
Source Edition Release Notes].

For more information about database connectivity, see
"https://javaee.github.io/glassfish/documentation[Administering Database
Connectivity]" in Eclipse GlassFish Server Administration
Guide.

[[ggncr]][[GSQSG00007]][[to-start-the-apache-derby-server]]

To Start the Apache Derby Server
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

[[sthref7]]

Before You Begin

At least one GlassFish Server domain must be started before you start
the database server.

Run the `asadmin start-database` command.

The general form for the command is as follows:

[source,oac_no_warn]
----
as-install/bin/asadmin start-database --dbhome directory-path
----

For example, to start the Apache Derby server from its default location:

[source,oac_no_warn]
----
as-install/bin/asadmin start-database --dbhome as-install-parent/javadb
----

[[ggnez]][[GSQSG00008]][[to-stop-the-apache-derby-server]]

To Stop the Apache Derby Server
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Run the `asadmin stop-database` command:

[source,oac_no_warn]
----
as-install/bin/asadmin stop-database
----

[[ggllq]][[GSQSG00035]][[starting-the-administration-console]]

Starting the Administration Console
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The GlassFish Server Administration Console provides a browser interface
for configuring, administering, and monitoring GlassFish Server.

[[ggnbp]][[GSQSG00009]][[to-start-the-administration-console]]

To Start the Administration Console
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

[[sthref8]]

Before You Begin

At least one GlassFish Server domain must be started.

1.  Type the URL in your browser. +
The default URL for the Administration Console on the local host is as
follows: +
[source,oac_no_warn]
----
http://localhost:4848
----
2.  If prompted, log in to the Administration Console. +
You will be prompted to log in if you chose to require an administration
password at the time GlassFish Server was installed.

[[sthref9]]

See Also

For more information, see the Administration Console online help.

[[geyvr]][[GSQSG00036]][[deploying-and-undeploying-applications]]

Deploying and Undeploying Applications
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The process of configuring and enabling applications to run within the
GlassFish Server framework is referred to as deployment.

This section explains how to deploy, list, and undeploy applications.
The procedures in this section use the `hello.war` sample application.
The following topics are addressed here:

* link:#ghgis[To Obtain the Sample Application]
* link:#gkpao[Deploying and Undeploying the Sample Application From the
Command Line]
* link:#gkpau[Deploying and Undeploying Applications by Using the
Administration Console]
* link:#gkpaa[Deploying and Undeploying the Sample Application
Automatically]

[[ghgis]][[GSQSG00010]][[to-obtain-the-sample-application]]

To Obtain the Sample Application
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

1.  Download a copy of the `hello.war` sample application from
`https://javaee.github.io/glassfish/downloads/quickstart/hello.war`.
2.  Save the `hello.war` file in the directory of your choice. +
This directory is referred to as sample-dir.

[[gkpao]][[GSQSG00044]][[deploying-and-undeploying-the-sample-application-from-the-command-line]]

Deploying and Undeploying the Sample Application From the Command Line
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

GlassFish Server provides `asadmin` subcommands for performing the
following deployment-related tasks:

* link:#ggndq[To Deploy the Sample Application From the Command Line]
* link:#ggnco[To List Deployed Applications From the Command Line]
* link:#ggnbm[To Undeploy the Sample Application From the Command Line]

[[ggndq]][[GSQSG00011]][[to-deploy-the-sample-application-from-the-command-line]]

To Deploy the Sample Application From the Command Line
++++++++++++++++++++++++++++++++++++++++++++++++++++++

[[sthref10]]

Before You Begin

The sample application must be available before you start this task. To
download the sample, see link:#ghgis[To Obtain the Sample Application].
At least one GlassFish Server domain must be started before you deploy
the sample application.

1.  Run the `asadmin deploy` command. +
The general form for the command is as follows: +
[source,oac_no_warn]
----
as-install/bin/asadmin deploy war-name
----
To deploy the `hello.war` sample, the command is as follows: +
[source,oac_no_warn]
----
as-install/bin/asadmin deploy sample-dir/hello.war
----
2.  Access the `hello` application by typing the following URL in your
browser: +
[source,oac_no_warn]
----
http://localhost:8080/hello
----
The application's start page is displayed, and you are prompted to type
your name. +
[source,oac_no_warn]
----
Hi, my name is Duke. What's yours?
----
3.  Type your name and click Submit. +
The application displays a customized response, giving you a personal
`Hello`.

[[sthref11]]

See Also

For more information about the `deploy` subcommand, see
link:../reference-manual/deploy.html#GSRFM00114[`deploy`(1)].

For more information about deploying applications from the command line,
see the link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application
Deployment Guide].

[[ggnco]][[GSQSG00012]][[to-list-deployed-applications-from-the-command-line]]

To List Deployed Applications From the Command Line
+++++++++++++++++++++++++++++++++++++++++++++++++++

Run the `asadmin list-applications` command:

[source,oac_no_warn]
----
as-install/bin/asadmin list-applications
----

[[ggnbm]][[GSQSG00013]][[to-undeploy-the-sample-application-from-the-command-line]]

To Undeploy the Sample Application From the Command Line
++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Run the `asadmin undeploy` command.

The general form for the command is as follows:

[source,oac_no_warn]
----
as-install/bin/asadmin undeploy war-name
----

For war-name, use the literal `hello`, not the full `hello.war` name.

For the `hello.war` example, the command is as follows:

[source,oac_no_warn]
----
as-install/bin/asadmin undeploy hello
----

[[sthref12]]

See Also

For more information about the `undeploy` subcommand, see
link:../reference-manual/undeploy.html#GSRFM00244[`undeploy`(1)].

[[gkpau]][[GSQSG00045]][[deploying-and-undeploying-applications-by-using-the-administration-console]]

Deploying and Undeploying Applications by Using the Administration
Console
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The graphical Administration Console of GlassFish Server enables you to
perform the following deployment-related tasks:

* link:#ggnbn[To Deploy the Sample Application by Using the
Administration Console]
* link:#ggncd[To View Deployed Applications in the Administration
Console]
* link:#ggneh[To Undeploy the Sample Application by Using the
Administration Console]

[[ggnbn]][[GSQSG00014]][[to-deploy-the-sample-application-by-using-the-administration-console]]

To Deploy the Sample Application by Using the Administration Console
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

[[sthref13]]

Before You Begin

The sample application must be available before you start this task. To
download the sample, see link:#ghgis[To Obtain the Sample Application].
At least one GlassFish Server domain must be started before you deploy
the sample application.

1.  Launch the Administration Console by typing the following URL in
your browser: +
[source,oac_no_warn]
----
http://localhost:4848
----
2.  Click the Applications node in the tree on the left. +
The Applications page is displayed.
3.  Click the Deploy button. +
The Deploy Applications or Modules page is displayed.
4.  Select Packaged File to be Uploaded to the Server, and click Browse.
5.  Navigate to the location in which you saved the `hello.war` sample,
select the file, and click Open. +
You are returned to the Deploy Applications or Modules page.
6.  Specify a description in the Description field, for example: +
`hello`
7.  Accept the other default settings, and click OK. +
You are returned to the Applications page.
8.  Select the check box next to the `hello` application and click the
Launch link to run the application. +
The default URL for the application is as follows: +
[source,oac_no_warn]
----
http://localhost:8080/hello/
----

[[sthref14]]

See Also

For more information, see the Administration Console online help.

[[ggncd]][[GSQSG00015]][[to-view-deployed-applications-in-the-administration-console]]

To View Deployed Applications in the Administration Console
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

1.  Launch the Administration Console by typing the following URL in
your browser: +
[source,oac_no_warn]
----
http://localhost:4848
----
2.  Click the Applications node in the tree on the left. +
Expand the node to list deployed applications. Deployed applications are
also listed in the table on the Applications page.

[[ggneh]][[GSQSG00016]][[to-undeploy-the-sample-application-by-using-the-administration-console]]

To Undeploy the Sample Application by Using the Administration Console
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

1.  Launch the Administration Console by typing the following URL in
your browser: +
[source,oac_no_warn]
----
http://localhost:4848
----
2.  Click the Applications node in the tree on the left. +
The Applications page is displayed.
3.  Select the check box next to the `hello` sample application.
4.  Remove or disable the application.
* To remove the application, click the Undeploy button.
* To disable the application, click the Disable button.

[[sthref15]]

See Also

For more information, see the Administration Console online help.

[[gkpaa]][[GSQSG00046]][[deploying-and-undeploying-the-sample-application-automatically]]

Deploying and Undeploying the Sample Application Automatically
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

GlassFish Server enables you to performing the following
deployment-related tasks automatically:

* link:#geyvj[To Deploy the Sample Application Automatically]
* link:#ggncw[To Undeploy the Sample Application Automatically]

[[geyvj]][[GSQSG00017]][[to-deploy-the-sample-application-automatically]]

To Deploy the Sample Application Automatically
++++++++++++++++++++++++++++++++++++++++++++++

You can deploy applications automatically by placing them in the
domain-dir`/autodeploy` directory, where domain-dir is the directory of
the domain for which you want to configure automatic deployment. For
this example, use the default domain, `domain1`, in the default
domain-root-dir, which is as-install`/domains`:

[source,oac_no_warn]
----
as-install/domains/domain1/autodeploy
----

[[sthref16]]

Before You Begin

The sample application must be available before you start this task. To
download the sample, see link:#ghgis[To Obtain the Sample Application].

Copy the application WAR file to the domain-dir`/autodeploy` directory.

* On UNIX, Linux, and Mac OS X systems, type this command: +
[source,oac_no_warn]
----
cp sample-dir/hello.war as-install/domains/domain-dir/autodeploy
----
* On Windows systems, type this command: +
[source,oac_no_warn]
----
copy sample-dir\hello.war as-install\domains\domain-dir\autodeploy
----

GlassFish Server automatically discovers and deploys the application.
The default URL for the application is as follows:

[source,oac_no_warn]
----
http://localhost:8080/hello/
----

[[ggncw]][[GSQSG00018]][[to-undeploy-the-sample-application-automatically]]

To Undeploy the Sample Application Automatically
++++++++++++++++++++++++++++++++++++++++++++++++

1.  Change to the domain's `autodeploy` directory. +
[source,oac_no_warn]
----
cd as-install\domains\domain-dir\autodeploy
----
2.  Delete the sample application's WAR file to undeploy and remove the
application.
* On UNIX, Linux, and Mac OS X systems, type this command: +
[source,oac_no_warn]
----
rm hello.war
----
* On Windows systems, type this command: +
[source,oac_no_warn]
----
del hello.war
----

[[gktqx]][[GSQSG00037]][[high-availability-clustering-and-load-balancing]]

High Availability Clustering and Load Balancing
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

GlassFish Server enables multiple GlassFish Server instances to be
clustered to provide high availability through failure protection,
scalability, and load balancing. The subsections that follow provide an
overview of high availability clustering and load balancing for
GlassFish Server.

[[gktob]][[GSQSG00047]][[clusters-of-glassfish-server-instances]]

Clusters of GlassFish Server Instances
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

A cluster is a collection of GlassFish Server instances that work
together as one logical entity. A cluster provides a runtime environment
for one or more Java Platform, Enterprise Edition (Java EE)
applications. A cluster provides high availability through failure
protection, scalability, and load balancing.

A GlassFish Server instance is a single Virtual Machine for the Java
platform (Java Virtual Machine or JVM machine) on a single node in which
GlassFish Server is running. A node defines the host where the GlassFish
Server instance resides. The JVM machine must be compatible with the
Java Platform, Enterprise Edition (Java EE).

GlassFish Server instances form the basis of an application deployment.
An instance is a building block in the clustering, load balancing, and
session persistence features of GlassFish Server. Each instance belongs
to a single domain and has its own directory structure, configuration,
and deployed applications. Every instance contains a reference to a node
that defines the host where the instance resides.

For more information, see the following documentation:

* "link:../ha-administration-guide/nodes.html#GSHAG00004[Administering GlassFish Server Nodes]" in GlassFish
Server Open Source Edition High Availability Administration Guide
* "link:../ha-administration-guide/clusters.html#GSHAG00005[Administering GlassFish Server Clusters]" in
Eclipse GlassFish Server High Availability Administration
Guide
* "link:../ha-administration-guide/instances.html#GSHAG00006[Administering GlassFish Server Instances]" in
Eclipse GlassFish Server High Availability Administration
Guide

[[gktpt]][[GSQSG00048]][[session-persistence-and-failover]]

Session Persistence and Failover
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Storing session state data enables the session state to be recovered
after the failover of an instance in a cluster. Recovering the session
state enables the session to continue without loss of information.
GlassFish Server supports in-memory session replication on other servers
in the cluster for maintaining HTTP session and stateful session bean
data.

For more information, see "link:../ha-administration-guide/session-persistence-and-failover.html#GSHAG00011[Configuring High
Availability Session Persistence and Failover]" in GlassFish Server Open
Source Edition High Availability Administration Guide.

[[gksbz]][[GSQSG00049]][[load-balancing-for-clustered-configurations]]

Load Balancing for Clustered Configurations
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

GlassFish Server supports web server and hardware-based load balancing
for clustered configurations. A load balancer is deployed with a
cluster, and provides the following features:

* Allows an application or service to be scaled horizontally across
multiple physical (or logical) hosts yet still present the user with a
single URL
* Insulates the user from host failures or server crashes when used with
session persistence
* Enhances security by hiding the internal network from the user

Eclipse GlassFish Server is compatible with the Apache HTTP
server `mod_jk` module for load balancing.

GlassFish Server load balancing configurations can vary widely depending
on the needs of your enterprise. For complete information about
configuring load balancing in GlassFish Server, see the following
documentation:

* "link:../ha-administration-guide/http-load-balancing.html#GSHAG00009[Configuring HTTP Load Balancing]" in GlassFish
Server Open Source Edition High Availability Administration Guide
* "link:../ha-administration-guide/rmi-iiop.html#GSHAG00013[RMI-IIOP Load Balancing and Failover]" in GlassFish
Server Open Source Edition High Availability Administration Guide

[[ggkzh]][[GSQSG00040]][[for-more-information]]

For More Information
~~~~~~~~~~~~~~~~~~~~

Additional resources are available to help you learn more about
GlassFish Server 7 and related technologies.

The following resources are described here:

* link:#ghhir[Product Documentation]
* link:#ghhis[GlassFish Communities]
* link:#giyjo[Tutorials]
* link:#gintm[Java EE 8 Samples]

[[ghhir]][[GSQSG00050]][[product-documentation]]

Product Documentation
^^^^^^^^^^^^^^^^^^^^^

Comprehensive product documentation is available and includes the
following.

* link:../release-notes/toc.html#GSRLN[GlassFish Server Open Source Edition Release Notes]:
Latest details about new features, known issues, and tips for installing
and working with GlassFish Server software.
* http://docs.oracle.com/cd/E26576_01/index.html[Oracle GlassFish Server
Documentation Library]
(`http://docs.oracle.com/cd/E26576_01/index.html`): Collection of guides
that document Oracle GlassFish Server features and functions.
* https://javaee.github.io/glassfish/documentation[GlassFish Server Open
Source Edition Product Documentation page]
(`https://javaee.github.io/glassfish/documentation`): Collection of
guides that document Eclipse GlassFish Server features and
functions.

[[ghhis]][[GSQSG00051]][[glassfish-communities]]

GlassFish Communities
^^^^^^^^^^^^^^^^^^^^^

The following resources will help you connect with other users, learn
more about GlassFish Server, and get help if needed.

* https://javaee.groups.io/g/javaee[GlassFish Forum]
(`https://javaee.groups.io/g/javaee`): +
Public online discussion forum that provides community support and tips
for working with GlassFish Server.
* https://javaee.github.io/glassfish/documentation[GlassFish
Documentation Project]
(`https://javaee.github.io/glassfish/documentation`): Documentation
community site that provides details about GlassFish Server
documentation and how you can participate.

[[giyjo]][[GSQSG00052]][[tutorials]]

Tutorials
^^^^^^^^^

The following tutorials provide working examples and detailed
instructions for creating enterprise applications for the Java EE 8
platform.

* http://docs.oracle.com/javaee/7/firstcup/doc/[Your First Cup: An
Introduction to the Java EE Platform]
(`https://javaee.github.io/firstcup/`). For beginning Java EE
programmers, this short tutorial explains the entire process for
developing a simple enterprise application. The sample application is a
web application that consists of a component that is based on the
Enterprise JavaBeans specification, a JAX-RS web service, and a
JavaServer Faces component for the web front end.
* http://docs.oracle.com/javaee/7/tutorial/doc/[The Java EE 8 Tutorial]
(`https://javaee.github.io/tutorial/`). This comprehensive tutorial
explains how to use Java EE 8 platform technologies and APIs to develop
Java EE applications.

[[gintm]][[GSQSG00053]][[java-ee-8-samples]]

Java EE 8 Samples
^^^^^^^^^^^^^^^^^

The sample applications demonstrate Java EE technologies. The samples
are available as part of the Java EE SDK distributions. The SDK
distributions are available from the
http://www.oracle.com/technetwork/java/javaee/downloads/index.html[Java
EE SDK downloads page]
(`http://www.oracle.com/technetwork/java/javaee/downloads/index.html`).


