type=page
status=published
title=Preface
next=basic-features.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 Jakarta EE or Java
Enterprise Edition should be considered references to Jakarta EE.

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

This book demonstrates key features of the {productName} 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 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 GlassFish project is designed to encourage
communication between Oracle engineers and the community.

The following topics are addressed here:

* link:#ghpbz[{productName} Documentation Set]
* link:#fwbkx[Typographic Conventions]
* link:#fquvc[Symbol Conventions]

[[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.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.html#GSQSG[Quick Start Guide] |Explains how to get started with the
{productName} product.

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

|link:upgrade-guide.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.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.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`] utility. Instructions for
performing these tasks from the Administration Console are provided in
the Administration Console online help.

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

|link:application-deployment-guide.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.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:embedded-server-guide.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.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.html#GSPTG[Performance Tuning Guide] |Explains how to optimize the
performance of {productName}.

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

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

|link:reference-manual.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.html#GMRLN[Message Queue Release Notes] |Describes new features,
compatibility issues, and existing bugs for Open Message Queue.

|link:../openmq/mq-tech-over.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.html#GMADG[Message Queue Administration Guide] |Explains how to set up
and manage a Message Queue messaging system.

|link:../openmq/mq-dev-guide-jmx.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.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.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.
|===


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

