Oracle stops work on ADBA
douglas.surber at oracle.com
Mon Sep 23 17:15:11 UTC 2019
On Wednesday, September 18, at Oracle CodeOne Oracle announced that Oracle will stop work on ADBA (Asynchronous Database Access). The API and the JDBC implementation were released with open source licenses so if anyone wants to continue work on it, you certainly can.
We stopped work on ADBA for two reasons: per the Java team the future for scalable Java code is fibers, not async and there was very little support within the Java community for ADBA. The announcement was made at a CodeONE session on scalable and asynchronous database access. The only person in attendance who was interested in ADBA was in fact happy to learn that we had stopped work on it. His interest was primarily concern about the work required to implement it if it became a standard. The Java team stated that ADBA would never be accepted as a Java standard as it was an async solution to a problem that would be addressed by fibers. Unless it became a standard ADBA would have very little impact, certainly not enough to justify the effort.
The Java team's position is that synchronous code is easier to write, test, debug, maintain, and understand than async code. The only reason to write async code is that threads are so expensive. Project Loom will add fibers, very lightweight threads, to Java. Fibers are so light weight that it is completely practical to spin up as many as you need. So just write first semester CS synchronous code and and execute it on a dedicated fiber. This is much easier than writing async code to do the same task. Synchronous code will use the same JDBC we all know and love. No need to learn a new API. Existing code can be made to work with few if any changes.
I'm not going to debate fibers vs async. That is not the purpose of this list and the decision has been made. I will say that a simple Loom test case created 2.5 million fibers in less than two minutes. I doubt you could create that many threads at all.
Oracle made the following product announcements at the CodeONE session.
Oracle 19c Oracle Database JDBC drivers are available on Maven Central.
Oracle 20c Oracle Database JDBC drivers are fiber-ready. Fibers impose some restrictions on user code. The Oracle Database JDBC drivers to be released in Oracle 20c have been tweaked to fully support fibers. As fibers are not yet part of the JDK, the 20c JDBC drivers do not use fibers. They will work properly with any user code that does use fibers though. So when Loom is integrated into the JDK, you can use the 20c or later Oracle Database JDBC drivers and get the full benefit.
If you desperately need async database access, Oracle 20c Oracle Database JDBC drivers include proprietary async extensions. We added a small number of async methods for those of you who need the scalability now. In the long term fibers are the answer but that's a couple of years away. If you must have a solution now then the 20c drivers provide minimal async support. These extensions are much, much simpler than ADBA and much less capable. We were aiming for 80/20; 80% of the benefit for 20% of the work. Probably more like 60/5.
You can see the slides here.
More information about the jdbc-spec-discuss