type=page
status=published
title=Preface
next=upgrade-compatibility-issues.html
prev=title.html
~~~~~~
Preface
=======

[[GSUPG00001]][[gkbei]]


[[preface]]
Preface
-------

This guide explains how to upgrade to GlassFish Server Open Source
Edition 4.0 from previous GlassFish Server and Sun GlassFish Enterprise
Server product releases. Also included in this guide are instructions
for upgrading configuration data and Java EE applications from
binary-compatible earlier versions of this software to work with
GlassFish Server Open Source Edition 4.0. Finally, this guide describes
compatibility issues that affect data and applications that are to be
migrated.


[width="100%",cols="<100%",]
|=======================================================================
a|
Note:

The main thrust of the GlassFish Server Open Source Edition 4.0 release
is to provide an application server for developers to explore and begin
exploiting the new and updated technologies in the Java EE 7 platform.
Thus, the upgrade feature of GlassFish Server was not a focus of this
release. The feature is included in the release, but it may not function
properly with some of the new features added in support of the Java EE 7
platform.

|=======================================================================


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

GlassFish Server 4.0 is developed through the GlassFish project
open-source community at `http://glassfish.java.net/`. 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]

[[GSUPG00020]][[ghpbz]]


[[glassfish-server-documentation-set]]
Eclipse 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.
|=======================================================================


[[GSUPG00021]][[giprl]]


[[related-documentation]]
Related Documentation
~~~~~~~~~~~~~~~~~~~~~

The following tutorials explain how to develop Java EE applications:

* http://docs.oracle.com/javaee/7/firstcup/doc/home.html[Your First Cup:
An Introduction to the Java EE Platform]
(`http://docs.oracle.com/javaee/7/firstcup/doc/home.html`). 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.
* http://docs.oracle.com/javaee/7/tutorial/doc/home.html[The Java EE 7
Tutorial] (`http://docs.oracle.com/javaee/7/tutorial/doc/home.html`).
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 7 of Java EE is located at
`http://docs.oracle.com/javaee/7/api/`.
* The API specification for GlassFish Server 4.0, including Java EE 7
platform packages and nonplatform packages that are specific to the
GlassFish Server product, is located at
`http://glassfish.java.net/nonav/docs/v3/api/`.

Additionally, the
http://www.oracle.com/technetwork/java/javaee/tech/index.html[Java EE
Specifications]
(`http://www.oracle.com/technetwork/java/javaee/tech/index.html`) 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 Java DB database for use with the GlassFish
Server, see the
http://www.oracle.com/technetwork/java/javadb/overview/index.html[Java
DB product page]
(`http://www.oracle.com/technetwork/java/javadb/overview/index.html`).

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 http://glassfish-samples.java.net/[Java EE Samples
project page] (`http://glassfish-samples.java.net/`).

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

|=======================================================================


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


[[GSUPG00024]][[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`/glassfish3/glassfish`

Installations on the Windows operating system:

SystemDrive`:\glassfish3\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`/glassfish3`

Installations on the Windows operating system:

SystemDrive`:\glassfish3`

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