Excelsior JET User’s Guide
Table Of Contents
00
00
00
0000000000000000000000
Overview
Excelsior JET at a glance
Established features
JET Optimizer
JET Runtime
Installation Toolkit
What is new in Excelsior JET 6.0
Installation and setup
System requirements
Installation
Profiles
Profile management
Creating a profile
Compilation
Updates
Update installation
Update management
Cleaning up backed up configurations
Excelsior JET Launcher
Creating a new project
Opening an existing project
JET Control Panel
Before you begin
Starting Excelsior JET Control Panel
JET Control Panel overview
Working with projects
Creating a new project
Opening a project
Saving a project
Saving a project under a different name
Step 1: Describing an application
Description form
Manual setting
Step 2: Performing a test run
Why is it?
Step 3: Selecting a compilation mode
Optimization presets
Classpath grid
Global Optimizer
Inconsistency warnings
Class viewer
Step 4: Setting options
Optimizations
Memory Management
JIT compiler
Advanced settings
Step 5: Specifying target settings
Executable name and version information
Runtime selection
Creating trial versions
Stack trace support
Step 6: Selecting application appearance
Icon
Console window
Splash screen
Step 7: Compiling your application
Building the executable
Creating build script
Packaging your application
Remedying project consistency flaws
Correcting build errors
Bugs in the JET Optimizer
Deployment automation
Intro
Excelsior deployment technology
JetPackII
Excelsior Installation Toolkit
Before You Start
Starting JetPackII
JetPackII Overview
Working With Projects
Creating a new project
Opening a project
Saving a project
Saving a project under a different name
Package Files Panel
Step 1: Creating A New Package
Creating a new installation
Creating an update
Step 2: Adding Application Files
Adding files using filechooser
Adding files using difference tracker
Packaging JIT cache
Caching of JITed classes on end user system
Step 3: Setting Up Separate Resources and Java System Properties
Setting the classpath entries
Editing Java properties
Step 4: Configuring the JET Runtime
Selecting optional components
Selecting detached components
Enabling disk footprint reduction
Step 5: Performing a Trial Run
Selecting a trial run directory
Working with trial run configurations
Configuring a trial run
Performing all trial runs
Troubleshooting
Skipping trial runs
Step 6: Selecting a Back-End
Excelsior Installer setup
Self-contained directory
Installation into multiple directories
Step 7: Specifying Installation Settings
Vendor information
Registry keys
Installation directory
Shortcuts
Installer appearance
Installer branding
File associations
Post-install actions
Extra facilities
Installation settings for updates
Step 8: Specifying Installation Settings Of Windows Services
General settings
Startup properties
Dependencies
Step 9: Creating The Installation Package
Packaging native methods libraries
Installations protected by license managers
Relocation of JetPackII projects
Applicability of Update Packages
Deployment Utilities
xpack
xbind
Excelsior Installer
Installer
Uninstaller
Callback DLLs
Java Runtime Slim-Down
Introduction
Java SE components
What is a detachable Java SE component
Used and unused Java SE components
How to identify unused components
Deployment
Execution
Configuration issues
Application considerations
Runtime Selection
Available runtimes
Which runtime fits best for my application?
How to enable a particular runtime
Code performance
Scalability
Multiprocessor systems
Number of threads
Java system properties
How to set system properties
JET runtime properties
Memory management
GC ratio
Maximum heap size
Handling low memory
Parallel hardware
Disk footprint
Medium reduction
High reduction
Complementary methods
On-demand decompression
Creating trial versions
Application appearance
Icon
Console window
Splash screen
Stack trace
How to enable stack trace
How to disable stack trace
Assertions
Resource packing
Resource packing modes
Setting resource packing options
Character encodings
Intellectual property protection
Bytecode consistency checks
Baseline compilation
Customizing Runtime error messages
Mixed Compilation Model
Overview
Quick start
When the mixed model operates
When JET Runtime uses MCM
When you may use MCM
Using the mixed model
JIT compiler selection
Caching JIT’ed code
Reflective shield
JIT cache optimization
Challenges
The solution
How to optimize a JIT cache
Incremental fusion
xjava launcher
Synopsis
Options
JIT cache optimization with xjava
Usage example
JIT compiler and code protection
Dynamic linking
Intro
Invocation DLLs
Multi-component applications
Building multi-component applications
Using multiple components
Optimizing layout of DLLs in memory
Global Optimizer
Introduction
Application domain
How it works
Global optimizations
Code mixing
Dynamic compilation
Code protection
Using the Global Optimizer
Why Test Run is necessary
Performing a Test Run
Enabling the Global Optimizer
Deployment
Windows services
Windows services overview
Excelsior WinService API
Overview
Retrieving command-line arguments
Setting timeouts
Event logging
Exceptions in handler methods
Building a service program
Service installation and removal
Installing a service
Response file
Removing a service
Service deployment
Executable image optimization
Introduction
System requirements
Optimization step by step
Step 1. Relink the executable in “sparse” mode
Step 2. Profile your application
Step 3. Generate optimal link information
Step 4. Create the optimized executable
Advanced techniques
Optimization of multi-component applications
Mixing results of multiple profiling runs
Reuse of optimized link information file
JC reference
Configuring the compiler
System search paths
Portable filename notation
Working configuration
Directory hierarchies
Redirection file
Options
Configuration file
Compiler memory usage
Invoking the compiler
Precedence of compiler options
Compiler operation modes
MAKE mode
PROJECT mode
OPTIONS submode
EQUATIONS submode
HELP mode
Project Data Base
Make strategy
Control file preprocessing
Project files
The !classpathentry directive
The !module directive
The !batch directive
The !uses directive
Compiler options and equations
Options
Options reference
COMPILEWITHFIXEDHEAP - Use baseline compiler if there is not enough memory
GLOBAL - Turns on the global optimizer
DISABLECLASSSAVING - Disable caching of JIT-compiled class files
DISABLESTACKTRACE - Disable support for stack trace
GENDLL - Generate a DLL
GENEXTENDEDFP - Allow 80-bit format for intermediate FP values
GENSTACKALLOC - Generate code with stack allocated objects
GENSTACKTRACE - Generate stack trace data
GUI - Suppress console window
IGNORECLASSDUPLICATION - ignore duplicated classes
IGNOREMEMBERABSENCE - ignore usage of absent members
INLINE - Enable in-line method expansion
NOFF - Suppress notices messages
VERIFYALL - Force strict verification
SPLASHCLOSEONAWTWINDOW - Hide splash on AWT window open
SPLASHCLOSEONCLICK - Hide splash on mouse click
SPLASHGETFROMMANIFEST - Get splash screen image from manifest
WOFF - Suppress warning messages
Equations
Equations reference
OPTIMIZE - Optimization mode
PROTECT - Code protection mode
PACK - JAR deployment mode
CLASSABSENCE - Treatment of import of absent classes
COMPILERHEAP - Heap limit of the compiler
DECOR - Control of compiler messages
DLLNAME - DLL name
ERRFMT - Error message format
ERRLIM - Maximum number of errors
EXPIRE - expiration date
EXPIREMSG - expiration message
HEAPLIMIT - Generated program heap limit
IMAGEBASE - Executable image base
INLINELIMIT - Maximum size of inlineable method
INLINETOLIMIT - Maximum size of inlined-to method
JETVMPROP - Hard-wired system properties
JETRT - JET runtime flavor
LINK - Linker command line
LOOKUP - Lookup directive
MAIN - Sets main class of application
OUTPUTDIR - pathname of the target directory
OUTPUTNAME - resulting executable name
PRJ - Project file name
PROJECT - Project name
SERVICEMAIN - Windows service main class
SERVICENAME - System name of the service
STACKLIMIT - Generated program stack limit
SPLASH - Splash screen image
SPLASHCLOSEONTITLE - Hide splash on particular window open
SPLASHMINTIME - splash delay
TEMPLATE - linker response file template
VERSIONINFOCOMPANYNAME - Company name for version information
VERSIONINFOFILEDESCRIPTION - File description for version information
VERSIONINFOLEGALCOPYRIGHT - Legal copyright for version information
VERSIONINFOPRODUCTNAME - Product name for version information
VERSIONINFOPRODUCTVERSION - Product version for version information
Internal options and equations
Compiler messages
Java bytecode front-end errors and warnings
Project system errors
Symbol files read/write errors
Warnings
Native back-end warnings
Native back-end errors
Internal errors
Troubleshooting
Compilation problems
Run-time problems
Application performance
Interoperability
Deployment
Customizing the compiler
Customizing compiler messages
Error message format specification
Regular expression
Template files
Using equation values
File name construction
Iterators
Examples