DEVELOPERS CORNER

 

FREQUENTLY ASKED QUESTIONS - Development and Support

Have a question? Send it to info@zucotto.com

1.1 Why would someone want to use Java in an embedded system?
1.2 Why would I want to use KJava rather than Personal Java?
1.3 Why would I want to use Personal Java rather than KJava?
1.4 How do I port KVM on my hardware platform?
1.5 Is there not a way to pre-compile and pre-link Java applications offline?
1.6 What is Zucotto's approach to putting a VM into hardware?
1.7 What are the technical issues to be aware of in the design an embedded Java system?
1.8 What are the non-technical issues to be aware of in the design an embedded Java system?
1.9 Do you have an associated Debugger/Monitor with Whiteboard?
1.10 What is your environment? Does Zucotto provide an IDE?
1.11 How will Zucotto reduce my time to market?


1.1 Why would someone want to use Java in an embedded system?

The two main reasons are connectivity at the application level of the target system and a better software development process.

There is no better environment for service delivery than Java. First, the ability to securely download code from the Internet and run it in locally is the most compelling reason for using Java. In the age of e-commerce, services can be anywhere on the web and having the ability to provide a service for a very low cost to your customers will eventually be a must as the Internet's reach extends beyond the desktop.

As a bonus, the development team benefits from a very elegant programming language for all your code, from your applications to your drivers, which includes concepts that are important to the design of embedded systems. While Java will not turn anyone into an embedded software expert, it can make both senior and junior firmware designers more productive.

  • Senior designers can better teach and enforce a development process which is critical to the timely release of quality products.
  • Junior designers spend less time fixing common bugs on development environments which are more often than not lacking in troubleshooting features.

Beyond the advantages mentioned above, Sun has made Java even more suitable for embedded applications by grouping its technologies into three editions: Micro (J2METM), Standard (J2SETM), and Enterprise (J2EETM). Each edition features:

  • Java virtual machines* that fit inside the range of consumer devices
  • a library of APIs that are specialized for each type of device
  • tools for deployment and device configuration
  • a profile, that is, a specification of the minimum set of APIs useful for a particular kind of consumer device (set-top, screenphone, wireless, car, and digital assistant) and a specification of the Java virtual machine functions required to support those APIs

J2ME specifically addresses the vast consumer space, which covers the range of devices ranging from cell phones, pagers and PDA's all the way up to the set-top box, an appliance almost as powerful as a computer.

J2ME is further divided into two configurations, Connected Device Configuration (CDC) and the Connected Limited Device Configuration (CLDC) as seen in the diagram below.


 

J2ME Architecture

Referring to the above figure, the J2ME architecture is composed of configurations and profiles. A configuration is composed of a minimal layer of core libraries designed to provide just enough functionality to safely and securely download Java classes to a device and configure the Java environment. The rest of the functionality needed to provide a complete runtime environment for a particular kind of device is provided within the context of an industry defined profile.

The first configuration, the Connected Device Configuration (CDC), uses the classic Java virtual machine. This virtual machine is a full-featured virtual machine with the same functionality you would find in the virtual machine residing on your desktop system. The second configuration, the Connected Limited Device Configuration (CLDC), uses the K Virtual Machine, a small footprint virtual machine for severely memory constrained environments. The CLDC is targeted for Java environments of 128-512KB, and the CDC is targeted for Java environments of greater than 512KB. Zucotto has designed an end to end solution for wireless Internet and mobile multimedia products initially targeted at CLDC type devices and extending Java capabilities to these devices in emerging wireless technologies such as Bluetooth, 802.11 and Home RF.

-top-


1.2 Why would I want to use KJava rather than Personal Java?

Sun has taken their first 5 years of experience with Java and gone back to the lab to create K Virtual Machine (KVM). It wasn't an attempt to shrink current virtual machines down into these devices, but instead it is a clean slate implementation designed specifically for embedded systems. When designing the KVM, the engineers based their design decisions first on lower memory footprints.

Moreover, ramping up on the KVM is possible in a week or so for a designer already familiar with virtual machine concepts.
 
For more background on the KVM, see the KVM Whitepaper.

-top-


1.3 Why would I want to use Personal Java rather than KJava?

Preferably don't. From our experience, Personal Java is still large for embedded systems and really works only in the same context as enterprise Java, which means unlimited resources. It would be possible to build a working Personal Java embedded device, but anyone who tries to compete using a KVM solution would most likely beat you in terms of price, performance and time to market.

If your product is more or less an embedded computer which is not cost-sensitive and your project manager is known for his patience, Personal Java is worth considering. You can freely download the Personal Java source from the Javasoft and see for yourself if Personal Java is for you.
 

-top-


1.4 How do I port KVM on my hardware platform?

You have three options, in increasing order of complexity:

  • We at Zucotto can do it for you by porting SLICE
  • You can obtain the source code for SLICE, following the integration directives and do the port
  • You can select an independent OS vendor, download the code from Javasoft and do the port.

Being aware of the fact that exercising a same piece of software onto various hardware platforms brings more intermittent problems to light, we like the first option as it allows us to validate our integration process on one more hardware platform.

-top-


1.5 Is there not a way to pre-compile and pre-link Java applications offline?

There are other options than a hardware virtual machine. Some companies are using a precompiler, which turns a set of Java classes into native code. There is merit to this approach which would provide the best of both worlds if it indeed worked. We are however highly skeptical regarding the debugging of such a system. It is already challenging to debug an embedded Java system with the many layers required by a JVM (OS, KVM, interrupt context, applications and Java applications) that running Java code through a "nativizer" which obfuscates most of the debugging information adds too much risk to an embedded project.

-top-


1.6 What is Zucotto's approach to putting a VM into hardware?

First of all, we do not put the entire KVM into hardware, only components requiring large amounts of processor time, thinSlice and the support layer handle the rest. In our efforts in this area, we have created design tools for ourselves that are optimized for our process and we incorporate these in the design tools that we offer you for developing your embedded application. We are making our embedded Java platform the path of least resistance between your requirements and the solution.
 

-top-


  1.7 What are the technical issues to be aware of in the design an embedded Java system?

Hardware in general, resources and drivers in particular.

The Java paradigm of "write once / run anywhere" works well in the context of desktops where resources are effectively unlimited and crashes are more or less tolerated. Embedded systems have very different usage profiles. To mention only a few:

  • They typically run for extended periods of time without a reset of a power down
  • Crashes are unacceptable
  • Real-time behavior must be predictable and guaranteed
  • Cost sensitivity results in tight memory budgets

A successful (and by successful, we mean timely and quality integration) port must be respectful of the context of embedded products, therefore require more hardware awareness than the promised "write once / run anywhere on the designer's part.

-top-


1.8 What are the non-technical issues to be aware of in the design an embedded Java system?
 

As much as possible, do not segment your development team into one Java team and one native team. In all the cases we have seen, this split resulted in a polarization of cultures and an "us versus them" mentality.

Our model makes it easier to avoid this pitfall as there is no native team.

-top-


1.9 Do you have an associated Debugger/Monitor with Whiteboard?

Yes. We added some basic debugging features to Whiteboard and will add some more as it evolves. Current features are non-intrusive, they do not affect the system.

-top-


1.10 What is your environment? Does Zucotto provide an IDE?

We don't provide one. What we do provide are simple, powerful tools that integrate into your environment, similar to Sun's approach with the JDK. We may provide an IDE in the future, but we will make sure that this does not limit you.

-top-


1.11 How will Zucotto reduce my time to market?


While we take great pride in our Xpresso, SLICE and development environments, the embedded Java expertise within Zucotto is our greatest asset to make our customers successful.

From the start of every embedded Java project, there is a vision. The product takes shape in the brains of a group of architects who look at all the features that can be put into a client device given a set of services somewhere across a network, public or private. The idea takes shape and when product managers are confident that the product meets customer needs, the design is launched.

The traditional approach can be characterized as backwards looking. Selections are made with respect the processor, the RTOS and the wireless chipset. You then design hardware and layout, negotiate JVM licensing and have the RTOS vendor integrate the JVM onto the chosen processor. Next, the processor, JVM, RTOS, Wireless chipset and Wireless protocol stack from a variety of different vendors must all be integrated! You then face the task of debugging integrated "plug and play" units. You can only start planning for integration at the end of this process! Overall, this process results in heavy integration effort, large integration risk, large project management effort, constraining integration schedule dependencies and supplier delivery dependencies.

In contrast, our approach is forwards looking. Our solution is highly integrated, you deal with one supplier, and we will work with you to fill in any gaps. Our emphasis on process means that you can proceed forward from the moment you choose Zucotto. We reduce effort, risk and schedule dependencies in the integration area plus we reduce your project management effort and dependencies on supply schedules from multiple vendors. Time to market and costs decline, plus you will sleep better at night! Overall, we put have put a strong emphasis the process of "getting there" so that you can move forward.


 

-top-

Home | Corporate | Products | Sales | Media | Careers | Technical | Contact | Recipes