<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>

<title>Universal Data Access Technology Blog</title><link>http://www.openlinksw.com:443/weblog/uda/135/</link><description /><managingEditor>hwilliams@openlinksw.com</managingEditor><pubDate>Tue, 10 Mar 2026 01:55:49 GMT</pubDate><generator>Virtuoso Universal Server 08.03.3334</generator><webMaster>hwilliams@openlinksw.com</webMaster><image><title>Universal Data Access Technology Blog</title><url>http://www.openlinksw.com:443/weblog/public/images/vbloglogo.gif</url><link>http://www.openlinksw.com:443/weblog/uda/135/</link><description /><width>88</width><height>31</height></image>
<item><title>Life after sun.jdbc.odbc.JdbcOdbcDriver</title><guid>http://www.openlinksw.com:443/weblog/uda/135/?date=2015-06-04#1840</guid><comments>http://www.openlinksw.com:443/weblog/uda/135/?id=1840#comments</comments><pubDate>Thu, 04 Jun 2015 21:12:19 GMT</pubDate><description>&lt;h2&gt;In the beginning...&lt;/h2&gt;

&lt;p&gt;When Sun originally released Java 1.0, there were no JDBC drivers -- there wasn&amp;#39;t even a JDBC.&lt;/p&gt;

&lt;p&gt;Data access came in Java 2.0, as &lt;a href=&quot;http://www.oracle.com/technetwork/java/overview-141217.html&quot; id=&quot;link-id0x2aab5b257518&quot;&gt;JDBC 1.0&lt;/a&gt;, 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.&lt;/p&gt;

&lt;p&gt;Sun recognized that Java wouldn&amp;#39;t have as much uptake without a functional data access solution -- so they produced and bundled the original Type 1 JDBC-ODBC Bridge Driver, &lt;code&gt;sun.jdbc.odbc.JdbcOdbcDriver&lt;/code&gt;, but from the very beginning, they warned that users &amp;quot;should use the JDBC-ODBC Bridge only for experimental prototyping or when you have no other driver available.&amp;quot;&lt;/p&gt;

&lt;p&gt;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 &amp;quot;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.&amp;quot;&lt;/p&gt;

&lt;h2&gt;Where does OpenLink Software come in?&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;We delivered this first as our &lt;a href=&quot;http://uda.openlinksw.com/jdbc-odbc-mt/&quot; id=&quot;link-id0x2aab5bf439b8&quot;&gt;Type 3 Multi-Tier solution&lt;/a&gt;, bridging from JDBC in one environment (typically a UNIX-like OS) to ODBC in another (most often, Microsoft Windows). &lt;/p&gt;

&lt;p style=&quot;text-align:center&quot;&gt;
 &lt;a href=&quot;http://uda.openlinksw.com/images/jdbcodbcmt.gif&quot; target=&quot;_blank&quot; id=&quot;link-id0x7fe32e904c08&quot;&gt;&lt;img src=&quot;http://uda.openlinksw.com/images/jdbcodbcmt.gif&quot; alt=&quot;Type 3 Enterprise Edition (Multi-Tier) Architecture Diagram&quot; title=&quot;Type 3 Enterprise Edition (Multi-Tier) Architecture Diagram&quot; style=&quot;max-width: 300px; height: auto&quot; /&gt;
 &lt;/a&gt; &lt;br /&gt; Type 3 Enterprise Edition (Multi-Tier) Architecture Diagram &lt;br /&gt; &lt;i&gt;(click to enlarge)&lt;/i&gt;
&lt;/p&gt;

Soon afterward, we released our first &lt;a href=&quot;http://uda.openlinksw.com/jdbc-odbc-st/&quot; id=&quot;link-id0x2aab5b257628&quot;&gt;Type 1 Single-Tier solution&lt;/a&gt;, first for Windows, but quickly also supporting Linux, Mac OS X, Solaris, AIX, HP-UX, and other UNIX-like OS, through our own &lt;a href=&quot;http://www.iodbc.org/dataspace/iodbc/wiki/iODBC/&quot; id=&quot;link-id0x2aab5b0cbc48&quot;&gt;iODBC driver manager&lt;/a&gt; -- which was itself helping to expand the ODBC ecosystem far beyond its birthplace on Windows.

&lt;p style=&quot;text-align:center&quot;&gt;
 &lt;a href=&quot;http://uda.openlinksw.com/images/jdbcodbcst.gif&quot; target=&quot;_blank&quot; id=&quot;link-id0x7fe32e385fe8&quot;&gt;&lt;img src=&quot;http://uda.openlinksw.com/images/jdbcodbcst.gif&quot; alt=&quot;Type 1 Lite Edition (Single-Tier) Architecture Diagram&quot; title=&quot;Type 1 Lite Edition (Single-Tier) Architecture Diagram&quot; style=&quot;max-width: 300px; height: auto&quot; /&gt;
 &lt;/a&gt; &lt;br /&gt; Type 1 Lite Edition (Single-Tier) Architecture Diagram &lt;br /&gt; &lt;i&gt;(click to enlarge)&lt;/i&gt;
&lt;/p&gt;


&lt;h2&gt;Why is Java 8 so special?&lt;/h2&gt;

&lt;p&gt;Sun long warned that the JRE-bundled Bridge was transitional, and Oracle confirmed immediately upon acquisition that it would &amp;quot;be removed in JDK 8. In addition, Oracle does not support the JDBC-ODBC Bridge.&amp;quot;  Java 8 is now in full release, and indeed, the venerable &lt;code&gt;sun.jdbc.odbc.JdbcOdbcDriver&lt;/code&gt; is no longer present, as evidenced by the scary looking error --&lt;/p&gt;

&lt;blockquote&gt;
 &lt;code&gt;&lt;pre&gt;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)
&lt;/pre&gt;
 &lt;/code&gt;
&lt;/blockquote&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Our JDBC-to-ODBC Bridge, in both &lt;a href=&quot;http://uda.openlinksw.com/jdbc-odbc-st/&quot; id=&quot;link-id0x2aab5b0cc1f8&quot;&gt;Type 1&lt;/a&gt; and &lt;a href=&quot;http://uda.openlinksw.com/jdbc-odbc-mt/&quot; id=&quot;link-id0x2aab5b0cc308&quot;&gt;Type 3&lt;/a&gt; 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 &lt;a href=&quot;http://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/jdbc_42.html&quot; id=&quot;link-id0x2aab5b0cc548&quot;&gt;JDBC 4.2, in 2015&amp;#39;s Java 8 a/k/a JDK/JVM/JRE 1.8&lt;/a&gt; -- and maintained compatibility with the also-evolving &lt;a href=&quot;https://msdn.microsoft.com/library/ee388580.aspx&quot; id=&quot;link-id0x2aab5b0cc6a8&quot;&gt;ODBC API, now at 3.8&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;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 &lt;a href=&quot;http://uda.openlinksw.com/jdbc-odbc-mt/&quot; id=&quot;link-id0x7fe35a5e2168&quot;&gt;Type 3 solutions&lt;/a&gt; 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.&lt;/p&gt;

&lt;p&gt;As always, our solutions are &lt;a href=&quot;http://download.openlinksw.com/solwiz/&quot; id=&quot;link-id0x2aab5b0cc0e8&quot;&gt;available for immediate download&lt;/a&gt;, with a free two-week trial license provided alongside.  We encourage pre-purchase installation, configuration, and testing, with support provided through our &lt;a href=&quot;http://boards.openlinksw.com/support/index.php&quot; id=&quot;link-id0x2aab5b0cc9a8&quot;&gt;web-based Support Forums&lt;/a&gt; and even &lt;a href=&quot;http://support.openlinksw.com/support/online-support.vsp&quot; id=&quot;link-id0x2aab5b0ccaa8&quot;&gt;free up-and-running Support Cases&lt;/a&gt;.  Once you&amp;#39;ve confirmed the driver works for you, &lt;a href=&quot;http://uda.openlinksw.com/offers/&quot; id=&quot;link-id0x2aab5b255fc8&quot;&gt;entry level and special offer licenses&lt;/a&gt; may be purchased online or through our Sales Team; these as well as custom license configurations or &lt;a href=&quot;http://www.openlinksw.com/partners/&quot; id=&quot;link-id0x2aab5b256168&quot;&gt;partnership (IBP, ISV, VAR, OEM, etc.) arrangements&lt;/a&gt; are always available by &lt;a href=&quot;http://www.openlinksw.com/contact/&quot; id=&quot;link-id0x2aab5b256288&quot;&gt;direct contact&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>DataSpaces Bulletin: December issue now online!</title><guid>http://www.openlinksw.com:443/weblog/uda/135/?date=2008-12-09#1492</guid><comments>http://www.openlinksw.com:443/weblog/uda/135/?id=1492#comments</comments><pubDate>Tue, 09 Dec 2008 18:09:00 GMT</pubDate><description>&lt;p&gt;The highly anticipated &lt;a href=&quot;http://support.openlinksw.com/supportweb/DataSpacesBulletin-2008-12&quot; id=&quot;link-id0x2108a398&quot;&gt;December 2008 issue of the DataSpaces Bulletin is now available&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;This month&amp;#39;s DataSpaces contains material of interest to the Virtuoso developer and UDA user community alike —&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Introduction to Virtuoso Universal Server (Cloud Edition).&lt;/li&gt;
&lt;li&gt;Links to Virtuoso and Linked Data mailing lists.&lt;/li&gt;
&lt;li&gt;UDA license management tips and tricks.&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Creating RSS Using SQLX</title><guid>http://www.openlinksw.com:443/weblog/uda/135/?date=2003-11-11#425</guid><comments>http://www.openlinksw.com:443/weblog/uda/135/?id=425#comments</comments><pubDate>Tue, 11 Nov 2003 23:33:50 GMT</pubDate><description>&lt;p&gt;Here is a &lt;a href=&quot;http://www.openlinksw.com/articles/rssvirtsqlx.htm&quot;&gt;practical example of how to create RSS on the fly from SQL &lt;/a&gt;data sources leveraging Virtuoso 3.2&amp;#39;s SQLX implementation.&lt;/p&gt;
&lt;p&gt;This is further illuminates the content of my &lt;a href=&quot;http://www.openlinksw.com/weblogs/virtuoso/index.vspx?id=426&quot;&gt;earlier post&lt;/a&gt; on this subject.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;</description></item><item><title>XML Development Hindered by Lack of Conformity to Data Connectivity Standards ?</title><guid>http://www.openlinksw.com:443/weblog/uda/135/?date=2003-11-11#424</guid><comments>http://www.openlinksw.com:443/weblog/uda/135/?id=424#comments</comments><pubDate>Tue, 11 Nov 2003 23:14:55 GMT</pubDate><description>&lt;p dir=&quot;ltr&quot;&gt;I&amp;#39;ve just read an&lt;/p&gt;</description></item><item><title>HOWTO: Apache-PHP-ODBC on Mac OS X</title><guid>http://www.openlinksw.com:443/weblog/uda/135/?date=2003-10-24#397</guid><comments>http://www.openlinksw.com:443/weblog/uda/135/?id=397#comments</comments><pubDate>Fri, 24 Oct 2003 15:39:28 GMT</pubDate><description>&lt;div class=&quot;Section1&quot;&gt;
&lt;p&gt;
  &lt;font face=&quot;Times New Roman&quot;&gt;
   &lt;span style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;font size=&quot;2&quot;&gt;There is a new &lt;/font&gt;
    &lt;a href=&quot;http://www.iodbc.org/iodbc-phposxHOWTO.html&quot;&gt;&lt;font size=&quot;2&quot;&gt;HOWTO document&lt;/font&gt;
    &lt;/a&gt;&lt;font size=&quot;2&quot;&gt; that addresses an area of frequent confusion on Mac OS X, which is how do you build PHP with an ODBC data access layer binding (&lt;/font&gt;
    &lt;a href=&quot;http://www.iodbc.org/&quot;&gt;&lt;font size=&quot;2&quot;&gt;iODBC&lt;/font&gt;
    &lt;/a&gt;&lt;font size=&quot;2&quot;&gt; variant) using Mac OS X Frameworks as opposed to Darwin Shared Libraries. &lt;/font&gt;
   &lt;/span&gt;
  &lt;/font&gt;
&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>A Virtuoso of a Server</title><guid>http://www.openlinksw.com:443/weblog/uda/135/?date=2003-10-23#396</guid><comments>http://www.openlinksw.com:443/weblog/uda/135/?id=396#comments</comments><pubDate>Thu, 23 Oct 2003 21:58:31 GMT</pubDate><description>&lt;font size=&quot;2&quot;&gt;
&lt;p&gt;
&lt;a href=&quot;http://www.nwfusion.com/index.html&quot;&gt;NETWORK WORLD&lt;/a&gt; NEWSLETTER: MARK GIBBS ON WEB APPLICATIONS &lt;/p&gt;
&lt;p&gt;
&lt;font size=&quot;2&quot;&gt;Today&amp;#39;s focus: A Virtuoso of a server&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;By &lt;a href=&quot;http://www.nwfusion.com/columnists/gibbs.html&quot;&gt;Mark Gibbs&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;One of the bigger drags of Web applications development is that building a system of even modest complexity is a lot like herding cats - you need a database, an applications server, an XML engine, etc., etc. And as they all come from different vendors you are faced with solving the constellation of integration issues that inevitably arise.&lt;/p&gt;
&lt;p&gt;If you are lucky, your integration results in a smoothly functioning system. If not, you have a lot of spare parts flying in loose formation with the risk of a crash and burn at any moment.&lt;/p&gt;
&lt;p&gt;An alternative is to look for all of these features and services in a single package but you&amp;#39;ll find few choices in this arena.&lt;/p&gt;
&lt;p&gt;One that is available and looks very promising is OpenLink&amp;#39;s Virtuoso (see links below).&lt;/p&gt;
&lt;p&gt;Virtuoso is described as a cross platform (runs on Windows, all Unix flavors, Linux, and Mac OS X) universal server that provides databases, XML services, a Web application server and supporting services all in a single package.&lt;/p&gt;
&lt;p&gt;OpenLink&amp;#39;s list of supported standards is impressive and includes .Net, Mono, J2EE, XML Web Services (Simple Object Application Protocol, Web Services Description Language, WS-Security, Universal Description, Discovery and Integration), XML, XPath, XQuery, XSL-T, WebDav, HTTP, SMTP, LDAP, POP3, SQL-92, ODBC, JDBC and OLE-DB.&lt;/p&gt;
&lt;p&gt;Virtuoso provides an HTTP-compliant Web Server; native XML document creation, storage and management; a Web services platform for creation, hosting and consumption of Web services; content replication and synchronization services; free text index server, mail delivery and storage and an NNTP server.&lt;/p&gt;
&lt;p&gt;Another interesting feature is that with Virtuoso you can create Web services from existing SQL Stored Procedures, Java classes,&lt;/p&gt;
&lt;p&gt;C++ classes, and &amp;#39;C&amp;#39; functions as well as create dynamic XML&lt;/p&gt;
&lt;p&gt;documents from ODBC and JDBC data sources.&lt;/p&gt;
&lt;p&gt;This is an enormous product and implies a serious commitment on the part of adopters due to its scope and range of services.&lt;/p&gt;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;p&gt;
  &lt;em&gt;Virtuoso is enormous by virtue of its architectural ambitions, but actual disk requirements are&lt;/em&gt;
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/font&gt;</description></item><item><title>MySQL-ODBC Bridge SDK</title><guid>http://www.openlinksw.com:443/weblog/uda/135/?date=2003-10-02#382</guid><comments>http://www.openlinksw.com:443/weblog/uda/135/?id=382#comments</comments><pubDate>Thu, 02 Oct 2003 18:20:42 GMT</pubDate><description>&lt;p&gt;
&lt;strong&gt;What Is This&lt;/strong&gt;? &lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;http://www.iodbc.org/mysql2odbc/&quot;&gt;MySQL-ODBC SDK&lt;/a&gt; enables you to make MySQL specific applications database independent via ODBC without wholesale re-writes of your MySQL specific application code. Thus, applications that are written directly to the MySQL &lt;a href=&quot;http://www.wikipedia.org/wiki/Call_Level_Interface&quot;&gt;Call Level Interface&lt;/a&gt; now end up being database independent via ODBC, and usable against any ODBC accessible database (including MySQL). &lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Why Is It Important?&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;The Open-Source community is rapidly producing innovative applications and in many cases these applications sit atop relational database management systems. Traditionally and historically, the tendency has been to look to MySQL as the default relational database service for Open Source Applications (the &amp;quot;M&amp;quot; in LAMP) which is unfortunately retrogressive since the concept of database independence has long been addressed industry wide via APIs such as ODBC, JDBC, OLE DB, and more recently ADO.NET. &lt;/p&gt;
&lt;p&gt;In some case the existence of these APIs has been unknown to Open Source developers prior to application development, and in other cases the complexity of a port from the MySQL API to ODBC ends up being too difficult. There are numerous reasons why you can&amp;#39;t mandate MySQL or any other database engine for that matter to every potential user of an Open Source database centric application: &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Compromises freedom of choice (&amp;quot;Freedom of Choice&amp;quot; is a central theme of the Open Source movement and concept) &lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Database vendor lock-in reduces the deployment scope of your application, and it also potentially impedes functionality growth (what happens when the underlying database lacks the functionality that you desire? And cannot or will not deliver an implementation within your time-frame?) &lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Cost-Effectiveness is an Open Source value proposition main stay, so asking potential users to acquire yet another database (the real costs aren&amp;#39;t $0.00 as resources will be required for administration, installation, configuration etc.) when functional ODBC accessible relational databases exist in house is simply contradictory at the very least.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&lt;a href=&quot;http://www.openlinksw.com/info/docs/odbcwhp/tableof.htm&quot;&gt;ODBC as a concept&lt;/a&gt; has always been designed to be database-independent; &lt;a href=&quot;about:blankwww.iodbc.org&quot;&gt;iODBC as an Open Source project&lt;/a&gt; was devised to ensure platform neutrality for ODBC (just as &lt;a href=&quot;about:blankwww.go-mono.com&quot;&gt;Mono&lt;/a&gt; is pursuing the same goals re. .NET). When you write an application using the ODBC API database interchangeablity becomes a reality (the worst thing that can happen to you is a dysfunctional driver which is replaceable). &lt;a href=&quot;http://www.iodbc.org/mysql2odbc&quot;&gt;Read on..&lt;/a&gt;
&lt;/p&gt;</description></item>
</channel>
</rss>
