banana slug Embedded Systems and Java at UCSC banana slug


Home Page

Current Projects

Embedding Jini

Java to native compiler

Previous Projects

Java Nanokernel

Embedded Java

Soft-Instructions

Java Network Camera

Other Info

People

Publications

Overview

The embedded systems group at UCSC is investigating programming language and operating system issues related to network appliances. These applicances can range from network computers to network routers, from pocket pagers to multifunction peripherals (e.g. fax+email+telephone), or from remote weather stations to automobile traffic monitoring devices. Our primary projects at the moment are extending Java's Jini technology to very small systems, incapable of supporting a JVM, and compiling Java to native code for embedded systems. Other projects include a port of a JVM to an embedded systems running a small OS developed specifically to support a JVM on a small embedded processor.

The primary features of Java that make it attractive for embedded systems are platform independence (write-once run-everywhere), remote update/execution, plus the advanced software development features of object oriented programming, garbage collection, safe pointers, and strong typing.

One of Sun's latest additions to the Java family is Jini. We are developing a simple protocol and supporting software, that will allow a very small embedded system, to join a "Jini Federation". The main idea is to provide a "proxy server" that listens for the embedded system to broadcast a registration request (using our simple protocol). The proxy server then locates the Jini proxy and registers it with a Jini lookup service, on behalf of the embedded system. The Jini proxy, is a standard Jini proxy, and as far as the client is concerned, the embedded server is a standard Jini server.

Although Sun is pushing agressively towards smaller JVMs for embedded systems with its Java Micro Edition, we believe some embedded systems will continue to be below the threshold for even these reduced virtual machines. We are therefore building a Java to native compiler, targetting very small memory systems. The primary obstacle is that typical Java to native compilers create very large executables. This is a result of Java's late binding semantics and dynamic method invocation. We are developing algorithms that can be used to resolve at compile time exactly what methods might be called during the execution of a specific application. This allows us to create much smaller executables.


Last modified: 7 November 1999
maintained by Charlie McDowell / charlie@cse.ucsc.edu