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 5.1 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 5.1 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 5.1 software. For more information about installing
GlassFish Server 5.1, 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 5.1 release, including details about new features,
information about known issues and possible workarounds, and tips for
installing and working with GlassFish Server 5.1 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`/glassfish6/glassfish`

Installations on the Windows operating system:

SystemDrive`:\glassfish6\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`/glassfish6`

Installations on the Windows operating system:

SystemDrive`:\glassfish6`

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 5.1 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`).


