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 21*0c56280aSSorin Basca<document> 22*0c56280aSSorin Basca <properties> 23*0c56280aSSorin Basca <title>Home</title> 24*0c56280aSSorin Basca <author email="[email protected]">Commons Documentation Team</author> 25*0c56280aSSorin Basca </properties> 26*0c56280aSSorin Basca <body> 27*0c56280aSSorin Basca 28*0c56280aSSorin Basca <section name="Commons BCEL"> 29*0c56280aSSorin Basca <p> 30*0c56280aSSorin Basca The Byte Code Engineering Library (Apache Commons BCEL™) is intended to give users a 31*0c56280aSSorin Basca convenient way to analyze, create, and manipulate (binary) 32*0c56280aSSorin Basca Java class files (those ending with .class). Classes are 33*0c56280aSSorin Basca represented by objects which contain all the symbolic information 34*0c56280aSSorin Basca of the given class: methods, fields and byte code instructions, in 35*0c56280aSSorin Basca particular. 36*0c56280aSSorin Basca </p> 37*0c56280aSSorin Basca 38*0c56280aSSorin Basca <p> 39*0c56280aSSorin Basca Such objects can be read from an existing file, be transformed 40*0c56280aSSorin Basca by a program (e.g. a class loader at run-time) and written to a file again. 41*0c56280aSSorin Basca An even more interesting application is the creation of classes from scratch 42*0c56280aSSorin Basca at run-time. The Byte Code Engineering Library (BCEL) may be also useful 43*0c56280aSSorin Basca if you want to learn about the Java Virtual Machine (JVM) and the format of 44*0c56280aSSorin Basca Java .class files. 45*0c56280aSSorin Basca </p> 46*0c56280aSSorin Basca 47*0c56280aSSorin Basca <p> 48*0c56280aSSorin Basca BCEL contains a byte code verifier named JustIce, which usually 49*0c56280aSSorin Basca gives you much better information about what's wrong with your 50*0c56280aSSorin Basca code than the standard JVM message. 51*0c56280aSSorin Basca </p> 52*0c56280aSSorin Basca 53*0c56280aSSorin Basca <p> 54*0c56280aSSorin Basca BCEL is already being used successfully in several projects such 55*0c56280aSSorin Basca as compilers, optimizers, obsfuscators, code generators 56*0c56280aSSorin Basca and analysis tools. Unfortunately there hasn't been much development 57*0c56280aSSorin Basca going on over the past few years. Feel free to help out or you 58*0c56280aSSorin Basca might want to have a look into the ASM project at objectweb. 59*0c56280aSSorin Basca </p> 60*0c56280aSSorin Basca </section> 61*0c56280aSSorin Basca 62*0c56280aSSorin Basca <section name="Documentation"> 63*0c56280aSSorin Basca <p> 64*0c56280aSSorin Basca The package descriptions in the <a href="javadocs/api-release/index.html">Javadoc</a> give an overview of the available features 65*0c56280aSSorin Basca and various <a href="project-reports.html">project reports</a> are provided. 66*0c56280aSSorin Basca </p> 67*0c56280aSSorin Basca <p> 68*0c56280aSSorin Basca The Javadoc API documents are available online: 69*0c56280aSSorin Basca </p> 70*0c56280aSSorin Basca <ul> 71*0c56280aSSorin Basca <li>The <a href="apidocs/index.html">current stable release</a></li> 72*0c56280aSSorin Basca </ul> 73*0c56280aSSorin Basca <p> 74*0c56280aSSorin Basca The <a href="source-repository.html">svn repository</a> can be 75*0c56280aSSorin Basca <a href="http://svn.apache.org/viewvc/commons/proper/bcel/trunk">browsed</a>, or you can browse/contribute via <a href="https://github.com/apache/commons-bcel">GitHub</a>. 76*0c56280aSSorin Basca </p> 77*0c56280aSSorin Basca </section> 78*0c56280aSSorin Basca <!-- ================================================== --> 79*0c56280aSSorin Basca <section name="Release Information"> 80*0c56280aSSorin Basca <p>The latest stable release of BCEL is here, you may: </p> 81*0c56280aSSorin Basca <ul> 82*0c56280aSSorin Basca <li><a href="https://commons.apache.org/proper/commons-bcel/download_bcel.cgi">Download</a></li> 83*0c56280aSSorin Basca <li>Read the <a href="https://www.apache.org/dist/commons/bcel/RELEASE-NOTES.txt">release notes</a></li> 84*0c56280aSSorin Basca <li>Inspect the <a href="bcel5-bcel6-clirr-report.html">extended Clirr report</a> comparing 5.2 with 6.x</li> 85*0c56280aSSorin Basca </ul> 86*0c56280aSSorin Basca <p> 87*0c56280aSSorin Basca Alternatively you can pull it from the central Maven repositories: 88*0c56280aSSorin Basca <pre> 89*0c56280aSSorin Basca<dependency> 90*0c56280aSSorin Basca <groupId>org.apache.bcel</groupId> 91*0c56280aSSorin Basca <artifactId>bcel</artifactId> 92*0c56280aSSorin Basca <version>6.3</version> 93*0c56280aSSorin Basca</dependency> 94*0c56280aSSorin Basca </pre> 95*0c56280aSSorin Basca </p> 96*0c56280aSSorin Basca 97*0c56280aSSorin Basca </section> 98*0c56280aSSorin Basca <!-- ================================================== --> 99*0c56280aSSorin Basca <section name="Getting Involved"> 100*0c56280aSSorin Basca <p> 101*0c56280aSSorin Basca The <a href="mail-lists.html">commons developer mailing list</a> is the main channel of communication for contributors. Please remember that the lists are shared between all commons components, so prefix your email by [bcel]. </p> 102*0c56280aSSorin Basca <p>You can also visit the #apache-commons IRC channel on irc.freenode.net or peruse <a href="issue-tracking.html">JIRA</a>.</p> 103*0c56280aSSorin Basca <p>Alternatively you can go through the <em>Needs Work</em> tags in the <a href="taglist.html">TagList report</a>.</p> 104*0c56280aSSorin Basca <p>If you'd like to offer up pull requests via GitHub rather than applying patches to JIRA, we have a <a href="https://github.com/apache/commons-bcel/">GitHub mirror</a>. </p> 105*0c56280aSSorin Basca </section> 106*0c56280aSSorin Basca </body> 107*0c56280aSSorin Basca</document> 108