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