Aonix > Products > PERC > FAQ >

 

 

PERC FAQ

Is PERC compatible with the latest JDK™ and Java™ standards?

What is ahead-of-time(AOT) compilation?

What is just-in-time(JIT) compilation?

What are the advantages of developing with Java?

What are technical advantages of PERC?

What processors and operating systems do you support?

Are the PERC products only for "hard real-time" applications?

If my embedded software project does not have real-time constraints, do I still need the PERC garbage collector?

Does the PERC garbage collector permit preemption by other PERC threads? By native tasks?

What is the performance of the PERC virtual machine?

What development tools are provided with the PERC product family?

Which other Java Integrated Development Environments (IDEs) work with the PERC virtual machine?

Can legacy C/assembler code be integrated with PERC applications?

Can I get an evaluation copy of the PERC product family?

Can universities get free copies?

Can I do the port myself if I were to use your source code?

How much does it cost to develop with PERC technologies?

 

Is PERC compatible with the latest JDK™ and Java™ standards?

Aonix performs extensive qualification testing of the PERC VM and its associated Java™ class library emulations using an Aonix-proprietary test suite.

PERC Ultra strives for full compatibility with the Java Standard Edition. PERC Ultra runs through suites of tens of thousands of compatibility tests to provide assurance that off-the-shelf Standard Edition libraries will work on the PERC VM. We are confident that no other clean-room implementation achieves the level of compatibility of PERC Ultra. Most Standard Edition libraries are provided as compatible high performance emulations included with PERC, or are available as free downloads. Please contact your Aonix account manager for any specific library compatibility questions.

PERC Pico is based on a highly constrained Java 5 library subset, specifically modeled as a profile of the RTSJ standard (JSR-01), and geared toward applications with highly constrained resources, requiring the fastest possible execution and smallest possible footprint. Please contact your Aonix account manager for a description of specific libraries that are supported.

< Back to Top >

What is ahead-of-time(AOT) compilation?

AOT in the embedded market is a cross compilation technology where Java™ byte code (ie. class files) are compiled directly to machine code prior to runtime. The precompiled class files may then be statically linked into an image to be loaded onto the target system. In addition to static linking, PERC offers the option to dynamically load AOT compiled code. The advantages of AOT are:

  • Extremely fast startup times
  • High performance(up to 20x of interpreted code)
  • High reliability
  • Sophisticated platform dependent optimizations

An AOT Compiler is provided with PERC for PPC, ARM, and x86 systems.

< Back to Top >

What is just-in-time(JIT) compilation?

JIT is a compiliation technique where Java™ byte code is compiled once to machine code at runtime. This removes the interpetation overhead and allows for faster performance.

  • High performance(up to 20x of interpreted code)
  • Minimizes footprint by not compiling unused methods
  • Allows for more portable code since there are not platform dependent executables

A JIT compiler is provided with PERC for PPC, ARM, and x86 systems.

< Back to Top >

What are the advantages of developing with Java™?

There are a number of reasons why developers prefer using Java™-like technologies for embedded real-time software compared to more traditional approaches of using assembly language and/or C.

  • Portable binaries allow for simple, seamless deployment of applications across a variety of different platforms. They can be developed on standard desktop systems before the embedded system's hardware and operating system have been chosen. They can also be easily migrated to newer more powerful processors, as well as to smaller processors that are less expensive and more efficient. They relieve many of the headaches associated with maintaining special-purpose cross compilers, version control of object and executable files, and porting of software to evolving hardware and operating system platforms.
  • Compared with development in assembly language, C, and C++, programmers working in the Java™ language are much more productive (typical developers see productivity benefits ranging from 2 to 10 fold). Java™ is object oriented, making it much more appropriate than assembly language and C for developing large software systems (comprised of more than 10,000 lines of code). Compared with C++, the Java™ language is much simpler, which makes it easier to learn and reduces the occurrence of bugs.
  • Programming in Java™ allows for the reuse of code. Reusing code helps companies leverage the maximum benefit from their investment in the original code's creation. By building the software for new product releases on the foundation of software developed for previous product releases, object-oriented programming methodologies decrease your time to market and development costs for each new product release.
  • The Java™ run-time environment enables easy "extensibility, " which means that a base product can be shipped with certain core capabilities that third parties and end users can then "extend" in order to customize and enhance the product's capabilities. The Java™ virtual machine allows new programs (represented as Java™ class files) to be added to the product while the product is running. (The Java™ specification describes this process as dynamic class loading.)
  • Compared with assembly language, C, and C++, the Java™ programming language is a much more secure, because the Java™ compiler and Java™ class loader cooperate to enforce the data encapsulation restrictions encoded by Java™ programmers.

< Back to Top >

What are technical advantages of PERC?

Compared with alternatives available from other suppliers, the PERC product family provides the best available collection of features and reliability for development of embedded real-time software. The unique assortment of capabilities offered by PERC technologies translates to lower development costs, quicker time to market, and better customer satisfaction. Among the particular strengths are:

  • Comprehensive emulations of standard class libraries are provided with PERC providing capabilities far beyond the typical limited "personal" or "micro" subsets provided with other solutions.  Java platform applications can be developed using the JDK™ tools and libraries on a host system and then executed in an embedded target using PERC.
  • AOT and JIT compilation speeds execution up to 20 times faster than interpreted code
  • High reliability and performance.
  • Remote debug support (AOT, JIT, and interpreted)
  • Superior memory management (accurate, incremental, and paced garbage collection)
  • Deterministic, with field-leading low latencies
  • Backed by unequaled support and services
  • VxWorks, VxWorks AE, VxSim, OSE, OSE Softkernel, Linux, Nucleus, QNX, WinCE, RTX, and LynxOS support
  • PowerPC, Intel X86, XScale, ARM, MIPS, and 68K support
  • Speed and footprint comparable to C/C++ solutions (PERC Pico), without the negative aspects of C/C++ development

Aonix professional services team offers all the assistance you may require in taking full advantage of all the benefits of the PERC product family in order to competitively differentiate your products in the commercial marketplace.

< Back to Top >

How much does it cost to develop with PERC technologies?

With the unique Aonix price model, there is no need to guess at the lifetime costs of using PERC. You will know in advance your per-unit costs so that it will be easy to see that the impact on your margins will be very low. Our price model makes it easy for projects of all sizes to use our best-in-class technology. Our customers tell us that our approach is more cost effective than even open source approaches, with far better technology and ROI. Consult with your Aonix account manager to learn more.

< Back to Top >

What processors and operating systems do you support?

The PERC Ultra 5.3 single-core/single-processor version is commercially available for: 

Vendor 

RTOS

RTOS Versions

Processor2,3

** See PERC Ultra Tested Vendor List

Linux

Non-EABI:
2.6.10+, 2.4.20+, glibc 2.3.2+

EABI:
2.6.12+,
glibc 2.5+

x86

PowerPC (swfp)

PowerPC (hwfp)

ARM (BE) (swfp)

ARM (LE) (swfp, hwfp, eabi)

ARM-EABI
(swfp)

ARM-EABI
(hwfp)

MIPS (swfp,hwfp)

Green Hills

INTEGRITY

5.0.10

PowerPC

LynuxWorks

LynxOS
 

4.2

X86

PowerPC (hwfp)

LynxOS-SE 

5.0

x86

LOS-178

2.0, 2.2.2

PowerPC (hwfp)

Microsoft

Windows

2000, XP (not NT)

x86

Windows Mobile

6.0, 6.1

ARM/Xscale

ENEA

OSE
 

4.6, 4.4.x, 4.3.1

PowerPC (swfp,hwfp)

Sysgo

PikeOS

2.2

x86

PPC (hwfp)

QNX

Neutrino

6.3, 6.2.1

x86

6.3

PowerPC (hwfp)

Wind River

VxWorks
 

5.5.1, 5.5, 5.4

PowerPC (swfp,hwfp)

6.6

PowerPC (hwfp)

5.5.1, 5.5, 5.4

x86

5.5.1

Coldfire

  ** PERC Ultra Tested Linux Vendors:
MontaVista Linux Professional Edition 3.1, 4.0 (x86, PPC, ARM LE, ARM BE, MIPS)
MontaVista Mobilinux 4.1 (ARM LE EABI)
Wind River Linux Edition 2.0 (x86, PPC)
Freescale Linux ltib4, ltib5 (PPC, ARM)
Denx ELDK 3.1 (PPC, MIPS)
Fedora Core 2, 5, 7, 8, 9 10
 (x86)
Red Hat Enterprise Linux 3, 4, 5 (x86)
RedHawk Linux 4.1, 5.1
YellowDog Linux 6.0 PPC
SUSE (version unknown) ARM

The PERC Ultra SMP 5.2 Multi-core/multi-processor version is commercially available for: 

Vendor 

RTOS

RTOS Versions

Processor

** See PERC Ultra SMP Tested Vendor List

Linux

Non-EABI:
2.6.15+, glibc 2.3.4+

x86

 ** PERC Ultra SMP Tested Linux Vendors:
Fedora 9, 10
 (x86)
RedHat Linux 4.1, 5.1 (x86)
RedHawk Linux 4.1, 5.1 (x86)
Wind River Linux 2.0 (x86)

Notes:

1.    This availability matrix is a representative sample of supported target OSs and Processors and is intended for general guidance only. Please check with Aonix regarding the latest PERC versions, supported RTOS versions and processors supported.  Additional environments and combinations can be supported under professional service contracts with Aonix.

2.    PowerPC support generally includes processors which are based on the PowerPC 603e(TM) or equivalent core technology. In most cases, both software and hardware floating point architectures are supported. Processors which meet this specification include the MPC7xx, MPC8xx, MPC82xx, MPC83xx, MPC52xx, and MPC74xx processor families from Motorola/Freescale Semiconductor, Inc. and the PowerPC 405, 440, 7xx, and 970 processor families from IBM Corporation.   Other processors which use the e500 core specification include the MPC85xx   PowerQUICC III processor families from Motorola/Freescale Semiconductor, Inc.  For these processors, the recommendation from Freescale is to use  RTOS-vendor-supplied C libraries for floating point operations.  Therefore, for RTOS vendors who follow this recommendation, software floating point architectures can be supported.  Please check with Product Management for details regarding availability for specific RTOS/CPU combinations.

3.    ARM support includes processors which meet the ARMv4 architecture specification as defined in the ARM Architecture Reference Manual, Second Edition. Both software floating point and hardware floating point (using a VFP coprocessor or kernel-based floating point emulation) are supported. Processors which meet this specification include the ARM7, ARM9, ARM9E, ARM10E, and ARM11 core families from ARM, Ltd., the StrongARM and XScale processor families from Intel Corporation, and the EP73xx and EP93xx processor families from Cirrus Logic, Inc.  Linux/ARM/StrongARM/XScale/swfp is also supported in big endian mode.

< Back to Top >

Are the PERC products only for "hard real-time" applications?

On the contrary, PERC offers capabilities across a broad range of embedded applications, ranging from non-real-time to the most stringent life critical applications.

PERC Ultra provides one of the fastest available virtual machines for VxWorks and OSE environments. And the PERC garbage collector provides superior reliability and throughput, even if you don't have requirements for its real-time determinism.

PERC Pico offers blazing speeds that cannot be matched by competing solutions, comparable to C/C++ speeds, and with a small footprint 5 to 50 times smaller than ordinary Java virtual machines. PERC Pico also provides low level device access.

In those cases where complex embedded applications have requirements both for JSE libraries and low level access with varying performance requirements, PERC Ultra and PERC Pico can be used together to provide an all-Java solution. There is no equivalent solution available from any competitor.

< Back to Top >

If my embedded software project does not have real-time constraints, do I still need the PERC garbage collector?

Most likely, yes. Many people have real-time requirements of some sort even if they don't think if them in such terms. You have "soft" real-time requirements if you would like your end users to have a consistent and predictable response from your system. For example, when your user presses a key, you probably would consider it unacceptable for the response to (occasionally and unpredictable) pause for a second (or several seconds) while garbage is being collected. This is what happens with conventional virtual machines. But with the PERC VM, response is always quick and predictable.

The PERC run-time environment has been tuned to address issues of importance to nearly all embedded applications. Among the attributes in which the PERC virtual machine excels are small memory footprint, high system throughput, and ultra high reliability. If these qualities are important to your selection of a virtual machine, then the PERC product should be your first choice for an embedded virtual machine.

One of the PERC Ultra run-time environment's most noteworthy differentiators is its sophisticated garbage collection technology, which is deterministic, incremental, defragmenting, precise, and paced. It achieves the best performance by using a hybrid of classic garbage collection algorithms that result in the right tradeoffs for speed, size, and determinism.

PERC Pico manages memory in a completely different way, eliminating all garbage collection overhead while providing safe and secure programming that is not available to C/C++ programmers.

< Back to Top >

Does the PERC garbage collector permit preemption by other PERC threads? By native tasks?

Yes. The PERC Ultra garbage collector is incremental, meaning that the total effort of garbage collection is divided into many small increments of work. Between each increment, the garbage collector can be preempted by PERC threads. When the garbage collector is resumed, it executes the next increment of garbage collection work. Note that certain other Java™ virtual machines may be preempted, but when the garbage collector is resumed, it starts from the beginning, wasting all of the garbage collection work that had been completed prior to the moment of preemption. Though the maximum time to complete an increment of garbage collection work depends on the speed of the host processor, typical configurations require no more than 150 microseconds to preempt the garbage collector.

If a native task or interrupt handler needs to preempt the garbage collector, it does so immediately, without even waiting for an increment of garbage collection to complete. When certain other embedded virtual machines advertise that their garbage collectors are preemptible, they generally mean they are preemptible only by non-Java™ tasks. The PERC garbage collector is preemptible both by native (non-Java™) tasks and by Java™ threads.

< Back to Top >

What is the performance of the PERC virtual machine?

Some competing vendors will try to convince you with carefully selected benchmarks intended to prove the superiority of their solution. Don't be fooled. The only reliable way to determine performance in the real world, is to try for yourself. Real world applications are far more complex in their content and in their interaction with their external environment than can ever be captured in a simple execution benchmark. Our customers have found, over and over again, that PERC provides the best performance and highest reliability in the real world.

The PERC Ultra virtual machine is one of the fastest JSE compatible virtual machines available for embedded platforms. For example, popular benchmarks such as CaffeineMarkEmbeddedApp show that the PERC virtual machine is more than twice as fast as other Java™ solutions for VxWorks. The PERC virtual machine is also the most deterministic virtual machine, offering a maximum latency of 300 microseconds while under load for a typical runtime configuration. Other Java™ solutions have a maximum latency of hundreds of milliseconds and even seconds on the same system -- three to four orders of magnitude worse than the PERC virtual machine!

For really high performance execution, nothing can beat PERC Pico, which offers comparable speed to C/C++ programs, and in real-life use is often faster than C/C++.

< Back to Top >

What development tools are provided with the PERC product family?

The development tools in the PERC Ultra include the ROMizer™, PERC Accelerator, and the PERC Shell.

The ROMizer reduces memory footprint and provides C-like pre-linked image for fast, reliable start-up. It has the following features

  • Enables execution of PERC code out of ROM or RAM
  • Integrates an optional AOT compiler which compiles Java™ code to native code for faster execution
  • Dramaticallly reduces the footprint
  • Dramatically startup time of an application

The PERC Acclerator accelerates standard Java™ class files and enables dynamic loading of ahead-of-time compiled code. The PERC Accelerator augments a standard binary class files with AOT code. When run on the PERC VM the AOT code will be detected and automatically run. When run on other VMs the standard Java™ byte codes will be used.

The PERC Shell provides an easy way to monitor and manage the PERC VM via a serial or telnet connection. Also, through the PERC Shell classes may be dynamically loaded via TFTP and run on the target machine.

The PERC virtual machine also provides support for remote debugging with popular IDEs such as Eclipse, Forte and JBuilder.

< Back to Top >

Which other Java™ Integrated Development Environments (IDEs) work with the PERC virtual machine?

The PERC virtual machine provides support for a subset of the Java™ Debug Wire Protocol (JDWP). Developers have used a variety of different Integrated Development Environments to develop programs for the PERC virtual machine, including Forte, JBuilder, and Eclipse.

< Back to Top >

Can legacy C/assembler code be integrated with PERC applications?

Yes. The PERC product family supports standard JNI (Java™ Native Interface) and PNI(PERC Native Interface) which allows developers to integrate C/assembler code with PERC code. PNI is a smaller, faster replacement for Sun's JNI.

Even better, though, is the option to use PERC Pico instead of C or assembler. This allows you to develop all of your code using Java source, with comparable or even faster execution performance, and no JNI overhead at all.

< Back to Top >

Can I get an evaluation copy of the PERC product family?

Yes. The PERC evaluation kit is fully functioning and runs on a variety of different platforms. If you are interested in obtaining a copy, please send e-mail

< Back to Top >

Can universities get free copies?

We encourage the use of PERC technologies in a university setting. Academic licenses are available at a discounted price. If you would like additional information about PERC academic licenses, please send an e-mail >.

< Back to Top >

Can I do the port myself if I were to use your source code?

Yes, it is possible to port the PERC virtual machine yourself with a source code license. Another possibility that may better fit your needs is to have Aonix' Professional Services port the PERC virtual machine to your desired platform. They have a wealth of experience, and have access to extensive compatibility and regression test suites, some of which have been licensed from third parties. Working with our Professional Services department to obtain a new port will, in most cases, provide you with a better quality port, delivered sooner, and costing you less money than if you attempt to do the port yourself.

< Back to Top >