<?xml version="1.0" encoding="UTF-8"?>

<!--
 * 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.
-->

<ui:composition template="/main.xhtml"
                xmlns="http://www.w3.org/1999/xhtml"
                xmlns:tc="http://myfaces.apache.org/tobago/component"
                xmlns:ui="http://java.sun.com/jsf/facelets">

  <p>
    Tobago was compatible with the following specifications, libraries and containers.
    This list is not exhaustive, additions are welcome.
  </p>
  <table class="table table-bordered">
    <tbody>
    <tr>
      <th>Tobago Version</th>
      <th>1.0.x<tc:badge value="archived"/></th>
      <th>1.5.x<tc:badge value="archived"/></th>
      <th>2.x</th>
      <th>3.x<tc:badge value="archived"/></th>
      <th>4.x</th>
      <th>5.x<tc:badge value="in development"/></th>
    </tr>
    <tr>
      <th colspan="7">Specifications</th>
    </tr>
    <tr>
      <td>Java</td>
      <td>1.4<tc:badge value="retro"/>, <b>1.5</b>, 1.6, 1.7</td>
      <td>1.5, 1.6, 1.7, 1.8</td>
      <td> 1.5, 1.6, 1.7, 1.8, 9</td>
      <td>1.8, 9, 10</td>
      <td>1.8, 9, 10, ...</td>
      <td>1.8, 9, 10, ...</td>
    </tr>
    <tr>
      <td>JSF</td>
      <td><b>1.1</b>, 1.2</td>
      <td>1.2, 2.0<tc:badge value="disable vh"/>, 2.1<tc:badge value="disable vh"/></td>
      <td>2.0, 2.1, 2.2</td>
      <td>2.0, 2.1, 2.2</td>
      <td>2.0, 2.1, 2.2, 2.3</td>
      <td>2.0, 2.1, 2.2, 2.3</td>
    </tr>
    <tr>
      <td>Facelets</td>
      <td><b>1.1</b><tc:badge value="ext"/></td>
      <td><b>1.1</b><tc:badge value="ext"/></td>
      <td><tc:badge value="int"/></td>
      <td><tc:badge value="int"/></td>
      <td><tc:badge value="int"/></td>
      <td><tc:badge value="int"/></td>
    </tr>
    <tr>
      <td>Servlet</td>
      <td> 2.3, <b>2.4</b>, 2.5</td>
      <td>2.4<tc:badge value="facelets only"/>, <b>2.5</b>, 3.0</td>
      <td>2.4<tc:badge value="facelets only"/>, <b>2.5</b>, <b>3.0</b>, <b>3.1</b>
      (since Tobago 2.4 version 3.0 is required)</td>
      <td>3.0, 3.1</td>
      <td>3.0, 3.1, 4.0</td>
      <td>3.0, 3.1, 4.0</td>
    </tr>
    <tr>
      <td>JSP</td>
      <td>1.2, <b>2.0</b>, 2.1</td>
      <td><b>2.1</b>, 2.2</td>
      <td>2.1, 2.2</td>
      <td>-</td>
      <td>-</td>
      <td>-</td>
    </tr>
    <tr>
      <th colspan="7">Implementations</th>
    </tr>
    <tr>
      <td>MyFaces</td>
      <td>yes</td>
      <td>yes</td>
      <td>yes</td>
      <td>yes</td>
      <td>yes</td>
      <td>yes</td>
    </tr>
    <tr>
      <td>Mojarra</td>
      <td>yes</td>
      <td>yes</td>
      <td>yes</td>
      <td>2.1 and higher</td>
      <td>2.1 and higher</td>
      <td>2.1 and higher</td>
    </tr>
    <tr>
      <th colspan="7">Servers</th>
    </tr>
    <tr>
      <td>Tomcat</td>
      <td>4.1, 5.0, 5.5, 6, 7</td>
      <td> 5.5<tc:badge value="facelets only"/>, 6, 7</td>
      <td>5.5<tc:badge value="facelets only"/>, 6, 7</td>
      <td>7, 8</td>
      <td>7, 8, 9</td>
      <td>7, 8, 9</td>
    </tr>
    <tr>
      <td>Jetty</td>
      <td> 6, 7</td>
      <td>6, 7, 8</td>
      <td> 6, 7, 8</td>
      <td> 8, 9</td>
      <td> 8, 9</td>
      <td> 8, 9</td>
    </tr>
    <tr>
      <td>WebLogic</td>
      <td> 8.1, 9.0, 9.1, 9.2, 10, 11g</td>
      <td>9.2<tc:badge value="facelets only"/>, 10, 11g, 12c</td>
      <td>9.2<tc:badge value="facelets only"/>, 10, 11g, 12c</td>
      <td>12c</td>
      <td>12c</td>
      <td>12c</td>
    </tr>
    <tr>
      <td>WebSphere</td>
      <td>6.0, 6.1</td>
      <td> 6.1<tc:badge value="facelets only"/>, 7, 8, 8.5</td>
      <td>6.1<tc:badge value="facelets only"/>, 7, 8, 8.5</td>
      <td>8, 8.5, 9</td>
      <td>8, 8.5, 9</td>
      <td>8, 8.5, 9</td>
    </tr>
    <tr>
      <td>Other</td>
      <td><tc:badge value="other servers"/></td>
      <td><tc:badge value="other servers"/></td>
      <td><tc:badge value="other servers"/></td>
      <td><tc:badge value="other servers"/></td>
      <td><tc:badge value="other servers"/></td>
      <td><tc:badge value="other servers"/></td>
    </tr>
    <tr>
      <th colspan="6">Browser</th>
    </tr>
    <tr>
      <td>Internet Explorer / Edge</td>
      <td>6, 7, 8, 9, 10, 11</td>
      <td>6, 7, 8, 9, 10, 11, ...</td>
      <td>6<tc:badge value="lim"/>, 7<tc:badge value="lim"/>, 8<tc:badge value="lim"/>, 9, 10, 11, ...</td>
      <td>10<tc:badge value="lim"/>, 11, ...</td>
      <td>10<tc:badge value="lim"/>, 11, ...</td>
      <td>11, ...</td>
    </tr>
    <tr>
      <td>Firefox</td>
      <td>2, 3, 4, ...</td>
      <td>2, 3, 4, ...</td>
      <td>2<tc:badge value="lim"/>, 3, 4, ...</td>
      <td><tc:badge value="latest"/></td>
      <td><tc:badge value="latest"/></td>
      <td><tc:badge value="latest"/></td>
    </tr>
    <tr>
      <td>Safari</td>
      <td>-</td>
      <td>4, 5, 6, ...</td>
      <td>4, 5, 6, ...</td>
      <td><tc:badge value="latest"/></td>
      <td><tc:badge value="latest"/></td>
      <td><tc:badge value="latest"/></td>
    </tr>
    <tr>
      <td>Chrome</td>
      <td>-</td>
      <td>5, ...</td>
      <td>5, ...</td>
      <td><tc:badge value="latest"/></td>
      <td><tc:badge value="latest"/></td>
      <td><tc:badge value="latest"/></td>
    </tr>
    <tr>
      <td>Opera</td>
      <td>-</td>
      <td>10, 11</td>
      <td>10, 11, ...</td>
      <td><tc:badge value="latest"/></td>
      <td><tc:badge value="latest"/></td>
      <td><tc:badge value="latest"/></td>
    </tr>
    <tr>
      <td><tc:badge value="other browsers"/></td>
      <td><tc:badge value="other browsers"/></td>
      <td><tc:badge value="other browsers"/></td>
      <td><tc:badge value="other browsers"/></td>
      <td><tc:badge value="other browsers"/></td>
      <td><tc:badge value="other browsers"/></td>
      <td><tc:badge value="other browsers"/></td>
    </tr>
    <tr>
      <th colspan="6">Frameworks</th>
    </tr>
    <tr>
      <td>CDI</td>
      <td></td>
      <td>yes</td>
      <td>yes</td>
      <td>yes</td>
      <td>yes</td>
      <td>yes</td>
    </tr>
    <tr>
      <td>Codi</td>
      <td></td>
      <td>yes</td>
      <td>yes</td>
      <td>yes</td>
      <td>yes</td>
      <td>yes</td>
    </tr>
    <tr>
      <td>DeltaSpike</td>
      <td></td>
      <td>yes</td>
      <td>yes</td>
      <td>yes</td>
      <td>yes</td>
      <td>yes</td>
    </tr>
    <tr>
      <td>JSR-303 / BV</td>
      <td></td>
      <td>yes</td>
      <td>yes</td>
      <td>yes</td>
      <td>yes</td>
      <td>yes</td>
    </tr>
    </tbody>
  </table>

  <!-- JSF Addon-Frameworks: Apache Shale Dialog, Apache Shale Clay, Spring Web Flow, Seam, WebBeans, "Validator", ...-->
  <!-- IoC Frameworks: Spring, Guice, ...-->
  <!-- Component Libs: Richfaces, Icefaces, Trinidad, Tomahawk ...-->

  <dl>
    <dt><b>bold:</b></dt>
    <dd>preferred</dd>

    <dt>normal</dt>
    <dd>compatible</dd>

    <dt><tc:badge value="archived"/></dt>
    <dd>this version of Tobago is archived and not under active development</dd>

    <dt><tc:badge value="retro"/></dt>
    <dd>use the JDK 1.4 retro version (available for Tobago 1.0.41 and before)</dd>

    <dt><tc:badge value="ext"/></dt>
    <dd>add the tobago-facelets extension</dd>

    <dt><tc:badge value="int"/></dt>
    <dd>since Tobago 2.0 and JSF 2.0 Facelets are integrated in JSF</dd>

    <dt><tc:badge value="tbd"/></dt>
    <dd>to be defined (this information is unsettled and may change)</dd>

    <dt><tc:badge value="lim"/></dt>
    <dd>these old browsers are generally supported, but may have weak appearance</dd>

    <dt><tc:badge value="facelets only"/></dt>
    <dd>it works with facelets, but not with JSP, because JSF 1.2 requires JSP 2.1</dd>

    <dt><tc:badge value="other servers"/></dt>
    <dd>other servers should work, when they are compliant to the named specifications</dd>

    <dt><tc:badge value="latest"/></dt>
    <dd>all browser supported by Bootstrap 4 are supported, these are usually the latest, stable releases</dd>

    <dt><tc:badge value="other browsers"/></dt>
    <dd>other browsers should work, in their actual version, when they are standard compliant to HTML 4 and CSS 2.1</dd>

    <dt><tc:badge value="no release"/></dt>
    <dd>Using Tobago 1.5 with JSF 1.1 is currently not part of the release, but can be build from the sources with mvn -Pjsf-1.1</dd>

    <dt><tc:badge
        value="disable vh"/></dt>
    <dd>Tobago 1.5 works with JSF 2.0 when you are disable the Facelets ViewHandler from JSF 2.0 and using the
      original Facelets:
      <pre><code class="language-markup">&lt;context-param>
  &lt;description>For backward compatibility (using "old" Facelets with JSF 2.0)&lt;/description>
  &lt;param-name>javax.faces.DISABLE_FACELET_JSF_VIEWHANDLER&lt;/param-name>
  &lt;param-value>true&lt;/param-value>
&lt;/context-param></code></pre>
    </dd>
  </dl>

</ui:composition>
