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