<?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>Commons JCI - FAQ</title>
        <author email="dev@commons.apache.org">Commons Development Team</author>
    </properties>
    <body>
        <section name="FAQ">
            <subsection name="Isn't compiler support integrated with Java6 (JSR199)?">
                Yes, it is now. JSR199 in the end brought the official java compiler tools that
                now come with Java 6. Progress on this had stalled for many years. This is how
                JCI was born. JCI provided what was missing from the JDK. And it still provides
                it also for earlier versions. The main author of JCI has later on joined the EG
                and will make sure there is a bridge to the JSR199 API. 
            </subsection>
            <subsection name="Doesn't JSR199 already deprecate JCI?">
                Well, as said before ...there are no backports so far. And if you give the
                the final java tools API in Java 6 a try you might well come back and
                enjoy JCI :)
            </subsection>
            <subsection name="How well tested is the code?">
                Well, there are a couple of projects out there using this code already for
                quite some time in production. Drools and Cocoon to name just a few well known Open
                Source projects. Code coverage is not bad at all ...but there still a few things
                on the TODO list and contributions are always welcome.
            </subsection>
            <subsection name="Will the ... compiler be supported?">
                There is always room for new implementations. And if the compiler supports compilation to
                java bytecode, there is also a good chance it can be added. There are currently already a
                few potential candidates out there. But it all comes down to the need and the time to implement.
            </subsection>
        </section>
    </body>
</document>
