Java has typically two translations steps before code can be executed on a target device. These translations can be done by compilation or interpretation. The first step is from the written code (Java source code, .java file) to Java Byte code (.class file). The second step is from Java Byte code to machine code. Usually, the second step is done by an interpreter or a JIT compiler. Initially, code is interpreted until it is determined to be performance critical; at which point it is compiled.
JamaicaVM uses an interpreter for noncritical code; whereas, performance critical code can be compiled using an ahead of time compiler (AoT). The delay in compliation that a JiT compiler introduces is thus avoided on a virtual machine like JamaicaVM by statically compiling the Byte Code before linking the executable. For the AoT compilation an additional tool like JamaciaBuilder is needed.
Our JamaicaVM embedded development kit comes with a set of tools beyond the standard Java tools to assist the programmer with the optimal deployment of a Java or Realtime Java program.
Uses Java Byte code (.class) and the JamaicaVM to build an executable image. In addition, it is used to improve the performance of the application.
Customers do not have to use JamaicaBuilder. But this tool helps to optimize your application for your specific runtime and your target and to protect your intellectual properties by avoiding deployment of plain bytecode.
JamaicaXLR8 is a JAR accelerator and compiles a .jar file for a specific target. This typically yields better performance at the cost of requiring more memory.
The biggest advantage is that if parts of the application need to be dynamically changed or if 3rd party applications are to be used these will get accelerated as well. The complete application can be held modular while improving performance.
Jamaica Trace depicts the interactions of all used Java threads of an application. This tool can be used for applications built via Jamaica Builder of interpreted applications running on JamaicaVM. It shows information like thread priorities, status, activities of the garbage collector, etc.
Use cases are:
- Improving performance
- Identify deadlocks
- Identify root cause
- Check if your application behaves as designed
Jamaica Profile Analyzer
Improves the readability of the profile and thereby the understanding of the application as well as the runtime behaviour of the application. A profile is created during runtime and records which classes, methods, etc. of the application are used how often. A profile can be generated while running code in JamaicaVM or by running the built application.