JXCL Glossary

For more Extreme Programming acronyms, see the Xp Glossary. A few of the explanations there are fanciful, though.

AntA utility for managing Java builds, probably the most widely used in the world. See ant.apache.org.
bcelThe Byte Code Engineering Library is an Apache project, software for manipulating Java at the bytecode level. Bcel is used extensively in JXCL.
bytecodeThe 'machine language' interpreted by the JVM.
coverageA measure of the extent to which test programs exercise the software under test, usually expressed as a percentage (this being, for example, the number of lines of code that were executed during the test vs the total number of lines of code).
Extreme ProgrammingOr XP. A lightweight programming methodology. For more information see, for example, Ron Jeffries' XProgramming.com Web site.
fixtureIn the unit testing world, a set of objects that unit tests are run against. In JUnit testing, the objects are usually initialized in setUp() and then tested by assertions in test*() methods.
GlassJXCL's bytecode library, currently in development. Similar in intent to BCEL but we hope easier to use.
hit countThe number of times a unit of code has been executed.
instrumentationBytecode, variables, and methods inserted into a Java class to collect information on or modify program behavior. Coverage is usually measured by instrumenting methods with bytecode that collects hit counts.
integration testA test that software modules work together as expected. JUnit was designed specifically for unit testing, but can be used in integration testing, as can JXCL. Unit tests focus on testing one class at a time; integration tests test interacting groups of classes.
JUnitA unit testing program for Java, probably the most widely used. See www.junit.org.
JVMThe Java Virtual Machine, a program which executes bytecode. The JVM is a simple stack machine with a limited instruction set.
JXCLThe Java Transforming Class Loader, a tool for manipulating Java classes at the bytecode level.
MavenA Java project management tool integrating many other open-source Java tools. Maven can be used to manage builds, automatically generating and running Ant build.xml files, but is most commonly used for generating project Web sites.
mock objectsAn object that has the same interface as a production class, but whose functionality is limited to (a) verifying that parameters supplied are correct and (b) faking the normal responses of the object being mocked to the degree necessary to allow it to be substituted for it. In a JUnit testing environment, a mock object will throw an exception when input verification fails.

There is a surprising degree of disagreement about the exact definition of this term. For one set of opinions see www.mockobjects.com
regression testA test or set of tests that verifies that software still behaves correctly after being changed. Normally, the suite of unit tests and integration tests developed with the software are accumulated and used for regression testing in code maintainance or further software development.
spyA class or method that mimics an object under test, but whose only function is to report on values observed. So a spy is a somewhat elaborated stub or degenerate mock object.
stubA class or method that has the same interface as the class/method under test, but in effect no functionality at all. A class consisting of empty methods, or a method that does nothing if void or otherwise just returns a fixed value. A stub might be considered a degenerate mock object.
test-driven developmentAn incremental approach to software development in which writing tests precedes writing the software being tested. See this article for a brief introduction, or take a look at the TDD FAQ on testdriven.com.
transformationIn most discussions involving JXCL, this is a sense-preserving transformation, a change to Java-related software which has no effect on its normal functionality. Usually the change involves adding instrumentation to the software which allows side effects (measurements such as hit counts) to be collected at runtime.
unit testA test of software at the lowest level of modularity; a test of an individual class or method as opposed to a test of a system consisting of many interacting classes. Software development methodologies such as Extreme Programming (XP) and Test-Driven Development emphasize the development of software and unit tests as one process, or go even further, encouraging programmers to write tests before writing the software.
XPSee Extreme Programming.
z$$zOne of a number of JXCL-reserved names.

public static int[] z$$z is the hit count array generated by JXCL-instrumented classes as run time.

public static int z$$zID is a run-unique ID assigned to a JXCL-instrumented class.

public static int z$$zVer is the JXCL class file format, currently 0, construed as 0.0 (16-bit major value, 16-bit minor value).

This material is copyright 2003 by James David Dixon ("Jim Dixon") and is made available under the Artistic License.