1<?xml version="1.0"?>
2<!--
3    * Licensed to the Apache Software Foundation (ASF) under one
4    * or more contributor license agreements.  See the NOTICE file
5    * distributed with this work for additional information
6    * regarding copyright ownership.  The ASF licenses this file
7    * to you under the Apache License, Version 2.0 (the
8    * "License"); you may not use this file except in compliance
9    * with the License.  You may obtain a copy of the License at
10    *
11    *   http://www.apache.org/licenses/LICENSE-2.0
12    *
13    * Unless required by applicable law or agreed to in writing,
14    * software distributed under the License is distributed on an
15    * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16    * KIND, either express or implied.  See the License for the
17    * specific language governing permissions and limitations
18    * under the License.
19-->
20<document>
21
22  <properties>
23    <title>Byte Code Engineering Library (BCEL)</title>
24  </properties>
25
26  <body>
27
28  <section name="Abstract">
29  <p>
30    Extensions and improvements of the programming language Java and
31    its related execution environment (Java Virtual Machine, JVM) are
32    the subject of a large number of research projects and
33    proposals. There are projects, for instance, to add parameterized
34    types to Java, to implement <a
35    href="http://www.eclipse.org/aspectj/">Aspect-Oriented Programming</a>, to
36    perform sophisticated static analysis, and to improve the run-time
37    performance.
38  </p>
39
40  <p>
41    Since Java classes are compiled into portable binary class files
42    (called <em>byte code</em>), it is the most convenient and
43    platform-independent way to implement these improvements not by
44    writing a new compiler or changing the JVM, but by transforming
45    the byte code. These transformations can either be performed
46    after compile-time, or at load-time. Many programmers are doing
47    this by implementing their own specialized byte code manipulation
48    tools, which are, however, restricted in the range of their
49    re-usability.
50  </p>
51
52  <p>
53    To deal with the necessary class file transformations, we
54    introduce an API that helps developers to conveniently implement
55    their transformations.
56  </p>
57  </section>
58
59  <section name="Table of Contents">
60    <ul>
61      <li><a href="introduction.html">Introduction</a></li>
62      <li><a href="jvm.html">The Java Virtual Machine</a></li>
63      <li><a href="bcel-api.html">The BCEL API</a></li>
64      <li><a href="application-areas.html">Application Areas</a></li>
65      <li><a href="appendix.html">Appendix</a></li>
66    </ul>
67  </section>
68
69</body>
70</document>
71