Resources

JAVA ME EMBEDDED DOCUMENTATION
 


Red Triangle Oracle Java ME Embedded Data Sheet
Red Triangle Oracle Java ME Embedded FAQ (includes System Requirements)
Red Triangle Java ME Embedded Forum
 
Java Logo

 
Red Triangle Getting Started with Oracle Java ME Embedded - Developer Resources
 
 

NEW Release: ORACLE JAVA ME EMBEDDED 8 EARLY ACCESS 2

Red Arrow Technical Documentation, including
  • Platform Release Notes
  • Platform Getting Started Guides
  • API documentation
Red Arrow Oracle Java ME SDK 8 Early Access 2 - now available to support Oracle Java ME Embedded 8 Early Access 2 platforms.
 

ORACLE JAVA ME EMBEDDED 3.3 and 3.4

Red Arrow Technical Documentation, including

  • Platform Release Notes
  • Platform Getting Started Guides
  • API documentation

Red Arrow Oracle Java ME SDK 3.4 - now available with support for application development and deployment on all the development boards and platforms supported by Oracle Java ME Embedded 3.3 and Oracle Java ME Embedded 3.4.

 

 

VIDEO: Getting Started with Oracle Java ME Embedded and Raspberry Pi

VIDEO: Setting Up and Running a Java Application on an ARM Evaluation Board

VIDEO: Getting Started with Java ME Embedded 3.3 on the KEIL Board  Part 1,  Part 2


ORACLE JAVA ME EMBEDDED 3.2

Red Arrow Technical Documentation

Red Arrow Oracle Java ME SDK 3.2  - Download tooling support for small embedded application development.

 

TUTORIAL: Creating, Debugging, and Profiling a Mobile Embedded Application

 


 
Red Triangle  Getting Started with Oracle Java ME Embedded Client - Developer Resources
 

 

Technical Documentation

Oracle Java ME Embedded Client with BerkeleyDB Whitepaper

Installing Linux on an ARM-based BeagleBoard

Getting Started with the Oracle Java ME Embedded Client

Running a Small Server with the Oracle Java ME Embedded Client
 


 
Red Triangle  Oracle Java ME Embedded Client - System Resources
 
 

 


Oracle Java Micro Edition Embedded Client on ARM, Linux

CPU ARM v5 ARM v6/v7  

OS* Linux: kernel 2.6.22 or higher; glibc 2.9 or higher Linux: kernel 2.6.35 or higher; glibc 2.12.1 or higher  

  
FP Soft Float Soft Float  

Headful No No  

  
RAM 8MB or more for Java 8MB or more for Java  

ROM 5MB or more for Java 5MB or more for Java  

       



Oracle Java Micro Edition Embedded Client on x86 and MIPS, Linux

CPU x86 MIPS32 74K (MIPS)

OS* Linux: kernel 2.6.32 or higher; glibc 2.10.2 or higher Linux: kernel 2.6.22 or higher; glibc 2.8 or higher

FP Hard Float Hard Float

Headful No No

RAM 8MB or more for Java 8MB or more for Java

ROM 5MB or more for Java 5MB or more for Java

     

  * The minimum kernel and glibc versions stated above are based on testing on representative systems.  However, some embedded boards,  particularly newer multi-core systems, may require more recent kernel, glibc versions than the minimums listed above.  Check with your platform sources, including system vendor, Linux vendor, general kernel, glibc, third-party libraries release/patch info, to ensure that are you are running the correct kernel, glibc and third-party libraries versions for your platform.

 
 


 
Red Triangle  Oracle Java ME Embedded Client - FAQ

 

 

Q1: What is included in the Oracle Java ME Embedded Client 1.1.1 offering?

The Oracle Java Micro Edition Embedded Client is a client middleware stack that is designed for small devices. It is based on the Java ME Connected Device Configuration (CDC) technology which has been deployed on TVs, Blu-ray Disc players, set top boxes, electronic book readers, automated metering devices, multi-function printers, network and storage equipment, and more

The stack provides a full-featured Java Virtual Machine with capabilities for networking and graphics support, including support for the following technologies:

  • Connected Device Configuration (CDC) 1.1.2

    • Implemented on Oracle's world class Java virtual machine: CDC-HI (Hotspot Implementation) Dynamic Just-In-Time compiler technology

  • Foundation Profile (FndP) 1.1.2

  • Security Optional Package (SecOp) 1.0.1 including Java Secure Socket Extensions (JSSE) module

  • Optional packages: Web Services (JSR-172) , JDBC (JSR-169), RMI (JSR-66), XML APIs (JSR-280)

Q2: What are the system requirements for Oracle Java ME Embedded Client?

Details on the system hardware and software requirements are found in the Resources section.

Q3: What APIs are supported by Oracle Java ME Embedded Client?

Detailed API documentation is included in the product but developers can also reference the Java Specification Requests (JSRs) (available at jcp.org) that make up Oracle Java ME Embedded Client 1.1.1.

CDC API Overview

It’s helpful to examine how the CDC APIs are organized by comparing Foundation Profile, and Personal Basis Profile. Understanding these differences is an important part of CDC application development. As the name suggests, Foundation Profile provides a basic set of application support classes. The other profiles build on this by adding specific functionality.

Relationship

Package / Class

Description

Foundation Profile

java.io
java.lang
Java.lang.ref
java.lang.reflect
java.math
java.net
java.security
java.security.acl
java.security.cert
java.security.interfaces
java.security.spec
java.text
java.util
java.util.jar
java.util.zip

Full J2SE 1.4.2 support for most core packages and classes.

Some enterprise-level APIs have been removed to save space.

javax.microedition.io

The Generic Connection Framework (GCF) provides an abstraction of various communication technologies so that applications can make network connections and perform I/O without referring to a specific connection type.

Added by Personal Basis Profile

java.awt
java.awt.color
java.awt.event
java.awt.image

Support for lightweight components and some Java 2D graphics classes.

java.beans

Limited to runtime support. Design time manipulation of Java Beans must be managed by an external bean editor like an integrated development environment (IDE) based on Java SE technology.

 

java.rmi
java.rmi.registry

Limited RMI support for xlets, not intended for general-purpose use.

javax.microedition.xlet
javax.microedition.xlet.ixc

Xlet support.

 

 

Q4: How is Oracle Java ME Embedded Client functionally different from standard Java SE? 

The Oracle Java ME Embedded Client offerings are designed for resource-limited devices including TV set-top boxes, Blu-ray Disc players, electronic book readers, automated metering devices, printers, media players and other embedded devices. The APIs offered by the Oracle Java ME Embedded Client (powered by the CDC virtual machine) are more limited than Java SE but enable these offerings to support various devices with small footprints.

CDC 1.1 is designed around the two goals of Java SE 1.4.2 compatibility and support for resource-constrained devices. Java SE compatibility allows developers to leverage their investments in Java SE technology, including libraries, tools, and skills. Support for resource-constrained devices allows device vendors to offer a feature-rich Java runtime environment that can support secure, mobile, enterprise applications.

CDC supports the full Java virtual machine specification, including full class loading and core library features. At the class library level, CDC uses modified Java SE class libraries whose interfaces have been scaled to meet the needs of resource constrained devices and whose implementations have been optimized for small memory environments. In the interest of resource conservation, some class libraries based on Java SE have modified interfaces, while others have been removed entirely. The result is a flexible Java runtime environment that fits comfortably within a memory budget of a few megabytes for RAM and ROM.

The CDC 1.1 specification is based on a subset of JavaSE 1.4.2 and as such supports major and minor class file versions from JavaSE 1.4.2.
 

Q5: I don't see the platform I need supported, what can I do?

If your project has different hardware (cpu, memory) or OS requirements please contact us.  

Q6: How does the Oracle Java ME Embedded Client compare in performance with C/C++?

Though ultimately performance is application dependent, Java applications executed on top the Oracle Java ME Embedded Client perform on par with C/C++ applications. Many third party tests have demonstrated Java to be equal or better than C/C++ performance. Java's dynamic just-in-time compilation and aggressive in-lining generates target machine code that can be better optimized than static C/C++ compilation.

Q7: How do I call my native drivers and applications?

The Oracle Java ME Embedded Client provides an interface to native drivers and C or C++ functions called the Java Native Interface (JNI). JNI works by creating a Java-visible wrapper around the native code, a new header file to cross-reference the wrapper, and then a call from the Java program which allows parameters to be passed and received by the native code.

Q8: How do I debug my Java application for embedded use?

There is a full set of APIs and tools that enable you to debug your Java application. Both local and remote debugging are supported. There are also APIs, tools for resource management and performance profiling. CDC-HI supports JVMTI which enables support for local and remote device debugging and profiling of Java applications. Full documentation on how to start developing a new project, sample templates and how to setup a debugging/profiling session are included in the product bundle offering.

Q9: What application models are supported by the Oracle Java ME Embedded Client runtime?

CDC supports a couple of application models that allow developers to handle different user needs and deployment scenarios. These range from the basic standalone application model that is similar to a conventional native application, to managed application models that offload the tasks of deployment and resource management to application management systems.

Standalone Applications:
The most basic application model is the standalone application model, which dates back to the beginning of Java technology. Developers use standalone applications for fixed-purpose designs such as utilities and productivity applications. When the Java virtual machine is launched, it is given the name of the main application class for loading. This class must include a method named main() that handles the rest of the application’s class loading, object creation, and method execution.The standalone application interacts directly with the Java runtime environment to manage its own life cycle and system resource needs. When the main() method exits, the standalone application terminates.

Managed Applications: Xlets

Personal Basis Profile includes support for the xlet application model, which is similar in purpose to the applet application model, but different in design. The main differences are that xlets have no dependency on AWT, and they have a cleaner life cycle model. An xlet is loaded into an xlet manager, which manages its life cycle and provides it with system services through an XletContext. An xlet manager can handle multiple, dynamically loaded xlets that can communicate with each other through an RMI mechanism.

Because the xlet application model does not depend on AWT, xlets can be used in both GUI and non-GUI scenarios ranging from smart phones to set-top boxes.

Q10: What graphic libraries are available on top of the standalone Oracle Java ME Embedded Client runtime?

The Oracle Java ME Embedded Client 1.1.1 release for target devices currently is only available in headless form without any graphics support. However, a headful form of the runtime is available, but requires a special license from Oracle and is not available through any public channels. The headful form of the runtime supports Personal Basis Profile (PBP). PBP supports lightweight components and some Java 2D graphics classes enabling applications to draw shapes, display text and images and handle input events. If you are interested in obtaining the headful form of the runtime, please inquire here.

Q11: Is possible to integrate the Oracle Java ME Embedded Client with an embedded database?

Yes. Included in the Oracle Java ME Embedded Client 1.1.1 release is the JDBC Optional Package for CDC/Foundation Profile (JSR-169). This optional package provides the necessary Java interfaces to connect to and query an installed native embedded database driver. The database must have a JSR-169 compatible driver, and this driver should have an implementation of the DataSource API.

Q12: How can the Oracle Java ME Embedded Client help secure local data and network traffic?

Security is a principal feature of Java technology and has guided the evolution of the Java platform from its beginning. CDC includes different levels of security that give users, developers, service providers, and enterprises an application framework with a powerful security architecture.

  • Virtual machine security includes runtime features such as class verification, and language features such as the omission of pointers. These security features have removed an entire class of security threats called buffer stack overflow. Early Java technology releases used these features to build a simple but powerful “sandbox” security model that allows Web browsers to download Java applets without exposing the user’s system to extra risk.
  • Signed classes extend the sandbox security model and verify the integrity and origin of a Java class file to the Java virtual machine that attempts to load it.
  • Policy-based security was introduced in J2SE 1.2. Security policies give application developers fine-grained control over who can access the data and interfaces of an application’s objects. A security policy file is a set of specified permissions and policies that can be modified by system administrators during deployment.
  • Cryptography provides a standard way to encode software and data for secure transfer or archiving. The Java security framework includes the Java Cryptography Architecture (JCA), which is a standards-based framework for providing, selecting, and using cryptographic functionality.


CDC includes the same security framework as Java SE. This security framework is extensible, in that it is based on algorithm-independence, and interoperable, in that it can use different implementations of security services. Foundation Profile (JSR 219) includes three optional packages that use this framework to add security features:

  • Java Authentication and Authorization Service (JAAS). Optional Package provides a pluggable framework for authentication and authorization. The authorization component allows the specification of access controls based on code location, code signers, and code executors in separate policy files that can be maintained by a system administrator. At runtime, a Java runtime environment can provide different login modules, such as keystore, without requiring application modification. Alternate login modules can be integrated at runtime to support systems like biometric or Kerberos authentication.
  • Java Cryptography Extension (JCE). Optional Package extends the Java Cryptography Architecture to include encryption, key generation, key agreement, and message authentication code (MAC) generation services.
  • Java Secure Socket Extension (JSSE). Optional Package provides services for using Secure Socket Layer (SSL) to encrypt data and authenticate communicating peers.

Q13: Can existing 3rd party Java libraries/applications (for instance: OSGi, Java web servers, etc…) be easily integrated/executed on a device powered by the Java Embedded runtime?

Yes. The Oracle Java ME Embedded Client allows additional application and system jar files to be added to the runtime classpath. Once the Java library/application uses the same APIs supported by the Oracle Java ME Embedded Client stack and is compiled (with the Java compiler – javac) using 1.4.2 as the target version, it should run on the Oracle Java ME Embedded Client.

Examples of such applications are the Jetty web server and commercial 3rd party OSGi products.

Q14: Can I run multiple Java applications concurrently on a device powered by the Oracle Java ME Embedded Client runtime?

Yes. CDC supports the ClassLoader class enabling applications to define and load their own classes. This coupled with the Xlet lifecycle model and XletManager allows for development of a basic application management system that supports multiple concurrently executing Java applications.

Q15: How is Oracle Java ME Embedded Client licensed?

Contact us to find out about our licensing, support and partner programs. 

Q16: How do I get started?

Getting started is easy. Please refer to the "GETTING STARTED WITH ORACLE JAVA ME EMBEDDED CLIENT" section at the top of this page. In general there are three main steps:

  1. Download - Starting from the Downloads page, choose the latest Oracle Java ME Embedded Client binary release. Please Contact us if you do not see what you need.
  2. Develop - Develop your embedded application with Oracle Java ME Embedded Client SDK delivered with the product - development is free. Try your Java application together with the Oracle Java ME Embedded Client runtime on your platform. If you are new to Java, there is a lot of help including our tutorials, blueprints, documentation and training as well as extensive resources from the Java community.
  3. Deploy - Ready to deploy? Contact us to find out about our licensing, support and partner programs.