Over the years there's been some confusion about whether a Java EE
product is required to include a database server. It's not. But
it's a bit more subtle than that. I've explained it to people many
times, but it's time to make it more clear in the spec.
The following changes to the spec (for Java EE 8) attempt to clarify
this issue (EE.2.10), as well as raise the bar on requirements related
to this (EE.8.5). Let me know if you have any questions or concerns.
Thanks.
-----
EE.2.10 Java EE Product Packaging
[Insert before existing EE.2.10, renumbering following sections]
This specification doesn't include requirements for the packaging
of a Java EE product. A Java EE product might be provided on distribution
media, for download on the web, or as a service available only on the
web, for example. A Java EE product must include implementations of
all the APIs required by this specification. These implementations
might depend on other software or services not included in the Java EE
product. The customer may be required to combine or configure the
product with other software or services that are necessary to meet the
requirements of this specification. The documentation for the Java EE
product must fully describe all the required software and configuration.
For example, a Java EE product might depend on a database server, a
naming service, a mail service, and/or a messaging service. All
configurations in which the product is defined to operate must include
all the software and services necessary to meet the requirements of
this specification.
Whether these services are available (running, accessible on the
network, properly configured, operating correctly, etc.) may be
controlled independently of the Java EE product - they may be
unavailable when the Java EE server is started, or they may fail while
the Java EE server is running. This specification does not require the
Java EE product to assure the availability of these services. However,
if such a service is needed to meet the requirements of this
specification, the Java EE product must ensure that the service has
been configured for use and will be usable when it is available.
For example, this specification requires that applications can use a
database. If the Java EE product requires a database server to be
separately installed, and requires the Java EE product to be configured
to use that database, such configuration must be done before
applications are deployed. This ensures that the operational
environment of applications includes all the required services.
EE.8.5 Deployment
[Insert the following after the second paragraph]
As described in Section EE.2.10, the Java EE product might depend on
external services to meet the requirements of this specification.
While the Java EE product is not required to assure the availability
of these services, it is required to ensure that these services have
been configured for use. Deployment of applications must fail if such
required services have not been configured for use.