In the beginning...
When Sun originally released Java 1.0, there were no JDBC drivers -- there wasn't even a JDBC.
Data access came in Java 2.0, as JDBC 1.0, but there were very few JDBC drivers from any source, as would be expected with any new technology -- but the ODBC ecosystem (itself then at only v2.0) was going strong.
Sun recognized that Java wouldn't have as much uptake without a functional data access solution -- so they produced and bundled the original Type 1 JDBC-ODBC Bridge Driver, sun.jdbc.odbc.JdbcOdbcDriver
, but from the very beginning, they warned that users "should use the JDBC-ODBC Bridge only for experimental prototyping or when you have no other driver available."
That bundled JDBC-ODBC Bridge was (and always remained) single-threaded, and though it received some other updates along the way, it only ever supported a subset of JDBC 2.0 and later. Sun (and later Oracle) recommended that users employ "a pure Java JDBC technology-enabled driver, type 3 or 4, in order to get all of the benefits of the Java programming language and the JDBC API."
Where does OpenLink Software come in?
Even in the early days of JDBC, we saw that there would not always be an available JDBC driver for a given target data source -- but the numbers of ODBC drivers were rapidly increasing, supporting every major and many minor DBMS and other data sources. We saw a need for an enterprise-grade, non-experimental Bridge solution, with full support for the JDBC API.
We delivered this first as our Type 3 Multi-Tier solution, bridging from JDBC in one environment (typically a UNIX-like OS) to ODBC in another (most often, Microsoft Windows).
Type 3 Enterprise Edition (Multi-Tier) Architecture Diagram
(click to enlarge)
Soon afterward, we released our first
Type 1 Single-Tier solution, first for Windows, but quickly also supporting Linux, Mac OS X, Solaris, AIX, HP-UX, and other UNIX-like OS, through our own
iODBC driver manager -- which was itself helping to expand the ODBC ecosystem far beyond its birthplace on Windows.
Type 1 Lite Edition (Single-Tier) Architecture Diagram
(click to enlarge)
Why is Java 8 so special?
Sun long warned that the JRE-bundled Bridge was transitional, and Oracle confirmed immediately upon acquisition that it would "be removed in JDK 8. In addition, Oracle does not support the JDBC-ODBC Bridge." Java 8 is now in full release, and indeed, the venerable sun.jdbc.odbc.JdbcOdbcDriver
is no longer present, as evidenced by the scary looking error --
java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:30
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:259)
Any Java users or applications relying on ODBC connections and also needing the security and other improvements found in Java 8 are left high and dry... Or would be, but for OpenLink Software.
Our JDBC-to-ODBC Bridge, in both Type 1 and Type 3 forms, has been available and regularly updated since its original release for JDBC 1. Fully multi-threaded since Java Runtime Environments (JREs) could handle such, we have also kept pace with the JDBC API -- now at JDBC 4.2, in 2015's Java 8 a/k/a JDK/JVM/JRE 1.8 -- and maintained compatibility with the also-evolving ODBC API, now at 3.8.
Especially important for the modern world, our solutions support both 64-bit and 32-bit environments, including both 64-bit JVMs and ODBC drivers, and our Type 3 solutions can even bridge between these, whether you have a 64-bit JVM and need to connect to a 32-bit ODBC driver, or you have a 32-bit JVM and need to connect to a 64-bit ODBC driver.
As always, our solutions are available for immediate download, with a free two-week trial license provided alongside. We encourage pre-purchase installation, configuration, and testing, with support provided through our web-based Support Forums and even free up-and-running Support Cases. Once you've confirmed the driver works for you, entry level and special offer licenses may be purchased online or through our Sales Team; these as well as custom license configurations or partnership (IBP, ISV, VAR, OEM, etc.) arrangements are always available by direct contact.
About this entry:
Author: UDA Data Space Bot
Published: 06/04/2015 17:12 GMT-0500
22023DT013: Mixed timezoned and timezoneless arguments in datediff
in
datediff:(BIF),
__01 => 'second',
__02 => (DATETIME value, tag 211),
__03 => (DATETIME value, tag 211),
vc_render_template4(/DAV/VAD/blog2/templates/openlink/index.vspx-sql:14180),
SELF => reference 0x7f49e4195778 to instance 0x7f49e4330a28 of DB.DBA.page_2586a52d45e2079afbb5169d58681d302_templates_openlink_index_vspx,
control => reference 0x7f49e4335cf8 to instance 0x7f49e4334e78 of DB.DBA.vspx_row_template,
vc_render:10,
SELF => reference 0x7f49e4335cf8 to instance 0x7f49e4334e78 of DB.DBA.vspx_row_template,
__udt_method_call:(BIF),
__01 => 265240280,
__02 => 19,
__03 => reference 0x7f49e4335cf8 to instance 0x7f49e4334e78 of DB.DBA.vspx_row_template,
vc_render_template2(/DAV/VAD/blog2/templates/openlink/index.vspx-sql:13867),
SELF => reference 0x7f49e4195778 to instance 0x7f49e4330a28 of DB.DBA.page_2586a52d45e2079afbb5169d58681d302_templates_openlink_index_vspx,
control => reference 0x7f49e40d8378 to instance 0x7f49e40d81e8 of DB.DBA.vspx_template,
vc_render:10,
SELF => reference 0x7f49e40d8378 to instance 0x7f49e40d81e8 of DB.DBA.vspx_template,
__udt_method_call:(BIF),
__01 => 265240280,
__02 => 19,
__03 => reference 0x7f49e40d8378 to instance 0x7f49e40d81e8 of DB.DBA.vspx_template,
vc_render:13,
SELF => reference 0x7f49e4033648 to instance 0x7f49e4326ba8 of DB.DBA.vspx_data_set,
ct_name => 'template2',
__udt_method_call:(BIF),
__01 => 290210504,
__02 => 21,
__03 => reference 0x7f49e4033648 to instance 0x7f49e4326ba8 of DB.DBA.vspx_data_set,
__04 => 'template2' in v:data-set "posts" (render)