blob: e481f5d4e00eb06a0d33a6a2aa5f334f421b4426 [file] [log] [blame] [edit]
<?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>