type=page
status=published
title=Preface
next=release-notes.html
prev=title.html
~~~~~~

Preface
=======

[[gkamj]][[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 Java EE or Java
Enterprise Edition should be considered references to Jakarta EE.

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

This preface contains information about and conventions for the entire
GlassFish Server Open Source Edition (GlassFish Server) documentation
set.

GlassFish Server is developed through the GlassFish project open-source
community at `https://javaee.github.io/glassfish/`. The GlassFish
project provides a structured process for developing the GlassFish
Server platform that makes the new features of the Java EE platform
available faster, while maintaining the most important feature of Java
EE: compatibility. It enables Java developers to access the GlassFish
Server source code and to contribute to the development of the GlassFish
Server. The GlassFish project is designed to encourage communication
between Oracle engineers and the community.

The following topics are addressed here:

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

[[ghpbz]][[glassfish-server-documentation-set]]

GlassFish Server Documentation Set
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The GlassFish Server documentation set describes deployment planning and
system installation. For an introduction to GlassFish Server, 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
GlassFish Server 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 GlassFish Server. 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 GlassFish Server that meets the requirements of
your system and enterprise.

|link:../administration-guide/toc.html#GSADG[Administration Guide] |Explains how to configure, monitor,
and manage GlassFish Server subsystems and components from the command
line by using the link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`] 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 GlassFish Server security.

|link:../application-deployment-guide/toc.html#GSDPG[Application Deployment Guide] |Explains how to assemble and
deploy applications to the GlassFish Server 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 (Java EE platform)
applications that are intended to run on the GlassFish Server. These
applications follow the open Java standards model for Java EE components
and application programmer interfaces (APIs). This guide provides
information about developer tools, security, and debugging.

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

|link:../ha-administration-guide/toc.html#GSHAG[High Availability Administration Guide] |Explains how to
configure GlassFish Server 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 GlassFish Server.

|link:../troubleshooting-guide/toc.html#GSTSG[Troubleshooting Guide] |Describes common problems that you
might encounter when using GlassFish Server 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 GlassFish Server.

|link:../reference-manual/toc.html#GSRFM[Reference Manual] |Provides reference information in man
page format for GlassFish Server 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 GlassFish Server.

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


[[giprl]][[related-documentation]]

Related Documentation
~~~~~~~~~~~~~~~~~~~~~

The following tutorials explain how to develop Java EE applications:

* https://javaee.github.io/firstcup/[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.
* https://javaee.github.io/tutorial/[The Java EE 8 Tutorial]
(`https://javaee.github.io/tutorial/`). This comprehensive tutorial
explains how to use Java EE 7 platform technologies and APIs to develop
Java EE applications.

Javadoc tool reference documentation for packages that are provided with
GlassFish Server is available as follows.

* The API specification for version 8 of Java EE is located at
`https://javaee.github.io/javaee-spec/javadocs/`.
* The API specification for GlassFish Server 5.0, including Java EE 8
platform packages and non-platform packages that are specific to the
GlassFish Server product, is located at
`https://javaee.github.io/javaee-spec/javadocs/`.

Additionally, the
http://www.oracle.com/technetwork/java/javaee/tech/index.html[Java EE
Specifications] (`https://javaee.github.io/javaee-spec/Specifications`)
might be useful.

For information about creating enterprise applications in the NetBeans
Integrated Development Environment (IDE), see the
http://www.netbeans.org/kb/[NetBeans Documentation, Training & Support
page] (`http://www.netbeans.org/kb/`).

For information about the Apache Derby database for use with the
GlassFish Server, see the https://db.apache.org/derby/manuals/[Apache
Derby product page] (`https://db.apache.org/derby/manuals/`).

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

[[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
a|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
a|`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)
a|Read Chapter 6 in the User's Guide.

A cache is a copy that is stored locally.

Do not save the file.
|===

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


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

[width="100%",cols="14%,34%,52%",options="header",]
|===
|Placeholder |Description |Default Value
|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``

|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``

|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.
|domain-root-dir``/``domain-name

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