Home | History | Annotate | Download | only in manual
      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