Bytecode enhancement may be used to fully optimize binding performance and to avoid the use of Java reflection. In applications that are CPU bound, avoiding Java reflection can have a significant performance impact.
Bytecode enhancement may be performed either at runtime or at build time (offline). When enhancement is performed at runtime, persistent classes are enhanced as they are loaded. When enhancement is performed offline, class files are enhanced during a post-compilation step; both a main program and an Ant task are provided for performing offline enhancement. In either case, enhanced classes are used to efficiently access all fields and default constructors, including non-public members.
Please see Bytecode Enhancement and ClassEnhancer for more information.