type=page
status=published
title=Preface
next=system-security.html
prev=title.html
~~~~~~

= Preface

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

The {productName} Security Guide provides
instructions for configuring and administering {productName} security.

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]

[[GSSCG00135]][[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`(1M)] 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:add-on-component-development-guide.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.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.
|===


[[GSSCG00136]][[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`).


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


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


[[GSSCG00139]][[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
|===

