Each Aphelion JRE is a software middleware that facilitates reliable and high performance runtime
execution of bytecode JAR files of Java applications created with Aphelion Java
Development Environment (JDE) on the RTOS/processor platform targeted by this JRE. In addition, each
JRE is fully capable of executing Java applications created with any other JDE (for example the
Embedded Eclipse JDE), as long
as each such application only uses the Java class libraries and API packages included in the JRE.
Ahelion JREs are comprised of Apogee-created RTOS/processor ports of Java technologies licensed from IBM.
In addition, each JRE can include the ports of Java technologies obtained from providers of open-source
Java software (Apache.org, for example), or Java technologies developed by Apogee. The technologies
licensed from IBM include the relevant components (the J9 Java Virtual Machine, for example) from
WebSphere Everyplace Micro Environments
(WEMEs). In addition, Apogee may include, if needed for running customer's Java applications, suitable
components from IBM's WebSphere Everyplace
Custom Environments (WECEs).
Aphelion JREs are available in four configurations: Mobile device JREs (MJREs), Foundation JREs
(FJREs), Extended JREs (EJREs), and Custom JREs (CJREs).
MJREs are suitable for running Java applications that use
Java API packages defined for the J2ME
CLDC platform by Mobile Information Device Profile
v2 (MIDP2) and by various J2ME CLDC targeted Java
Specification Request (JSRs).
FJREs are suitable for running Java applications that use
Java API packages defined for the J2ME
CDC platform by Foundation Profile.
EJREs are suitable for running Java applications that use
Java API packages defined by CDC Foundation Profile, and one or more Java API packages defined by
J2ME CDC targeted JSRs. In addition, each EJRE may include the ports of client-side "runtimes"
for various server-client services, and/or the ports of various application-level packages, as long
as each such runtime or application-level package only uses the Java API packages the ports of which
are included in the EJRE.
CJREs are suitable for running Java applications that use
one or more Java API package from the J2SE platform. In
addition, each CJRE may include the ports of client-side runtimes and/or application-level
packages, as long as each such runtime or application-level package only uses the Java API packages the
ports of which are included in the CJRE.
Components of MJREs
Each MJRE is comprised of RTOS/processor ports of the
following components:
- IBM's J9 Java Virtual Machine (J9VM) compatible with the
J2ME CLDC VM defined by
JSR-139.
- IBM's micro JIT (Just-In-Time) compiler integrated with the port of J9VM.
- IBM's Mobile Device Class Library (MDCL) compatible with the
J2ME CLDC MIDP2 defined by
JSR-118.
In addition, a given MJRE can include customer requested RTOS/processor ports of optional Java
API packages defined for the J2ME CLDC Platform by various JSRs, such as: the Bluetooth API defined
by JSR-82; Mobile Media API defined by
JSR-135; Security and Trust Services API defined
by JSR-177; Mobile Location API defined by
JSR-179; Wireless Messaging API defined by
JSR-205; Mobile Internalization API defined by
JSR-238; etc..
Every MJRE is compatible with Sun's CLDC
J2ME platform, which means that it can pass all tests in Sun's J2ME TCK test suites for the CLDC
VM, MIDP2, and relevant JSR-defined packages. For example, an MJRE that includes a port of IBM's
implementation of Mobile Media API can pass all tests in Sun's J2ME TCK test suites for the CLDC VM,
MIDP2, and JSR-135 Mobile Media API.
Components of FJREs
Each FJRE is comprised of RTOS/processor ports of the
following components:
- IBM's J9VM compatible with the J2ME
CDC VM defined by JSR-218. If the FJRE is
compliant with the Real-Time Specification for Java
(RTSJ), the port of J9VM also includes the implementations of RTSJ features that must be directly
implemented in a Java VM.
- IBM's RTOS/processor-targeted JIT (Just-in-Time) compiler integrated with the port of J9VM.
Or, in case of the RTSJ-compliant FJRE, Apogee's RTOS/processor-targeted JAOT (Just-Ahead-of-Time)
compiler derived from the corresponding IBM's JIT compiler and integrated with the port of J9VM.
(Note that JIT compilers cannot be used with RTSJ-compliant JREs because of their non-deterministic
behavior.)
- IBM's Foundation Class Library (FCL), which includes the Java API packages compatible with
API packages from the CDC J2ME Foundation
Profile (java.io, java.lang, java.math, java.net, java.security, java.text, java.util, and
javax.microedition) defined by JSR-219.
- Apogee's RTSJ Class Library (RTSJCL) if the FJRE is compliant with RTSJ. The library provides
the implementations of RTSJ features that need not be implemented in a Java VM.
Each FJRE can also include the ports of IBM's implementations of optional API packages Java Secure
Socket Extension (JSSE), Java Cryptography Extension (JCE), and Java Authentication and
Authorization Service (JAAS) packages defined for the J2ME CDC Foundation Profile by
JSR-219.
Every FJRE is compatible with Sun's CDC
J2ME platform, which means that it can pass all tests in Sun's J2ME TCK test suites for the
CDC VM and Foundation Profile.
Components of EJREs
Each EJRE is comprised of RTOS/processor ports of:
(i) IBM's J9VM compatible with Sun's J2ME CDC VM and equipped with the RTOS/processor-targeted JIT
or JAOT (if the EJRE is RTSJ-compliant) compiler; (ii) IBM's FCL compatible with Sun's J2ME CDC
Foundation Profile (FP) v1.1; (iii) Apogee's RTSJCL if the EJRE is RTSJ-compliant; and (iv) any
of the following components requested by a given customer:
- IBM's implementations of JSSE, JCE, and JAAS packages. The port of each package is integrated
with the port of FCL.
- IBM's Personal Basis Class Library (PBCL) compatible with Sun's CDC Personal Basis Profile (PBP)
v1.1 defined by JSR-217. The port of PBCL comes with a
port of IBM's UGL (Universal Graphics Library) or Apogee-customized eSWT (enbedded Software Widget
Toolkit) from the Eclipse Open Platform, each of which provides a transition layer between the
graphical APIs of java.awt package of PBCL and the graphical functions of a low-level graphics library
(LLGL) that comes with a given RTOS. The port of UGL is included in a given JRE if LLGL is
GTK2 that comes with most "embedded" Linuxes, or
GDI that comes with Windows CE or
Windows Mobile, or Trolltech's
Qtopia Core graphics library.
The port of eSWT is included, for example, if LLGL is
WindML that comes with
Wind River's VxWorks, or OpenGL that comes, for example, with
Green Hills' Integrity.
- IBM's Personal Class Library (PCL) compatible with Sun's CDC Personal Profile (PP) v1.1 defined by
JSR-216. If the Java applications targeted at a given
EJRE use the Java AWT graphics of PCL, then the port of PCL comes with a port of IBM's UGL or
Apogee-customized eSWT, each of which provides a transition layer between the graphical APIs of
java.awt package of PCL and the graphical functions of LLGL that comes with a given RTOS. The port of UGL
is included in a given JRE if LLGL is GTK2 that comes with most
"embedded" Linuxes, or GDI that
comes with Windows CE or Windows Mobile, or Trolltech's
Qtopia Core graphics library.
The port of eSWT is included, for example, if LLGL is
WindML that comes with
Wind River's VxWorks, or OpenGL that comes, for example, with
Green Hills' Integrity. In case a port of PCL for a given JRE can have a port of either UGL or eSWT, the
choice between the two is made according to the performance vs footprint and the level of graphics used
by Java applications that will be running on the EJRE.
- IBM's implementation of RMI (Remote Method Invocation) package defined by
JSR-66. The package includes a subset of J2SE RMI
APIs.
- Apogee's implementation of the Bluetooth API defined for the J2ME CLDC platform by
JSR-82, adapted by Apogee for use with EJREs
compatible with the J2ME CDC platform and augmented by a special "native interface" that allows easier
implementation of Bluetooth API "on top" of a low-level Bluetooth stack that comes with a given device.
- IBM's implementation of the JDBC (Java Data-Base Connectivity) package defined by
JSR-169. The package includes a subset of J2SE
java.sql APIs. A given port of JDBC can be provided with a port of IBM's Java Data-Base Enabler, which
facilitates the use of JDBC APIs for a wider range of databases (for example, the Oracle databases and
IBM's DB2).
- IBM's implementation of the XML Support & Web Services package defined by
JSR-172. The package includes the XML parser,
XML-handling APIs, and APIs for various Web services.
- IBM's implementation of the PKI, CRYPTO, and APDU packages from the Security and Trust Services API
(SATSA) defined for the J2ME CLDC platform by JSR-177,
adapted by Apogee for use with EJREs compatible with the J2ME CDC platform.
- Apogee's CDC-compatible implementation of JCRMI package defined for the CLDC platform by
JSR-177 SATSA. This implementation is based on IBM's
CDC-compatible RMI package defined by JSR-66, adapted
and extended by Apogee to provide the functionality defined by SATSA's JCRMI. Specifically, we added to
IBM's RMI package a socket factory running over SSL protocol, and a framework named "rmi-ssl" that allows
creation of both secure ssl server sockets and client sockets through a "tunneling mechanism"..
- IBM's implementation of the Mobile Location API defined for the J2ME CLDC platform by
JSR-179, adapted by Apogee for use with EJREs
compatible with the J2ME CDC platform.
- IBM's implementation of Mobile Internalization API defined for the J2ME CLDC platform by
JSR-238, adapted by Apogee for use with EJREs
compatible with the J2ME CDC platform.
- IBM's JXComm class library providing the APIs supporting various protocols (for example IPv6) for
serial and parallel communications.
- IBM's implementation of JINI package
providing the APIs that facilitate sharing of various devices (printers, disk drives, etc.) by
networked devices having the EJRE running on them.
- Client-side runtime packages ("runtimes") facilitating the services needed by customer's Java
applications or because of the way a device having the JRE running on it is used, as long as each
such runtime only uses the Java APIs from J2ME compatible class libraries and packages. For
example:
- The eRCP (embedded Rich Client Platform) from the Eclipse open platform, which includes the
Equinox OSGi R4 Framework, Configuration Admin Service, and
the Extension Point Framework runtimes. Or, Apogee can include in a given JRE the ports of only those
components of eRCP (for example, the OSGi R4 framework) that are needed by customer's Java applications.
Note that the Equinox OSGi R4 Framework facilitates various OSGi functions on the client device it is
running on, such as dynamic loading, installing, running, and un-installing of Java applications obtained
from OSGi servers in form of OSGi R4 bundles.
- The Remote Data Capture and Delivery runtime from IBM's
RFID Data Capture and
Delivery v6.0 product offering, which facilitates various RFID functions on a device it is running on
(RFID reader or "edge" server, for example). This runtime is optionally available with Apogee's LLRP (Low
Level Reader Protocol defined by ECPglobal in early 2007) adaptor, customized for use with a given RFID
device (an RFID reader, for example) having the EJRE running on it.
- The CORBA runtime, such as the OpenFusion from PrismTech
Corporation or the ORBexpress from Objective
Interface Systems.
- The IPv6 (Internet Protocol Version 6) runtime based on the
implementation of IPv6 that comes with
IBM'sWebSphere MQ v6.0.
- Runtimes for various services provided by IBM's
Micro Environment Toolkit
for WebSphere Studio (METWS), such as: Servlets, SyncML DS&DM protocols, and the runtime for
accessing IBM's DB2 Everyplace and Cloudscape databases.
- JSP (Java Server Pages) runtime from Sun's open-source
Glassfish webtier.
- Application-level packages providing various services needed by customer's Java applications
or because of the way a device having the JRE running on it is used, as long as each such
package only uses the Java APIs from J2ME compatible class libraries and packages. For example:
- The Java Message Server from IBM's
METWS.
- The Xerces XML validating parser from
Apache.org.
- The Log4J package from Apache.org.
- The DOM.Xpath package
from W3.org.
Every EJRE is compatible with Sun's CDC
J2ME platform, which means that it can pass all tests in Sun's J2ME TCK test suites for the
CDC VM, Foundation Profile, and other relevant CDC profiles and JSR-defined packages. For example,
an EJRE that includes the ports of PCL and IBM's implementation of RMI package can pass all tests
in Sun's J2ME TCK test suites for the CDC VM, Foundation Profile, Personal Profile, and JSR-69
RMI package.
Components of CJREs
Each CJRE is comprised of RTOS/processor ports of:
(i) IBM's J9VM compatible with Sun's J2ME CDC VM and equipped with the RTOS/processor-targeted JIT
or JAOT (if the CJRE is RTSJ-compliant) compiler; (ii) IBM's FCL compatible with Sun's J2ME CDC
Foundation Profile (FP) v1.1; (iii) Apogee's RTSJCL if the CJRE is RTSJ-compliant; and (iv) either
the entire GNU Classpath library (all of its
J2SE-compatible API packages), or an appropriate subset of Classpath if the Java applications,
client-side runtime, or application-lebel packages that will be running on CJRE do not need all the
J2SE-compatible Classpath packages.
In addition, each CJRE can include:
- Any of the J2ME-compatible client-side runtimes listed above (the Equinox R4 Framework, for
example), as well as other client-side runtimes that use J2SE APIs (for example, the runtimes for
accessing some server-resident databases that need the java.beans and javax.sql J2SE APIs), in
which case all such APIs are provided by the port of appropriate subset of Classpath.
- Any of the the J2ME-compatible application-level packages listed above (the Log4j package,
for example), as well as other application-level packages that use J2SE APIs, such as, for example, the
Tomcat servlet container from Apache.org, or the
JavaMAIL package from Sun's open-source Java
software website, in which case all such J2SE APIs are provided by the port of appropriate subset of
Classpath.
The GNU classpath presently includes the following API packages, a very large majority of which is
compatible with the J2SE 1.5 platform:
- java.applet, java.awt, java.beans, java.io, java.lang, java.math, java.net, java.nio, java.rmi,
java.security, java.sql, java.text, and java.util.
- javax.accessibility, javax.crypto, javax.imageio, javax.management, javax.naming, javax.net,
javax.print, javax.rmi, javax.security, javax.sound, javax.sql, javax.swing, javax.transaction,
and javax.xml.
- org.ietf.jgss, org.omg, org.w3c.dom.
Every CJRE is compatible with the J2SE platform or a subset of J2SE platform to the same extend
to which the port of Classpath or a subset of Classpath included in the JRE is compatible with
the J2SE platform or the corresponding subset of J2SE platform. This is assured by making each CJRE
pass all tests in Mauve test suite or its relevant
subset. Note that Mauve is a very extensive test suite (with over 50,000 tests and sub-tests) used
for testing the compatibility of Classpath with the J2SE platform.
Configurable CJREs
There are cases when Apogee's customers do not know which Classpath APIs should have their ports
included in requested CJREs, and it is not possible to include in these CJREs the ports of entire
Classpath because of the large runtime footprints of such ports. For example, a given CJRE will be
installed on several devices targeted by Java applications that differ from one device to the other
with respect to the Classpath APIs used by them. Or, a given CJRE will be installed on a device
targeted by Java applications of various end-user of the device, and such applications differ from
the end-user to end-user with respect to the Classpath APIs used by them.
Therefore, Apogee can provide to such customers "generic" CJREs, each of which includes a port of
the entire Classpath or such a subset of Classpath that has the API packages possibly needed by
various Java applications that will be running on the CJRE. Each generic CJRE comes with a special
tool used to create the "instantiations" of CJRE for various devices or for various end-users of a
given device. Thus, there will be one CJRE instantiation for each device, which will only include the
ports of Classpath APIs actually needed by Java applications targeted at this device. Similarly,
there will be one CJRE instantiation for each end-user of a given device, which will only include the
ports of Classpath APIs actually needed by Java applications of this end-user.
Creation of JREs for
Apogee's Customers
To assure the highest possible quality of JREs, Apogee creates a JRE for each customer-requested
RTOS/processor platform by starting with a most suitable existing JRE and re-porting the relevant
components of this JRE to the RTOS/processor platform, thus creating a base-line JRE. Then, we create
the RTOS/processor ports of all additional Java API packages needed by customer's Java
applications, customer-requested client-side runtimes, and customer-requested application-level
packages, and make the ports work with the beseline-line JRE. If possible, all such additional
packages are obtained from Apogee's repository of J2ME-compatible API packages. Otherwise, all such
additional packages are obtained from the Classpath. Then, we add to the resulting interim JRE the
RTOS/processorn ports of customer-requested client-side runtimes and/or application-level packages,
and make the ports work with the interim JRE. Finally, we complete the JRE by: (i) making it pass all
tests in relevant test suites (TCK tests suites, Mauve, or the appropriate subsetof Mauve); (ii)
making it correctly execute customer's Java applications provided by the completion date of interim
JRE: and (iii) tuning it for the highest possible runtime performance and the smallest possible
runtime footprint when running such Java applications.
In spite of the above labor-intensive process, Apogee typically charges very reasonable porting fees
for creating JREs because we can often leverage the work done when creating similar JREs for other
customers. This is especially so when the customer-requested RTOS and/or processor architecture are
among those targeted by existing JREs. Please, click here
for the lists of such RTOSs and processor architectures.
Typically, Apogee provides each JRE with a corresponding (targeted at the same RTOS/processor
platform) JDE. However, Apogee can also provide each JRE in a "stand
alone" form, which can be installed on a RedHatLinux/x86 or Windows/x86 host platform and then
downloaded on to the target device using Apogee-provided instructions and simple UNIX-like line
commands.
Please, contact Apogee by email or phone
for more information on features and capabilities of Aphelion JREs.
|
|
Home
|
Corporate Info
|
Products
|
Download
|
Order
|
News
|
Resellers
| |