<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--

    Copyright (c) 2021, 2022 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=windows-1252">
    <title>Jakarta JSON Processing TCK Release Notes</title>
    <style type="text/css">
<!--
body {  background-color: #ffffdd; color: #000000}
pre {  background-color: #eeeeee; color: #000099; font-size: smaller}
code {  color: #000099; font-size: smaller}
h1 {  color: #000099}
h2 {  color: #000099}
h3 {  color: #000099; text-decoration: underline}
h4 {  font-style: italic; color: #000099}
.tabletitle {  font-style: italic; color: #ffffcc; font-size: small; font-variant: small-caps}
.subtitle {  font-style: italic; color: #ffffcc; font-variant: small-caps}
.emphasize  {  font-style: italic; color: #000099}
.step  { font-weight: bold}
.note { background-color: #fffff0; border-bottom-width: thin; border-top-width: thin; border-top-style: inset; border-bottom-style: inset; font-size: -10%;}
th {  background-color: #eeeeee; padding-left: 2pt; padding-right: 2pt;}
-->
</style></head>
  <body>
    <div align="center">
      <h1>Jakarta EE JSON Processing Technology Compatibility Kit, Version 2.1</h1>
      <h2> <em class="emphasize">Release Notes, February 2022</em></h2>
      <h2><em class="emphasize"></em></h2>
    </div>
    <h2><a name="kit_contents">Kit Contents</a></h2>
    <p>The Jakarta EE JSON Processing, Version 2.1 Technology Compatibility Kit
      (TCK) includes the following items:</p>
    <ul>
      <li>
        <p><strong>Jakarta EE JSON Processing TCK tests signature, API, and
            pluggability tests:</strong></p>
        <ul type="square">
          <li>
            <p>A <strong>signature test</strong> that checks that all of the
            public APIs are supported in the Jakarta EE JSON Processing Version
            2.1 implementation that is being tested</p>
          </li>
          <li>
            <p><strong>API tests</strong> for all of the public APIs under the <code>jakarta.json</code>,
            <code>jakarta.json.spi</code>, <code>jakarta.json.stream</code>
            package</p>
          </li>
          <li>
          <p><strong>Pluggability tests</strong> for testing the SPI provider
            interface for supplying your own JsonProvider</p>
          </li>
        </ul>
      </li>
    </ul>
    <hr>
    <h2>Jakarta EE JSON Processing TCK Facts</h2>
    <blockquote>
      <p>The test suite bundle contains the following:</p>
      <ul>
        <li>1 signature test</li>
        <li>178 API tests</li>
        <li>18 pluggability tests</li>
      </ul>
    </blockquote>
    <hr>
    <h2><a name="platform">Platform Notes</a></h2>
    <p>The Jakarta EE JSON Processing TCK tests have been built with JDK 11
      and tested with Java<font size="-2"><sup>TM</sup></font> Platform,
      Standard Edition 11+</p>
    <p>The Jakarta EE JSON Processing TCK tests have been run on the following
      platforms:</p>
    <ul>
      <li>CentOS 7</li>
      <li>Alpine Linux v3.12</li>
    </ul>
    <p>The Jakarta EE JSON Processing TCK tests have been run against the
      following Jakarta EE JSON Processing 2.1 Compatible Implementations:</p>
    <ul>
      <li>Eclipse Parsson 1.1.0</li>
    </ul>
    <hr>
    <h2><a name="install_setup_run">Installing, Setting Up, and Running the
        JSON-P TCK</a></h2>
    <p>Refer to the <cite><a href="html-usersguide/title.html">JSON-P TCK 2.1
          User's Guide</a></cite> (or <a href="./pdf-usersguide/Jakarta-JSON-Processing-TCK-Users-Guide.pdf"

        title="Jakarta EE JSON Processing 2.1 TCK User's Guide (PDF)">PDF</a>)
      for complete instructions on installing, setting up, and running the
      JSON-P TCK. </p>
    <hr>
    <p><cite><small>Copyright &copy; 2013, 2022 Oracle and/or its affiliates. All
          rights reserved.</small></cite></p>
  </body>
</html>
