| <html> |
| |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> |
| <title>PL/Java 1.1.0</title> |
| </head> |
| |
| <body> |
| |
| <table border="0"> |
| <tr> |
| <td align="left" valign="top"> |
| <table border="0"> |
| <tr><td align="left" valign="top"> |
| <img src="http://gborg.postgresql.org/images/projects/pljava/screenshots/pljava_logo_small.gif" align="left"> |
| </td></tr> |
| <tr><td> </td></tr> |
| <tr><td>The project is sponsored by:</td></tr> |
| <tr><td><table border="0"><tr> |
| <td><a href="http://www.enterprisedb.com"> |
| <img height="70" src="http://gborg.postgresql.org/images/projects/pljava/screenshots/enterprisedb_logo.jpg" border="0"/> |
| </a></td> |
| <td><a href="http://www.tada.se"> |
| <img height="50" src="http://gborg.postgresql.org/images/projects/pljava/screenshots/tada_logo.jpg" border="0"/> |
| </a></td> |
| </tr></table></td></tr> |
| </table> |
| </td> |
| <td align="left" valign="top"> |
| <p></p> |
| <h2>PL/Java 1.2.0 released</h2> |
| <h3>Bringing the power of Java<font face="Times New Roman"></font> to PostgreSQL<font face="Times New Roman"></font> |
| Functions and Triggers.</h3> |
| <p><font size="2"> |
| Java™ is a registered trademark of Sun Microsystems, Inc. in the United States and other countries.<br/> |
| PostgreSQL™ is a trademark of PostgreSQL Inc and Regents of the University of California. |
| </font></p> |
| <p>PL/Java is an add on module to the PostgreSQL backend. It falls into the same |
| category as PL/SQL, PL/TCL, PL/Perl, PL/Python, and PL/R. When installed, functions |
| and triggers can be written in Java using your favorite Java IDE and installed |
| into the database.</p> |
| </td> |
| </tr> |
| </table> |
| <h3>The PL/Java 1.2.0 <a href="http://gborg.postgresql.org/project/pljava/genpage.php?downloads"> |
| release of PL/Java</a> provides the following features.</h3> |
| <ol> |
| <li>Ability to write both functions and triggers using Java 1.4 or higher.</li> |
| <li>Standardized utilities (modeled after the SQL 2003 proposal) to install and |
| maintain Java code in the database.</li> |
| <li>Standardized mappings of parameters and result. Complex types as well as sets |
| are supported.</li> |
| <li>An embedded, high performance, JDBC driver utilizing the internal PostgreSQL |
| SPI routines.</li> |
| <li>Metadata support for the JDBC driver. Both DatabaseMetaData and ResultSetMetaData is included.</li> |
| <li>The ability to return a ResultSet that origins from a query as an alternative to build a ResultSet row by row</li> |
| <li>Full support for PostgreSQL 8.0 savepoints and exception handling.</li> |
| <li>Ability to use IN, INOUT, and OUT parameters when used with PostgreSQL 8.1</li> |
| <li>Two language handlers, one TRUSTED (the default) and one that is not TRUSTED (language tag is javaU to |
| conform with the defacto standard)</li> |
| <li>Transaction and Savepoint listeners enabling code execution when a |
| transaction or savepoint is commited or rolled back.</li> |
| <li>Integration with GNU GCJ on selected platforms.</li> |
| </ol> |
| <h3>PL/Java in brief</h3> |
| <p>A function or trigger in SQL will appoint a static method in a Java class. In |
| order for the function to execute, the appointed class must be installed in the |
| database. PL/Java adds a set of functions that helps installing and maintaining the |
| java classes. Classes are stored in normal Java archives (AKA jars). A Jar may optionally |
| contain a deployment descriptor that in turn contains SQL commands to be executed |
| when the jar is deployed/undeployed. The functions are modeled after the standards |
| proposed for SQL 2003.</p> |
| <p>PL/Java implements a standardized way of passing parameters and return values. |
| Complex types and sets are passed using the standard JDBC ResultSet class. Great |
| care has been taken not to introduce any proprietary interfaces unless absolutely |
| necessary so that Java code written using PL/Java becomes as database agnostic as |
| possible.</p> |
| <p>A JDBC driver is included in PL/Java. This driver is written directly on top |
| of the PostgreSQL internal SPI routines. This driver is essential since it's very |
| common for functions and triggers to reuse the database. When they do, they must |
| use the same transactional boundaries that where used by the caller.</p> |
| <p>PL/Java is optimized for performance. The Java virtual machine executes within |
| the same process as the backend itself. This vouches for a very low call overhead. |
| PL/Java is designed with the objective to enable the power of Java to the database |
| itself so that database intensive business logic can execute as close to the actual |
| data as possible.</p> |
| <p>The standard Java Native Interface (JNI) is used when bridging calls from the |
| backend into the Java VM and vice versa. Please read the |
| <a href="http://gborg.postgresql.org/project/pljava/genpage.php?jni_rationale">rationale</a> |
| behind the choice of technology and |
| <a href="http://gborg.postgresql.org/project/pljava/genpage.php?solutions">a more |
| in-depth discussion</a> about some implementation details. PL/Java is primarily targeted |
| to the new 8.1 version but will run with PostgreSQL 8.0 versions too albeit with |
| some limitations. </p> |
| <p>For info on how to get started, please read the |
| <a href="http://gborg.postgresql.org/project/pljava/genpage.php?readme">release |
| notes</a>. A |
| <a href="http://gborg.postgresql.org/project/pljava/genpage.php?userguide">user |
| guide</a> contains more information on how to create and manage our Java functions |
| and triggers.</p> |
| <p>Source and selected binaries are available for download. See the |
| <a href="http://gborg.postgresql.org/project/pljava/genpage.php?downloads">download |
| page</a> for more details.</p> |
| |
| </body> |
| |
| </html> |