<!--
 Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.

 This code is free software; you can redistribute it and/or modify it
 under the terms of the GNU General Public License version 2 only, as
 published by the Free Software Foundation.  Oracle designates this
 particular file as subject to the "Classpath" exception as provided
 by Oracle in the LICENSE file that accompanied this code.

 This code is distributed in the hope that it will be useful, but WITHOUT
 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 version 2 for more details (a copy is included in the LICENSE file that
 accompanied this code).

 You should have received a copy of the GNU General Public License version
 2 along with this work; if not, write to the Free Software Foundation,
 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.

 Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 or visit www.oracle.com if you need additional information or have any
 questions.
-->

<!DOCTYPE doctype PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
                                    
  <meta http-equiv="Content-Type"
 content="text/html; charset=iso-8859-1">
  <title>com.sun.rowset Package</title>
</head>
  <body bgcolor="#ffffff">
Provides five standard implementations of the standard JDBC <tt>RowSet</tt> implementation 
interface definitions. These reference implementations are included with the J2SE version 
1.5 platform and represent the benchmark standard <tt>RowSet</tt> implementations as verified 
by the Test Compatibility Kit (TCK) as mandated by the Java Community Process.
 <br>
   
<h3>1.0 Available JDBC RowSet Reference Implementations </h3>
  The following implementations are provided:<br>
           
<blockquote><tt><b>JdbcRowSetImpl</b></tt> - The <tt>javax.sql.rowset.JdbcRowSet</tt>
interface reference implementation. <br>
<br>
<tt><b>CachedRowSetImpl </b></tt>- The <tt>javax.sql.rowset.CachedRowSet</tt> interface
reference implementation.<br>
<br>
<tt><b>WebRowSetImpl</b></tt> - The <tt>javax.sql.rowset.WebRowSet</tt> interface
reference implementation.<br>
<br>
<tt><b>FilteredRowSetImpl</b></tt> - The <tt>javax.sql.rowset.FilteredRowSet</tt>
interface reference implementation.<br>
<br>
<tt><b>JoinRowSetImpl</b></tt> - The <tt>javax.sql.rowset.JoinRowSet</tt> interface
reference implementation.<br>
</blockquote>

All details on their expected behavior, including their interactions with the <tt>SyncProvider</tt>
SPI and helper classes are provided in the interface definitions in the <tt>javax.sql.rowset</tt>
package specification.<br>
   
<h3>2.0 Usage</h3>
The reference implementations represent robust implementations of the standard
<code>RowSet</code> interfaces defined in the <code>javax.sql.rowset</code> package. 
All disconnected <code>RowSet</code> implementations, such as the <tt>CachedRowSetImpl</tt>
and <tt>WebRowSetImpl</tt>, are flexible enough to use the <tt>SyncFactory</tt> SPIs to 
leverage non-reference implementation <tt>SyncProvider</tt> implementations to obtain
differing synchronization semantics. Furthermore, developers and vendors alike are free 
to use these implementations and integrate them into their products just as they
can with to other components of the Java platform.<br>
   
<h3>3.0 Extending the JDBC RowSet Implementations</h3>

The JDBC <code>RowSet</code> reference implementations are provided as non-final
classess so that any developer can extend them to provider additional features
while maintaining the core required standard functionality and compatibility. It
is anticipated that many vendors and developers will extend the standard feature
set to their their particular needs. The website for JDBC Technology will
provider a portal where implementations can be listed, similar to the way it
provides a site for JDBC drivers.
<br>
 <br>
</body>
</html>
