These FAQs are designed to provide the best understanding of MicroEJ products. You’ll find here some basic information. Feel free to contact us if you need further explanations about products and services. Our support team will also be happy to help you with technical problems.
What is MicroEJ®?
MicroEJ provides a development solution to prototype, develop, test, and deploy cross-platforms applications for embedded systems based on microcontrollers, microprocessors, and mobile devices. MicroEJ lets developers design embedded Java platforms, work on simulated devices, and mix C and Java codes.
What is a Java platform?
A Java platform embeds a Java Virtual Machine as well as native libraries (firmware, drivers, or BSP) and Java libraries.
In MicroEJ, each embedded Java platform, called EmbJPF, has a sibling PC-based simulated platform called SimJPF. The SimJPF reproduces the exact environment of the EmbJPF. The SimJPF can be extended with Mocks to simulate the native code of the JPF (C, asm, …), or to interface hardware peripherals with the simulator.
Ready-to-use MicroEJ Java platforms are also available for development boards and enable a quicker start with MicroEJ evaluation version.
What is a Java Virtual Machine?
A Java Virtual Machine is a generic processor that does not assume any implementations. It provides a reduced but high level instruction set such as rich multi-tasking features. Another important feature is the automatic memory management – also called Garbage Collector or GC – that off load programmers from memory allocations and des-allocations concerns. Garbage Collector algorithms usually better optimize memory allocation than any other technology. Like all other processors, the Java Virtual Machine offers an interrupt system and interfaces with lower software levels in C code.
How do I activate a MicroEJ free trial license?
– Create a user account
– Choose and download your product
– Run the installation package and get your User ID from the MicroEJ Workbench
– Go back to your user account and enter your product P/N and User ID to submit an activation request
– Once your product is registered, you’ll receive an email with your activation key
Follow our step by step installation guide.
How do I activate a MicroEJ development license?
Download your product and run the corresponding installation package
– Create a user account
– Submit your activation request by entering your product P/N, USB dongle ID, and registration code supplied by your SDK vendor
– Once your product is registered, you will receive an email with your activation key.
What are the minimum hardware requirements (MIPS, RAM, ROM) to run MicroEJ Java platforms?
The Java Virtual Machine code size is about 28KB of code (ROM) and 1 KB of RAM on microcontrollers architectures. For typical graphical user interfaces, the Java platform – including a RTOS, a Virtual Machine, a comprehensive graphical library and the usual firmaware (drivers) – is less than 160KB overall. A typical processor usually requires a 32-bit core architecture and 30 DMIPS processing capabilities.
How can I evaluate MicroEJ? What evaluation board do you support?
You can evaluate MicroEJ without hardware because it includes a simulator for all embedded systems architectures. If you want to evaluate MicroEJ with a board, you can use evaluation kits like those available from semiconductor vendors. Visit our Free Trial page to know which kits are supported. If you choose a hardware board already supported by MicroEJ, you can use the MicroEJ built-in Java platforms (aka Java kickstart platform) and start to develop your Java application without writing a single line of C code. MicroEJ also includes source code examples (platforms and BSP) for these kits so you can easily build your own platforms and applications without starting from scratch.
I’m new to Object Oriented Programming. Can you advise a book to learn more about the Java technology?
Try “Thinking in Java” by Bruce Eckel. We also recommend to study Object Oriented Programming design patterns (check “Design Patterns: Elements of Reusable Object-Oriented Software” by Erich Gamma).
How can I contact MicroEJ support?
You can send your technical support request by email and we’ll connect you to one of our experts.
To which standards MicroEJ complies with?
MicroEJ uses Embedded Devices Configuration (EDC) specified by the ESR Consortium. EDC provides the java.io, java.lang, java.util, java.lang.annotation, java.lang.ref, and java.lang.reflect APIs. On top of these core APIs, some other APIs provide native RTOS, USB serial links, File System, and networking. All other APIs (B-ON, MicroUI, MTW, SNI, Eclasspath, … ) comply with the ESR standards.
The goal of ESR standards is the Interoperability of embedded Java applications, in respect of fundamental rights:
(1) the standard is adopted and maintained by a not-for-profit organization,
(2) the standard has been published, a free-of-charge documentation is available with the permission to copy, distribute and use it for free,
(3) the intellectual property – i.e. patents possibly present – of (parts of) the standard is made irrevocably available for free,
(4) there are no constraints on the re-use of the standard.
What is the typical boot time of MicroEJ Java platform on an ARM Cortex-M microcontroller?
2ms from power-up to the first Java line of code on an ARM Cortex-M microcontroller @ 120MHz.
Are the MicroEJ UI libraries different from PC-based Java solutions? What other standard libraries are different within MicroEJ?
The Embedded UI libraries are different from Swing and are specifically optimized for embedded systems and thread-safe, but the APIs design philosophy are similar.
MicroEJ supports two API specifications for GUI:
(1) MWT – Micro Widget Toolkit (ESR011): a widget based framework,
(2) MicroUI – Micro User Interface (ESR002): a minimal UI interface with display, screens, composite views, LED, 2D rendering, image transformation, transparency, fonts, button/keyboard/pointer/keypad, state.
IS2T also provides different frameworks for common screen navigations, animations and several widget renderers themes.
Which platform should I use for a simple Hello World application that I can modify and enhance on my evaluation board ?
Try the Java kickstart platform and load the built-in Hello World Java example. Check the “How to play your first embedded Java application” getting started for our supported evaluation board from the documentation page.
Can I mix legacy C/C++ code with Java code?
Yes, SNI (Simple Native Interface, ESR 012) library enables you to include C/C++ code within your Java platform. It only requires a couple of C and Java lines of code. Another way is to use the MicroEJ Shielded Plug for a Publish/Subscribe interface scheme.
I need RTOS-independent code, can I use the Java technology?
Yes, the Java application code is RTOS independent.
I get instant problem feedback when editing my code in MicroEJ? Is that expected?
Yes, that is the usual MicroEJ Eclipse-based behaviour, you do not need to wait to compile.
Is a Java Vector thread-safe?
Yes, Vectors are thread-safe. ArrayLists are not thread-safe.
Why are there several MicroEJ installers?
There is currently one installer version of MicroEJ for each C Compiler: GCC, Keil and IAR. If you do not intend to write C code and use our built-in Java kickstart platforms, you do not need to care about the C compilers and you just have to pick one of the installer (e.g. GCC).
How can I install MicroEJ on a Linux Machine?
First, install Eclipse 3.8 from here.
Download the MicroEJ .zip archive (MICROEJ-PKG-STD-_-x.y.z.zip) from here, and unzip it.
Launch Eclipse, Help -> Install New Software -> Add -> Archive: install the MicroEJ plug-in in Eclipse from this location MICROEJ-PKG-STD-_-x.y.z/eclipse-packages/workbench-PRO.zip.
Uncheck the “Group by items by category” checkbox.
Once installed, import the platforms:
– In Eclipse -> Windows -> Preferences -> MicroEJ: set a local folder that will be used to store the platforms.
– In the sub-menu Available platforms, click on import and set to the folder “eclipse-packages” from the archive MICROEJ-PKG-STD-_-x.y.z/eclipse-packages/. Import the wanted platforms (*.jpf, *.xpf).
At last, import the examples File -> Import -> MicroEJ -> Examples: set to the folder “eclipse-packages” and import the wanted examples.
Depending on the flash loader or debugger you are using (eg. JLINK USB), install the corresponding driver from the loader/debugger provider.
How can I view the memory map of my application? Is there anything like jmap?
MicroEJ provides a Memory Map Analyser. When compiling your project for the embedded platform (EmbJPF), a .map file is generated and can be opened with the Memory Map Analyzer.
How easy is it to build an embedded Java Platform?
MicroEJ provides built-in platforms for standard evaluation boards but you can also build your own platform in a couple of clicks. MicroEJ JPF Designer is the right tool for that. Let’s take the example of an ARM Cortex-M microcontroller:
– Select your compiler (GCC, IAR, Keil)
– Select your MCU/MPU/Mobile architecture (in our example: Cortex-M0+, Cortex-M3, Cortex-M4)
– Start from a built-in platform template (basic to full library configuration)
– Select the libraries you want to include: UI lib, Widgets lib, Java to C interface, BSP, Native Language Support (NLS)…
– Click on “Build platform”. Your platform is now available to run any Java application.
One More Question?
Our team of experts would be pleased to meet you and tell you more about the MicroEJ solution. Do not hesitate to contact us, we speak French, German, and English.
Get in Touch