JayBird 2.0.1 review

Download
by rbytes.net on

Jaybird is JCA/JDBC driver suite to connect to Firebird database server

License: MPL (Mozilla Public License)
File size: 0K
Developer: JayBird Team
0 stars award from rbytes.net

Jaybird is JCA/JDBC driver suite to connect to Firebird database server. Historically Borland opened sources of type 3 JDBC driver called InterClient.

However due to some inherent limitations of Firebird client library it was decided that type 3 driver is a dead end, and Firebird team developed pure Java implementation of wire protocol.

This implementation became basis for JayBird, pure Java driver for Firebird relational database.

This driver is based on both the new JCA standard for application server connections to enterprise information systems and the well known JDBC standard.

The JCA standard specifies an architecture in which an application server can cooperate with a driver so that the application server manages transactions, security, and resource pooling, and the driver supplies only the connection functionality.

While similar to the JDBC 2 XADataSource idea, the JCA specification is considerably clearer on the division of responsibility between the application server and driver.

JayBird 1.5 provides extensions to some JDBC interfaces. All extension interfaces are released under modified BSD license, on “AS IS” basis, this should make linking to these classes safe from the legal point of view. All classes belong to org.firebirdsql.jdbc.* package.

JayBird 1.0 provided only pure Java wire protocol implementation. While being most effective in client-server setups (even more effective than native client libraries), it performed worser when connected to the server residing on the same host compared to native (C/C++/Delphi/etc) solutions. Reason is that type 4 driver communicates with the server using network sockets, which introduce additional overhead. Native client library has possibility to use IPC when connecting to the database on the same host. This might increase performance even by 100%.

JayBird 1.5 provides also type 2 JDBC driver that uses native client library to connect to the databases. Additionally JayBird 1.5 can use embedded version of Firebird relational database allowing to create Java applications that does not require separate server setup.

However type 2 driver has also limitations. Due to multi-threading issues in Firebird client library, it is not possible to access it from different threads simultaneously when running in local mode (IPC). In this case only one thread is allowed to access library at a time. Driver tries to provide needed synchronization.

Current implementation uses mutex that is local to the classloader that loaded JayBird classes. This poses some deployment limitations: firebirdsql.jar must be deployed so, that it is loaded by the system classloader. For standalone web containers like Resin or Tomcat, JayBird should usually be deployed in their lib/ directory. It is allowed to include it in the WAR archives, but if and only if it is guaranteed that only one application will access Firebird.

When accessing remote servers thread per connection policy applies. Driver provides necessary synchronization for this situation.

Embedded version of the server cannot be used on Linux systems in multi-threaded applications. In particular this makes embedded version of the server unusable for web applications, where usually each request is served in separate thread.

Requirements:
JDK 1.3.1

What's New in This Release:
Fyracle support was removed, as it will be shipped separately with Fyracle.

JayBird 2.0.1 keywords