Japt-bytecode-optimizer-for-java
Bytecode optimization tool to ease development and deployment of Java
This project is maintained by seancfoley
Japt (Java Optimizer) Bytecode Optimizer for Java
Bytecode optimization tool to ease development and deployment of Java
The tool provides the following functionality and technologies:
- escape analysis on a per method-invocation basis
- static control flow analysis finding the entry points into an application or library
- removal of unwanted attributes from Java™ class files or adding specialized attributes to class files
- creation or rewrite of stackmaps for Java class files
- verification of Java class files, providing more feedback than the runtime verifier
- auto-generation of classes to load other classes within the same archive
- specific remapping of method invocations
- specific rewrites of bytecodes
- obfuscation of class, field and method names
- assembler and disassembler of bytecodes
- static control flow analysis for removal of unused methods, classes, fields
- static control flow analysis that splits an application into archives according to thread accessibility
- insertion of checkcasts to allow the runtime verifier to avoid extra class loads for quicker startup performance
- separating methods unused at startup into separate classes for quicker startup performance
- listing the fields/methods missing from a Java lib profile (such as Java 8 compact profiles) that are required by application
- instrumentation of bytecode
- inlining of methods, and/or merging inner classes into their respective outer classes, for class file size reduction
Documentation
Users of Japt can refer to the user documentation while developers should consult the developer documentation.