<?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><tc:badge value="latest"/></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>with ES6 support</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>
