| <?xml version="1.0"?> |
| <!-- |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| --> |
| <document> |
| |
| <properties> |
| <title>Byte Code Engineering Library (BCEL)</title> |
| </properties> |
| |
| <body> |
| |
| <section name="Abstract"> |
| <p> |
| Extensions and improvements of the programming language Java and |
| its related execution environment (Java Virtual Machine, JVM) are |
| the subject of a large number of research projects and |
| proposals. There are projects, for instance, to add parameterized |
| types to Java, to implement <a |
| href="http://www.eclipse.org/aspectj/">Aspect-Oriented Programming</a>, to |
| perform sophisticated static analysis, and to improve the run-time |
| performance. |
| </p> |
| |
| <p> |
| Since Java classes are compiled into portable binary class files |
| (called <em>byte code</em>), it is the most convenient and |
| platform-independent way to implement these improvements not by |
| writing a new compiler or changing the JVM, but by transforming |
| the byte code. These transformations can either be performed |
| after compile-time, or at load-time. Many programmers are doing |
| this by implementing their own specialized byte code manipulation |
| tools, which are, however, restricted in the range of their |
| re-usability. |
| </p> |
| |
| <p> |
| To deal with the necessary class file transformations, we |
| introduce an API that helps developers to conveniently implement |
| their transformations. |
| </p> |
| </section> |
| |
| <section name="Table of Contents"> |
| <ul> |
| <li><a href="introduction.html">Introduction</a></li> |
| <li><a href="jvm.html">The Java Virtual Machine</a></li> |
| <li><a href="bcel-api.html">The BCEL API</a></li> |
| <li><a href="application-areas.html">Application Areas</a></li> |
| <li><a href="appendix.html">Appendix</a></li> |
| </ul> |
| </section> |
| |
| </body> |
| </document> |