<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--

    Copyright (c) 2021, 2025 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.2</h1>
      <h2> <em class="emphasize">Release Notes</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.2 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.2 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 17
      and tested with Java<font size="-2"><sup>TM</sup></font> Platform,
      Standard Edition 17+</p>
    <p>The Jakarta EE JSON Processing TCK tests have been run against the
      following Jakarta EE JSON Processing 2.2 Compatible Implementations:</p>
    <ul>
      <li><!--TODO2.2 Parsson Version--></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/jsonp-tck-users-guide-2.2.0.html">JSON-P TCK 2.2
          User's Guide</a></cite> (or <a href="./pdf-usersguide/jsonp-tck-users-guide-2.2.0.pdf"

        title="Jakarta EE JSON Processing 2.2 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, 2025 Oracle and/or its affiliates. All
          rights reserved.</small></cite></p>
  </body>
</html>
