Javassist

Javassist (Java programming assistant) is a Java library providing a means to manipulate the Java bytecode of an application.[1] In this sense Javassist provides the support for structural reflection, i.e. the ability to change the implementation of a class at run time.

Javassist
Developer(s)Shigeru Chiba (programmer)
Stable release
3.25.0-GA / April 16, 2019 (2019-04-16)
Repository
Written inJava
Operating systemCross-platform
TypeBytecode Engineering Library
Licensedual license of the MPL and LGPL.
Websitewww.javassist.org

Bytecode manipulation is performed at load-time through a provided class loader.

Javassist enables Java programs to define a new class at runtime and to modify a class file when the JVM loads it. Unlike other similar bytecode editors, Javassist provides two levels of API: source level and bytecode level. Using the source-level API, programmers can edit a class file without knowledge of the specifications of the Java bytecode; the whole API is designed with only the vocabulary of the Java language. Programmers can even specify inserted bytecode in the form of Java source text; Javassist compiles it on the fly. On the other hand, the bytecode-level API allows the users to directly edit a class file as other editors.

Uses

Javassist can be used for the following:

  • For specifying the bytecode using source code – can compile a fragment of source text online (e.g., just a single statement)
  • For aspect-oriented programming (AOP) – can introduce new methods into a class and insert before/after/around advice at both the caller and callee sides
  • For reflection at runtime – can use a metaobject that controls method calls on base-level objects
  • For remote method invocation – can call a method on a remote object running on a web server, an alternative to Java RMI that does not need a stub compiler such as rmic

See also

References

  1. "Javassist". JBoss Community.

Official website Edit this at Wikidata


This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.