What's new in the Project
- August 2000: the JCOD protype is demonstrated in Japan
- August 1999: the JCOD Compiler Project pages are created
Overview of the project
The JCOD project (Java Compiler On Demand) consists in
developing a dynamic compile server technology for embedded systems
applications. Such applications would run on a device (the Target)
adhering to the following scenario:
- The Embedded Java application is downloaded from an application
server into the Target system. The target and the
application server can be connected to the Internet or any sort of
company Intranet. The Target system runs a Java Virtual
Machine that is the CHAI VM from Hewlett-Packard, augmented with new
capabilities enabling it to support Compile-On-Demand of the
application byte code.
- The goal of the compile-on-demand framework is to only compile the
most frequently executed code. In order to know which code is most
frequently executed, the VM is augmented with profiling capabilities.
- As the application is running, the target enhanced VM dynamically
profiles the executed code. When the execution cost of a Java
method becomes predominant, the JVM requests to a compile server
to compile it.
- A compile server listens to the network for such compile requests,
processes the request and sends a reply to the target when completed. To
process a compile request, it invokes a compiler that
generates native code. This native code is encoded in a specific "network
load-able object format".
- Once the compiler has generated the native code, the compile server
sends the object format it to the requesting target. Upon reply
(receiving the compiled code), the target device installs the
native code, relying on the services of a Dynamic Compiler API. On the
next invocation of the corresponding application method the JVM will
automatically switch to the native code.
- In order to encourage the wide spread of this technology to open a
third party market, and to speed up its deployment to many embedded
microprocessors, the specifications of the compiler back-end, that allow
to generate code for a particular processor, will be made public.
- During this overall dynamic compile on demand process, the system
behavior can be observed through the JCOD User Access,
which provides a user interface allowing monitoring and tracing of the
system activity.
- The compiler architecture includes a microprocessor independent
front-end that interfaces with a microprocessor dependent back-end (a
code generator). The compiler consists of a single front-end and as many
back-ends as there are device (microprocessor) types. We will publish
the specifications of the back-end component so that anyone can
implement a back-end of its own for any microprocessor. The back-end
specifications will consist of a Java API specification for the objects
generated by the front-end, with a description of the methods that the
back-end object must implement in order to generate native code. As long
as this back-end library is compliant with the specifications, it can
generate code for any microprocessor. Therefore this Java specs can be
implemented by any third party.
Architecture
The project includes three major functional components:
- a Target Enhanced Java Virtual Machine that is a client of
the Compile Server.
- a Compile Server which invokes a compiler to translate the
bytecode into native code.
- a JCOD User Access, which logs the related activity and
provides developers and system administrator with means for
starting/shutting down the system, for tracing of errors, and viewing
performance measurements.
The Targets communicates with the server over the network
through a dedicated protocol. This protocol is named the Java
Compile-On-Demand Protocol (JCODP). Therefore in the sequel of this
document, we will refer to the components as the JCOD Compile server, the
JCOD User Access and the JCOD Target Client JVM.
The JCOD User Access communicates with the Compile Server
using the HTTP Internet protocol, as a Web browser is the basic tool that
is used by users to access information stored on the server.
Si vous avez un probleme avec cette page, svp contacter
le ouaibe-master.
Last modified :
Friday, 15-Sep-2000 17:49:02 CEST