<html>
<!--

 Copyright 2001-2004 The Apache Software Foundation.
 
 Licensed 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.

-->
<head><title>JCL Kernel</title></head>
<body>
<h2>JCL Kernal</h2>
<p>
Contains JCL2 API kernel. 
Code that uses the API should access only these classes.
</p>
<p>
This differs from the JCL1 API in several important ways.
</p>
<ul>
	<li>The size is much reduced.</li>
	<li>Code using this distribution will run with just this code.</li>
	<li>The base implementation is simplified.
	It should be possible to create JCL implementations
	that run on early JVMs and in reduced library environments.</li>
	<li>No bridging implementations are included.</li>
	<li>Minimal discovery code is included and none is exposed by the API.
	This allows flexibility in the chose of discovery strategy.
	</li>
</ul>
<p>
<code>LogFactory</code> now extends <code>LogManager</code>
and has been retrofitted with compatibility code. 
This allows backwards compatibility for components compiled
against JCL1.
</p>
</body>