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

Preface
=======

[[GSING00001]][[gjxfa]]


[[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 document contains instructions for installing and uninstalling
GlassFish Server Open Source Edition 5.0 software.

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

GlassFish Server 5.0 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]

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


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

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

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

Additionally, the
https://javaee.github.io/javaee-spec/Specifications[Java EE
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].

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

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://javaee.github.io/glassfish-samples/[Java EE
Samples project page].

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


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


[[GSING00018]][[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
a|Represents the base installation directory for GlassFish Server.

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

