Java
devices
that make
useful for
people
learn and use
Developers
programs
to create and run
and the
internet
What is Java Technology?
This diagram is a model of Java™ technology. The diagram
explains Java technology by placing it in the context of related
concepts and examples, and by defining its major components
and the connections between them. It shows how developers
use Java technology to create programs that benefit people
everywhere, and explains how computers and networks relate
to Java technology.
The diagram is intended to help developers who are familiar
with one part of the Java platform understand other parts. It
relates unfamiliar technologies to ones with which developers
may already be familiar. The diagram also provides an overview
for developers who are new to Java technology and an
introduction for non-programmers who want to improve their
ability to converse with developers. For more information,
visit the web site at http://java.sun.com.
Concept Maps
The diagram takes the form of a concept map – a web of linked
terms showing both overall structure and details. By showing
everything – the forest and the trees – in a single view, concept
maps help people visualize mental models and clarify thoughts.
In concept maps, verbs connect nouns to form propositions.
Examples and details accompany the terms. More important
terms receive visual emphasis; less important terms and
examples are in gray. Purple terms and purple lines indicate a
process. Terms followed by a number link to terms preceded
by the same number.
Trademarks
© 2002 Sun Microsystems, Inc. All rights reserved.
Sun, Sun Microsystems, the Sun logo, Java, the Java
coffee cup logo, J2EE, J2SE, J2ME, Enterprise JavaBeans,
EJB, JavaBeans, Java Card, Java Community Process,
JCP, Javadoc, Java Embedded Server, JavaHelp, JavaServer
Pages, JSP, Java TV, Java 3D, Jini, JVM, PersonalJava,
Solaris, and SunOS are registered trademarks of Sun
Microsystems, Inc.
Any errors or omissions are the responsibility of the
authors. Comments are welcome; contact Audrey Crane
at audrey@dubberly.com.
February 14, 2003
Acknowledgements
Prepared for the Sun Developer Web Services Group
by Dubberly Design Office/Devine/Faris/Saddler.
Significant contributions from the following people
made this map possible: Josh Bloch, Lisa Friendly,
Doug Kramer, Paul Pangaro, Robert Patten, Monica
Pawlan, Carla Schroer, Leigh Shevchik, Alan
Sommerer, Ken Tallman, and James Urquhart.
Thanks also to Cindy Bloch, Adam Cohn, Andrey
Dikanskiy, Larry Freeman, Dale Green, Joann Gray,
Cori Kaylor, Onno Kluyt, Stuart Marks, Shawn Moore,
Chuck Mosher, Shaler Ney, Eduardo Pelegri-Llopart,
Lori Uzzo, Brad Wetmore, and Hinkmond Wong.
Java object model
Java virtual machine
(JVM
TM
)
Programming language
Development process
Java Community Process
SM
Java
TM
2 Platform:
end-to-end solutions
Documentation
for enterprise servers and applications
for desktop servers and applications for consumer and embedded servers and applications
is a name for a ... programming language
is also a name for ... SDKs and JREs
defines a set of ... APIs 13
is implemented as a set of ... platforms 27
can be used to write ... programs 24
such as ... applications 28
enable ... services 26
run on and connect ... devices 25
define
may
contain multiple
may contain
multiple
implement
implement
or
refer to ... objects 15
are
constrained by
are
constrained by
are invoked by
may define required
or on ... objects 15
define a location to store
can be
are processed by the
to create
has
have
may be an
may override existing
may define new
may rely on parent's
contain multiple
are ratified by... the JCP 2
serves as the
defines the
behavior of ... APIs 13
define
can be
used
through
inherits methods and properties from a
may also be a
field types can be
field or class types can be... classes 12
may implement
are runtime instances of ... classes 12
have
are created by
implement
running in RAM are
may be categorized as
are constrained by
are distinguished by
manipulate
enforces a
is defined by the
enables
improves
can be improved by
can be improved by
implements
implements
controls access to
enable
defines
that is an is organized by
provide
such as
is defined by the ... Java Language Specification 43
is used to write ... programs 24
is used to write ... class libraries 10
is based on the
outline
lay out
contribute to
the generation of
contribute to
the generation of
testing
may find a
may be thought of
as running ... objects 15
such as
allows adjustment of ... objects 15
may include
are used to write, test, and debug
is trapped by a
are examples
of ... classes 12
may consist of
often discuss Java in
draft
are led by
consist of members of
and do the work of the
overseen by the
are represented on the
is submitted to
administers the
chairs the
exists within
has a which is
comments on
may request major revisions via
may revise
develops
works with
supports the development of ... Java 0
provides ... documentation 42
owns the ... Java trademark 1
make(s) ... SDKs 29
makes versions of a ... JVM 18
provides
is represented on
champion
is added to the
definition of ... Java 0
become members of the JCP by signing
within the context of the Java Community Process,
may function as ... developers 23
support the development of ... Java 0
make ... SDKs 29
make versions of a ... JVM 18
certify Java applications using
provide building blocks for run on
are composed of are composed of are contained in include
run on run on
are composed of
read configurations from a
are configured by
is described by have interfaces provided by
can call other
always have
can be ... J2SE applets 36
can be ... J2SE applications 38
can be ... J2ME applets 40
can be ... MIDlets 41
have
such as and
is used to build and run
can be a
run inside a
include
can be created by
runs on
runs on
run on
are ... class libraries 10
may include ... tools 17
are used in ... development environments 16
include ... class libraries 10
are used to create ... programs 24
include a
include ... packages 11
are used to run ... programs 24
always directly build
embed programming code in a
depends upon
such as
are
may utilize the
are run in
are configured by a
is housed in
are built using
run inside an
run inside a
are built using
are built using
run inside a
is created by a
is contained in
never directly build may directly build
include ... platform packages 37
contains
runs on
may be enabled by
are enabled by
provides a
is one type of
is used to
build and run
is used to
build and run
are
are
are built using
are built using
may run inside a
run inside an
for example
are contained in the
are built with
may be enabled by an
may be enabled by a
are built using
are built using
run in a
are built using
runs on run on
contains a
subset of a
include a
includes a depends on
depends on
such as
are
are built withis used to build and run are built using a
are
built with
may be
built with
may be
built with
may be
are
built with
is contained in the
defines a runs on run on
is used to build and run are built with are built using
run on
run on runs on runs on a
is used to
build and run are built with the runs on a runs on run on
is instantiated by
runs on
runs on
run on
run on
is based on subsets of
for example
such as
such as such as
run in a
may be interpreted by a
such as
such as
such as
such as
specifies and
documents ... J2EE 32
specifies and
documents ... J2SE 35
specifies and
documents ... J2ME 39
such as
are contained in
depend on
are contained in
runs on
are
is used to create are read by a
run on a
defines
are
stored in
compiles source code into is stored in
translates
byte code into
constitute a
when debugged,
contributes to
is edited in the
begins with
are used to build the
begins with
if accepted becomes a may become a may become a
is added to the
definition of ... Java 0
may be implemented in
is instantiated in a
12
... interfaces 14
connects ... devices 25
supports
supports ... web services 33
engage in
are facilitated by
are instantiated in
features and benefits
has a which is
is distinguished by
may download and install ... JREs 30
often own ... hardware 31
some of whom are ... developers 23
is developed with ... platforms
are used by
support ... services 26
such as ... hardware 31
object-oriented programming language 9
explicit error handling 22
garbage collection 21
security model 20
architecturally independent applications 19
Java virtual machine 18
hosts
is the foundation for
the completed
helps identify
problems with
such as
is a
runs inside a ... web browser 34
run inside a ... web browser 34
members join the JCP by signing the
includes members from
is used to build applications
and services based on
may become platform packages via the ... JCP 2
may submit or comment on a ... Java Specification Request 3
who are members of the Java Community Process serve on ... expert groups 5
form ... Java developer communities 4
comment on a ... public draft 6
participate in the ... Java Community Process 2
may request revisions from the ... maintenance lead 7
who are members of the JCP elect the ... executive committee 8
often use ... development environments 16
participate in the ... development process
consist of
J2ME Tutorials
Java Series
Mobile Information
Device Profile (MIDP)
API Documents
Connected Limited
Device Configuration
(CLDC) API Documents
Connected Device
Configuration (CDC)
API Documents
J2ME API Specification
Connected Device
Configuration (CDC)
Specification
Connected Limited
Device Configuration
(CLDC) Specification
Foundation Profile
Specification
J2SE Platform
Specification
J2EE Platform
Specification
J2EE Connector
Specification
J2EE API Specification
Java Series
J2EE Tutorials
PersonalJava
Specification
Personal Basis Profile
Specification
Personal Profile
Specification
J2SE API Specification
Java Series
tutorials
Java Language
Specification
(JLS)
J2SE Tutorials
J2ME Platform
Specification
Mobile Information
Device Profile (MIDP)
Specification
point-of-sale (POS)
systems, pagers, cell
phones, and personal
digital assistants (PDAs)
Java Card, subscriber
identity module (SIM)
phones, and multi-
application smart cards
network-aware
appliances,
automobiles, and
Telematic networks
Windows
Mac OS
Unix
Linux
Irix
Solaris
TM
SunOS
TM
AIX
Alpha
RS6000
FreeBSD
NeXT
HP-UX
Compaq Tru64
beOS
VMS
Solaris, Linux, Windows,
HP-UX, AIX, FreeBSD
Windows
Solaris
TM
proprietary systems
Palm OS, Windows CE,
RTOS, Linux, Symbian OS,
proprietary systems
Java forums
Java developer
communities
specification leads
(spec leads)
Java Community
Process
SM
(JCP)
Executive
Committee
alternate
implementations
Sun companies
Java Specification
Request (JSR)
community
draft
public
draft
new Java specification Reference Implementation
& Technology Compatibility Kit (TCK)
Program
Management Office
maintenance
lead
visual programming tools
class
structures
user interface
frameworks
bug
development environments tools
expert groups
logo
source code framework
source code
text editor
classes
text files
compiler
byte code
binary files
virtual machine
machine instructions
fragment or
application
debugger
J2EE
documentation
J2SE
documentation
J2ME
documentation
other
documentation
J2ME
TM
J2ME
applets
J2ME
applications
MIDlets
Personal
Profile (PP)
Profiles
CDC configurations CLDC
J2ME
Wireless
Toolkit
Java virtual machine
specialized
embedded applications
PDA
applications
cell phone
applications
MIDP
Java Card
TM
Java TV
TM
Java Embedded
Server
TM
(JES)
applications for use
with Smart Cards
Java Card applets
Java Card API
Java Card
virtual machine
interactive television
applications
Java TV Xlets
Java TV APIs
PersonalJava
TM
Java virtual
machine
televisions
embedded
applications
Java Embedded
Server
framework
Java virtual
machine
proprietary
systems
real-time operating
systems (RTOS)
Java Card
Development
Kit
platforms
applications
runnable components
components
packages or
libraries
Software Development
Kits (SDKs)
Java runtime environments
(JREs)
operating
systems
specific devices (hardware)
deployment
descriptor
EJB
container
Enterprise
JavaBeans
TM
(EJB)
servlets JavaServer
Pages
TM
(JSP
TM
)
web container
connector
architecture
business logic server components client components user interfaces
web-based
applications
J2EE platform
packages
J2EE specific
packages
Java virtual
machine
Java-enabled
web server
J2EE
application
server
Java Web Services Developer Pack
servers
J2EE Software Development Kit
web services
web browser
markup language
Extensible Markup
Language (XML)
Simple Object
Access Protocol
(SOAP)
UDDI
J2SE applications
platform packages
Java regular
expressions
J2SE Software
Development Kit
Java Plug-In Java-enabled
browser or viewer
operating system-based
Java virtual machine
J2SE optional packages
desktop applications
Java 3D
TM
JavaHelp
TM
optional
packages
J2ME
optional
packages
J2SE
TM
Swing
containers
enterprise applications client/server
applications
J2EE
TM
applications embedded
in a web page
J2SE applets
JavaBeans
TM
Beans
personal
computers
workstations
portability
Java virtual machine specification
critical resources
explicit error handling
garbage collection
security model
architecturally independent applications
Just-In-Time compilation
dynamic compilation
performance
syntax and
keywords
object-oriented programming language
benefits and advantages
reduced development time
ability to write higher-quality code
more maintainable code
ability to call non-Java functions
principles
objects
serialization
class libraries
packages
classes
methods constructorsinner classes
superclass (parent class)
abstract class
APIs
subclass (child class)
fields
types
scope
commentsdeclarationsstatements
data
primitives
object references
Javadoc
TM
comments
Javadoc
tool
interfaces
methods and fields
browsable
documentation
API spec
activities
services
software
trademark
logo
Jini
TM
Provides a complete
specification for the
syntax and semantics of
the Java programming
language.
11
10
13
14
15
12
18
25
9
22
21
20
19
16
17
32
35
36
37
38
39
40 41
43
42
2
3
0
5
4
6
8
7
33
34
24
26
27
23
28
31
30
29
1
Application
programming
interface
specification.
Runtime instances of classes.
In runtime, refers to the process of
turning an object into a data stream for
purposes of transmission or storage.
Classes are source
code files that
describe a unit of
programming. A class
relates a set of data
(fields) and functions
(methods) that use
the data.
Class libraries are
organized collections
of prebuilt classes
and functions used to
create other classes.
Class libraries can be
part of the Java
standard – meaning
they have been
ratified by the Java
Community Process –
or created by
individual developers
for their own or their
company's use.
An application programming interface is the
written or understood specification of how a
piece of software interacts with the outside
world. It specifies what input the application
or application component accepts, how the
software will behave, and what outputit will
provide. All computer software relies on a
variety of APIs to achieve tasks such as
writing a file or displaying text. APIs often
depend on other APIs.
Particular to Java,
interfaces are source code
files that define a set of
functions (methods) that
are required by a class.
Interfaces name methods
and set an expectation for
each method's behavior,
but do not implement the
methods. Interfaces allow
a piece of code to be
written in such a way that
the code can work with
any type of class that
supports the interface.
Abstract classes permit child
classes to inherit a defined
method or to create groups of
related classes for polymorphic
behavior.
Primitives
generally enable
basic math or
comparison
operations.
Inner classes reside inside
another class, allowing
for better organization.
Should not be confused
with subclasses.
In running
programs,
statements
prescribe actions
or a sequence of
actions.
Scope limits access to methods and properties. Levels include:
• public: can be called or manipulated freely
• protected: can be called or manipulated by a class in the same package
• private: can be called or manipulated only by the same class.
Comments specifically formatted to
be processed by the Javadoc tool.
In running
programs,
declarations define
a variable's
existence and
determine scope.
Notes that developers include to
explain source code to
themselves and others.
Methods are
detailed
instructions that
cause a running
object to take
action or
manipulate data.
Fields are
sometimes
referred to as
properties.
The virtual machine may encounter a problem, or exception, while a program is running.
The Java language requires that pieces of code which are likely to encounter a particular
error offer a mechanism for handling the exception at runtime. When an error is
encountered, the virtual machine executes the code designed to respond to the error.
Watching for data in memory that is no longer needed and freeing the memory for reuse.
Other programming languages require programmers to free memory explicitly when a
piece of data is no longer needed, which can increase the development effort.
Architecturally dependent machines that are available
for nearly every contemporary operating system.
Significantly improves virtual machine
performance by translating groups of
instructions from byte code to machine
code rather than one instruction at a
time.
Goes beyond Just-in-Time compilation by
examining the code as it runs and
focusing optimization efforts on the most
critical pieces of code as it executes.
Dynamic compilation is enacted by the
Java HotSpot
TM
virtual machine.
One application can run in multiple environments
without being rewritten or recompiled.
Including memory and hard drive.
Such as the object
model, inheritance,
modularity,
abstraction, hierarchy,
implementation
hiding, information
hiding, encapsulation,
and polymorphism.
Java Native Interface (JNI) provides a method for calling native
functions such as operating system or legacy library functions.
As opposed to a purely procedural
programming language.
The Java language has roots in C, Objective C,
SmallTalk, and LISP.
Class structures
are basic source
code that
provides a
framework
for the classes,
describes the
class hierarchy,
and provides the
names of the
class methods
and properties.
Does not include
implementation
details (method
definitions).
Downloads and documentation are
available at http://java.sun.com.
Selected Java products have been
localized into many languages. This
localization is one of the key factors
for adoption of Java technology
worldwide.
The combination of the class
structures and the user interface
framework into a skeleton of the
application's overall source code. Does
not include implementation details.
Basic source code that
describes the graphical
user interface.
Does not include
implementation details.
The software development process is iterative, with several
rounds of designing, writing, compiling, running, and testing
before software is deployed.
A software utility
that turns human-
readable text files
into machine-
friendly byte
code.
Are computer-
readable.
Binary files
usually have
the suffixes
.jar, .jcm,
.class, .ear, or
.war.
Is platform
independent. It
almost never can
be read by the
processor
directly.
Is human
readable.
Are processor
dependent. They can
be read by the
processor directly.
Java developers often use specific development environments
called Integrated Development Environments, or IDEs.
Are human-readable.
Usually have the
suffixes .java or .jav.
A Reference Implementation is
a working example of the JSR.
Other companies will produce
their own implementations.
The TCK is a suite of tests,
tools, and documentation that
provides a standard way of
testing an implementation for
compliance with a Java
specification.
A proposal to develop
a new specification
or significant revision
to an existing spec.
Companies include
IBM, Motorola,
Nokia, Oracle,
Novell, Netscape,
Hewlett-Packard,
Apple, and BEA.
There are two
executive
committees:
J2EE/J2SE and J2ME.
Universal Description,
Discovery, and Integration
provides a way for businesses
to discover each other. Can
also be used programmatically
by applications to locate an
application or service.
There are several
implementations of
Mobile Information
Device Profile,
including MIDP for
Palm 1.0.3, MIDP
1.04 for Monty, and
MIDP 2.0.
Profiles are packages required
for a particular vertical
market segment or set of
related devices. Other profiles
include Foundation, Game,
Personal Basis Profile, and PDA.
A system that
enables
developers to
incorporate
online help in
applications or
web sites.
A set of classes
used to write
three-dimensional
graphics applets
or applications.
Connected Device
Configuration
includes specific
packages that are
subsets of the J2SE
equivalent:
java.lang
java.util
java.net
java.io
java.text
java.security
A set of
packages that
define basic
services for a
range of
devices.
Connected Limited
Device Configuration
includes specific
packages that are
subsets of the J2SE
equivalent:
java.io
java.lang
java.util
javax.microedition.io
The J2ME Wireless
Toolkit includes the
necessary tools,
emulators,
documentation, and
examples to develop
and simulate Java
applications targeted
at cell phones,
pagers, PDAs, and
other small devices.
A JVM can be optimized for cell phones,
PDAs, and other similarly resourced devices.
Java 2 Platform Micro Edition is intended to run on devices
with limited computing power, such as cell phones or PDAs.
J2ME has reduced processor and memory requirements. It is
based on subsets of J2SE with additional components for
market segments such as hand-held devices.
Manage
transactions,
life-cycles,
and data
persistence.
Provides a mechanism
for connecting to legacy
information systems.
Cannot function on their
own, but are used by other
components or runnable
components.
Enterprise JavaBeans
define independent pieces
of business logic or
application behavior that
can call either servlets,
JSPs, or other EJBs.
Includes the binary version of the J2EE Reference
Implementation, plus the development tools and
documentation needed to build a J2EE application.
Sometimes referred to as
required or core packages.
Servlets respond to
an URL request.
Servlets commonly
generate HTML, XML,
or dynamic images.
They can call other
servlets, JSPs, or EJBs.
On handheld and
embedded devices, the
initial implementation
of Java technology
addresses the software
needs of networked
applications running
on consumer devices
such as set-top boxes
and smart phones.
A JVM can be optimized
for set-top boxes.
Specifies packages:
http
log
device access
timers
framework
Components that can
run on their own.
Examples include:
¡avax.activation
javax.ejb
javax.servlet
javax.transaction
javax.xml
JSPs define a page
element, which can be
HTML, XML, or another
markup language. JSPs
execute as servlets.
They can call other
JSPs, servlets, or EJBs.
Some JVMs are
optimized for servers.
Provides a framework for developing and hosting J2EE applications
that run inside web containers. The pack includes the Java APIs for
XML included in the Java XML Pack, the JavaServer Pages Standard
Tag Library (JSTL), the Ant build tool, the Java WSDP Registry Server,
and the Tomcat Java Servlet and JavaServer Pages container.
Java 2 Platform Enterprise Edition is
used to build secure, scalable,
distributable server-based
applications for large enterprises.
Can be HTML,
WML, XHTML,
or voice XML.
Provides a structured and
extensible mechanism for
organizing and presenting data.
Many Java packages and classes
utilize XML to store and exchange
data.
Provides a way for applications
to communicate. SOAP is
typically transmitted via HTTP.
Discrete units of software
functionality that conform to the
JavaBeans API and are designed to
be reusable components. The
JavaBeans API makes it particularly
easy for Beans to be utilized by
visual programming tools. (In an
architecture analogy, these would
be prebuilt walls, windows, or
doors.)
A component kit that
provides a set of graphical
user interface elements.
Swing can be used to
rapidly build applications
without writing original
code to support common
interface elements.
Supports a native look and
feel on many common
operating systems.
A powerful set of text matching and
manipulation routines supported by
many programming languages.
Java technologyimplementsPerl-
compatible regular expressions.
Some JVMs are optimized for various types
of laptops, workstations, and desktops.
Includes the necessary
tools, emulators, and
runtime environment
to develop and test
applets for the Java
Card platform.
Depend on the Java
Media Framework
(JMF), which is
optional to J2SE but
required for Java TV.
Includes specific
packages:
java.lang
javacard.framework
javacard.security
javacardx.crypto
A JVM can be
optimized
for residential
gateway servers.
Telematic networks
connect computers with
telecommunications
systems.
Some browsers may be Java-enabled
because they include the Java Plug-In.
Some users may need to download
the Java Plug-In for their browsers.
Installing the Java Plug-In will also
install the J2SE runtime environment.
Java 2 Platform Standard Edition is intended to
run on desktops, laptops, and workstations. J2SE
also includes the core language packages and
classes used by J2EE and J2ME.
Implement a main method. A class that
defines an application must declare a
main method, which the Java virtual
machine uses as the starting point for
the application. The main method gets
executed when the application starts.
Extend the applet class, which
provides developers with a basic
framework for rapid development of
a limited application. This includes a
basic user interface framework and
event model.
Also referred to as required or core
packages, platform packages are the
heart of the Java programming
language. The packages include
myriad classes that define user
interface components, a
programming event model, text and
math processing tools, code-level
security, objects for memory storage
of complex data, and methods for
invoking remote applications, to
name just a few.
Includes Web
Services, Getting
Started, Java XML,
Internationalization,
Sound, and Java 2D.
Such as user-controlled camera
views and video on demand.
Java technology is especially
useful in devices that are
connected by a network.
Such as ATMs and
point-of-sale services.
Such as home services and
network-aware automobiles.
The J2SE SDK includes the source code,
class libraries, development tools, and
runtime environment required to build
Java applications and applets.
Including servers, web-based solutions, stand-alone
applications, and clients.
Including news services, instant messaging services, e-
mail services, communication software, collaboration
software, discussion forums, games, the world wide web,
productivity software, image-creation software, and
marketplace services.
Including getting information, communicating,
collaborating, playing, working, creating, and buying
and selling.
A Java specification describes
some aspect of Java technology,
including language, virtual
machines, platform editions,
profiles, and APIs.
Jini network technology provides
one infrastructure for delivering
services in a network and for
creating spontaneous interaction
between programs that use
those services.
is used to build ... web services 33
A standardized way
of integrating and
shaping business logic,
data, and processes
across a network.
A JRE is the software environment in
which programs compiled for the Java
virtual machine can run. The runtime
system comprises everything necessary to
run programs written in the Java
programming language, including the
Java virtual machine, which may be a Java
interpreter, and the platform packages.
JREs may be developed by Sun or by other
companies.
Hosts EJBs,
servlets and JSPs.
Can host EJBs,
servlets and
JSPs.
Optional packages define
a set of methods to
address specific
functionality required for
certain specialized
applications. Applications
that require optional
packages must be shipped
with the package code.
Specifies that the entire
J2SE JLS is applicable to
J2EE, includes additional
specifications for J2EE,
specifies what features
the JVM must support,
and what the platform
packages are.
Includes the JLS and
documentation
describing what the
platform packages are
and what features the
JVM must support.
Specifies which parts
of the JLS are
applicable to J2ME,
what features the JVM
must support, and
what the platform
packages are.
Java BluePrints
Guidelines, patterns,
and code for end-to-end
applications.
is available via http://java.sun.com.
The Java Specification Participation
Agreement is a one-year renewable
agreement that allows signatories to
become members of the JCP.
Alternatively, developers can sign the
more limited Individual Expert
Participation Agreement (IEPA).
Alternate implementations are written
to the same specification and pass the
TCK, but can be licensed differently
and may have enhanced features
beyond the reference implementation.
JSPA
Java™ Technology Concept Map