type=page
status=published
title=Preface
next=part-tasks-and-tools.html
prev=title.html
~~~~~~

= Preface

[[GSDVG528]][[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 Development Guide describes how to create and run Java
Platform, Enterprise Edition (Jakarta EE platform) applications that follow
the open Java standards model for Jakarta EE components and APIs in the
{productName} environment.
Topics include developer tools, security, and debugging.
This book is intended for use by software developers who create, assemble,
and deploy Jakarta EE applications using {productName}s.

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]

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


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

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


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


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

