type=page
status=published
title=Preface
next=overview.html
prev=title.html
~~~~~~

= Preface

[[GSDPG806]][[sthref2]]
[[preface]]
== Preface

[NOTE]
====
This documentation is part of the Java Enterprise Edition contribution
to the Eclipse Foundation and is not intended for use in relation to
Java Enterprise Edition or Orace GlassFish. The documentation is in the
process of being revised to reflect the new Jakarta EE branding.
Additional changes will be made as requirements and procedures evolve
for Jakarta EE. Where applicable, references to Jakarta EE or Java
Enterprise Edition should be considered references to Jakarta EE.

Please see the Title page for additional license information.
====

This Application Deployment Guide describes deployment of applications
and application components to {productName}, and
includes information about deployment descriptors.

This preface contains information about and conventions for the entire
{productName} ({productName}) documentation set.

{productName} 7 is developed through the GlassFish project
open-source community at https://github.com/eclipse-ee4j/glassfish.
The GlassFish project provides a structured process for developing the
{productName} platform that makes the new features of the Jakarta EE
platform available faster, while maintaining the most important feature
of Jakarta EE: compatibility. It enables Java developers to access the
{productName} source code and to contribute to the development of the
{productName}.

The following topics are addressed here:

* link:#ghpbz[{productName} Documentation Set]
* link:#giprl[Related Documentation]
* link:#fwbkx[Typographic Conventions]
* link:#fquvc[Symbol Conventions]
* link:#ghpfg[Default Paths and File Names]

[[GSDPG00053]][[ghpbz]]


[[glassfish-server-documentation-set]]
=== {productName} Documentation Set

The {productName} documentation set describes deployment planning and
system installation. For an introduction to {productName}, refer to
the books in the order in which they are listed in the following table.

[width="100%",cols="<30%,<70%",options="header",]
|===
|Book Title |Description
|link:../release-notes/toc.html#GSRLN[Release Notes] |Provides late-breaking information about
the software and the documentation and includes a comprehensive,
table-based summary of the supported hardware, operating system, Java
Development Kit (JDK), and database drivers.

|link:../quick-start-guide/toc.html#GSQSG[Quick Start Guide]
|Explains how to get started with the {productName} product.

|link:../installation-guide/toc.html#GSING[Installation Guide]
|Explains how to install the software and its components.

|link:../upgrade-guide/toc.html#GSUPG[Upgrade Guide]
|Explains how to upgrade to the latest version of {productName}.
This guide also describes differences between adjacent product releases and configuration
options that can result in incompatibility with the product specifications.

|link:../deployment-planning-guide/toc.html#GSPLG[Deployment Planning Guide]
|Explains how to build a production deployment of {productName} that meets the requirements of
your system and enterprise.

|link:../administration-guide/toc.html#GSADG[Administration Guide]
|Explains how to configure, monitor, and manage {productName} subsystems and components
from the command line by using the link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] utility.
Instructions for performing these tasks from the Administration Console are provided
in the Administration Console online help.

|link:../security-guide/toc.html#GSSCG[Security Guide]
|Provides instructions for configuring and administering {productName} security.

|link:../application-deployment-guide/toc.html#GSDPG[Application Deployment Guide]
|Explains how to assemble and deploy applications to the {productName} and provides information
about deployment descriptors.

|link:../application-development-guide/toc.html#GSDVG[Application Development Guide]
|Explains how to create and implement Java Platform, Enterprise Edition (Jakarta EE platform)
applications that are intended to run on the {productName}.
These applications follow the open Java standards model for Jakarta EE components
and application programmer interfaces (APIs).
This guide provides information about developer tools, security, and debugging.

|link:../add-on-component-development-guide/toc.html#GSACG[Add-On Component Development Guide]
|Explains how to use published interfaces of {productName} to develop add-on components
for {productName}.
This document explains how to perform only those tasks that ensure that the add-on component
is suitable for {productName}.

|link:../embedded-server-guide/toc.html#GSESG[Embedded Server Guide]
|Explains how to run applications in embedded {productName} and to develop applications
in which {productName} is embedded.

|link:../ha-administration-guide/toc.html#GSHAG[High Availability Administration Guide]
|Explains how to configure {productName} to provide higher availability and
scalability through failover and load balancing.

|link:../performance-tuning-guide/toc.html#GSPTG[Performance Tuning Guide]
|Explains how to optimize the performance of {productName}.

|link:../troubleshooting-guide/toc.html#GSTSG[Troubleshooting Guide]
|Describes common problems that you might encounter when using {productName} and explains how to solve them.

|link:../error-messages-reference/toc.html#GSEMR[Error Message Reference]
|Describes error messages that you might encounter when using {productName}.

|link:../reference-manual/toc.html#GSRFM[Reference Manual]
|Provides reference information in man page format for {productName} administration commands, utility
commands, and related concepts.

|link:../../openmq/mq-release-notes/toc.html#GMRLN[Message Queue Release Notes]
|Describes new features, compatibility issues, and existing bugs for Open Message Queue.

|link:../../openmq/mq-tech-over/toc.html#GMTOV[Message Queue Technical Overview]
|Provides an introduction to the technology, concepts, architecture, capabilities, and features of
the Message Queue messaging service.

|link:../../openmq/mq-admin-guide/toc.html#GMADG[Message Queue Administration Guide]
|Explains how to set up and manage a Message Queue messaging system.

|link:../../openmq/mq-dev-guide-jmx/toc.html#GMJMG[Message Queue Developer's Guide for JMX Clients]
|Describes the application programming interface in Message Queue for
programmatically configuring and monitoring Message Queue resources in
conformance with the Java Management Extensions (JMX).

|link:../../openmq/mq-dev-guide-java/toc.html#GMJVG[Message Queue Developer's Guide for Java Clients]
|Provides information about concepts and procedures for developing Java messaging
applications (Java clients) that work with {productName}.

|link:../../openmq/mq-dev-guide-c/toc.html#GMCCG[Message Queue Developer's Guide for C Clients]
|Provides programming and reference information for developers working with
Message Queue who want to use the C language binding to the Message
Queue messaging service to send, receive, and process Message Queue messages.
|===


[[GSDPG00054]][[giprl]]

[[related-documentation]]
=== Related Documentation

The following tutorials explain how to develop Jakarta EE applications:

* https://github.com/eclipse-ee4j/jakartaee-firstcup-examples[
Your First Cup: An Introduction to the Jakarta EE Platform].
For beginning Jakarta 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.

* https://eclipse-ee4j.github.io/jakartaee-tutorial[The Jakarta EE Tutorial].
This comprehensive tutorial explains how to use Jakarta EE platform technologies
and APIs to develop Jakarta EE applications.

Javadoc tool reference documentation for packages that are provided with
{productName} is available as follows.

* The Jakarta EE specifications and API specification is
located at https://jakarta.ee/specifications/.

* The API specification for {productName} 7, including Jakarta EE
platform packages and nonplatform packages that are specific to the
{productName} product, is located at
https://glassfish.org/docs/.

For information about creating enterprise applications in the NetBeans
Integrated Development Environment (IDE), see the
https://netbeans.apache.org/kb/docs/java-ee.html[
NetBeans Documentation, Training & Support page].

For information about the Derby database for use with
the {productName}, see the https://db.apache.org/derby/index.html[Derby page].

The Jakarta EE Samples project is a collection of sample applications that
demonstrate a broad range of Jakarta EE technologies. The Jakarta EE Samples
are bundled with the Jakarta EE Software Development Kit (SDK) and are also
available from the repository
(`https://github.com/eclipse-ee4j/glassfish-samples`).

[[GSDPG00055]][[fwbkx]]

[[typographic-conventions]]
=== Typographic Conventions

The following table describes the typographic changes that are used in
this book.

[width="100%",cols="<14%,<37%,<49%",options="header",]
|===
|Typeface |Meaning |Example

|`AaBbCc123`
|The names of commands, files, and directories, and onscreen computer output
|Edit your `.login` file.

Use `ls` `a` to list all files.

`machine_name% you have mail.`

|`AaBbCc123`
|What you type, contrasted with onscreen computer output
|`machine_name%` `su`

`Password:`

|AaBbCc123
|A placeholder to be replaced with a real name or value
|The command to remove a file is `rm` filename.

|AaBbCc123
|Book titles, new terms, and terms to be emphasized (note that some emphasized items appear bold online)
|Read Chapter 6 in the User's Guide.

A cache is a copy that is stored locally.

Do not save the file.
|===


[[GSDPG00056]][[fquvc]]

[[symbol-conventions]]
=== Symbol Conventions

The following table explains symbols that might be used in this book.

[width="100%",cols="<10%,<26%,<28%,<36%",options="header",]
|===
|Symbol |Description |Example |Meaning

|`[ ]`
|Contains optional arguments and command options.
|`ls [-l]`
|The `-l` option is not required.

|`{ \| }`
|Contains a set of choices for a required command option.
|`-d {y\|n}`
|The `-d` option requires that you use either the `y` argument or the `n` argument.

|`${ }`
|Indicates a variable reference.
|`${com.sun.javaRoot}`
|References the value of the `com.sun.javaRoot` variable.

|`-`
|Joins simultaneous multiple keystrokes.
|Control-A
|Press the Control key while you press the A key.

|`+`
|Joins consecutive multiple keystrokes.
|Ctrl+A+N
|Press the Control key, release it, and then press the subsequent keys.

|`>`
|Indicates menu item selection in a graphical user interface.
|File > New > Templates
|From the File menu, choose New. From the New submenu, choose Templates.
|===


[[GSDPG00057]][[ghpfg]]

[[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.

[%autowidth.stretch,options="header",]
|===
|Placeholder |Description |Default Value

|as-install
a|Represents the base installation directory for {productName}.
In configuration files, as-install is represented as follows:
`${com.sun.aas.installRoot}`
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``

|as-install-parent
|Represents the parent of the base installation directory for {productName}.
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``

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

|domain-dir
|Represents the directory in which a domain's configuration is stored.
In configuration files, domain-dir is represented as follows:
`${com.sun.aas.instanceRoot}`
|domain-root-dir/domain-name

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

