Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Jaybird: Status Update

No description
by

Mark Rotteveel

on 26 October 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Jaybird: Status Update

Jaybird:
Status Update

Mark Rotteveel @avalanche1979,
Jaybird developer
Introduction
Delft, The Netherlands
Java dev by night
C# dev by day
SQL
Mark Rotteveel
Status of Jaybird 2.2
Latest version 2.2.5
Bug fixing
But also minor improvements
Release History
Jaybird 2.2.0: July 2012
Jaybird 2.2.1: September 2012
Jaybird 2.2.2: February 2013
Jaybird 2.2.3: May 2013
Jaybird 2.2.4: December 2013
Jaybird 2.2.5: April 2014
Downloads
(up to October 12)
version 2.2.5 only
Java
8
7
6
5
Downloads
7,300
5,384
2,042
1,017
15,643
(up to September)
Java
8
7
6
5
Downloads
303
1,031
828
71
2,233
High uptake in Java 8
Java 7 remains strong
Notable changes in 2.2.x
Support for getGeneratedKeys
Improved JDBC 4.0 and 4.1 support
automatic driver loading
get/setClientInfo
chained exceptions
closeOnCompletion
improved JDBC compliance
Basic JDBC 4.2 support
Minimal implementation
setObject supports new java.time types
Firebird 3 support
Added BOOLEAN support
Notes on Firebird 3
Jaybird 2.2 is compatible with Firebird 3 with some caveats:
SRP (new authentication) and wire protocol encryption not supported (might work with native protocol)
Enable legacy authentication (add Legacy_Auth to AuthServer)
Create user with legacy usermanager (set UserManager to Legacy_UserManager)
Relax encryption setting (set WireCrypt to Enabled or even Disabled)
Untested
Plans for Jaybird 2.2.x
1-2x per year bugfix release, 2.2.6 around January 2015
Minor improvements when it makes sense
Jaybird 3.0 introduces breaking changes,
so 2.2.x will be maintained at least until Jaybird 3.1
Focus on Jaybird 3.x
Changes in JDBC 4.2
JDBC 4.2 released with Java 8
JSR 221 - Maintenance Release 2
java.time (JSR-310) support
large update counts
SQLType
interface and
JDBCType
enum
Clarification of documentation
Other changes not so relevant for Firebird (ref cursor support)
java.time support (1)
New date/time API in Java
Immutable types
Simpler for the basics
Very powerful
Relevant for JDBC:
LocalDate, LocalTime, LocalDateTime:
Time without timezone information
Maps to DATE, TIME, TIMESTAMP and (VAR)CHAR (specific format)
Jaybird 2.2.5 only supports set (not get)
OffsetTime, OffsetDateTime:
Time with offset against UTC
Maps to TIME and TIMESTAMP WITH TIMEZONE, and (VAR)CHAR (specific format)
Jaybird 2.2.5 only supports set (not get)
Only string variant supported as Firebird doesn't have WITH TIMEZONE
java.time support (2)
Large Update Counts
Returns
long
instead of
int
to allow for update counts larger than 2^31 - 1
All methods that produce an
int
update count now have a large update count equivalent, for example:
executeLargeUpdate (instead of executeUpdate)
getLargeUpdateCount (instead of getUpdateCount)
etc
Jaybird 2.2.4+ forwards to the equivalent methods returning
int
.
Jaybird 3.0 will support large update counts
SQLType and JDBCType
SQLType
: interface for vendor specific types, methods:
String getName()
String getVendor()
Integer getVendorTypeNumber()
JDBCType
is an enum with all constants in
java.sql.Types
; implements
SQLType
SQLType
and
JDBCType
to replace current use of integer values (from
java.sql.Types
or vendor specific); to prevent conflicts.
Most
methods with
int
type parameter have equivalent with
SQLType
. Jaybird 2.2.4+ forwards value of
getVendorTypeNumber()
Jaybird 3.0
The version formerly known as Jaybird 2.3
New wire protocol implementation
New native/embedded implementation
Improved JDBC support and compliance
Code and API cleanup
New Wire Protocol Implementation
Old
"GDS"
API based on the C API,
brittle, hard to extend and not OO
Need to support Firebird 3 / Protocol 13 for SRP and wire encryption
New API, GDS.NG, inspired by .NET provider implementation
Protocol 10, 11 and 12 now implemented,
protocol 13 in Jaybird 3.1 (maybe 3.0)
Separating protocol state from JDBC state using events, observers
New Native/Embedded Implementation
Reimplementation triggered by new protocol API
Old
"GDS"
API depends on C++ gluecode through Java Native Interface (JNI)
New implementation uses Java Native Access (JNA)
Java interface equivalents for C API
JNA provides the "glue", no Jaybird-specific C++
Loading native dependencies easier
Performance impact unclear at this time
Improved JDBC Support
Implementing more optional JDBC methods
get
/
set
/
updateObject
support for more types
Interpreting character set OCTETS as binary type (VAR)BINARY instead of string type (VAR)CHAR
Updating/extending metadata information
Compliant JDBC escape support
Checking current behavior against JDBC specification and - hopefully - TCK
Potentially breaking changes!
Code and API Cleanup
Jaybird dev
Removal of old GDS API
Removing Firebird-interface methods also in JDBC API
Removing connection pool implementation
Reducing code duplication
By: Sun Ladder, http://commons.wikimedia.org/wiki/User:Sun_Ladder
Release Plan
Snapshot release when new feature done
(next one probably end of November)
Beta in fall 2015
Jaybird 3.0.0 release end of 2015
Schedule subject to change
The end
+ code demo if time left
Questions?
Sample code: https://github.com/mrotteveel/talk2014
Full transcript