Thursday Apr 26, 2007

Apache Derby 10.3 Features List

Here you can find the list of new features and issues to be resolved for the coming Apache Derby 10.3 which is targeted to be released around end of June 07'.

Some exciting additions around security and performance improvements:

- DBA Powers
- SSL/TLS support in Client/Server mode
- Language Based Ordering
- Reduction of CPU usage and improved concurrency in Derby (embedded) core.
- Long awaited ALTER TABLE DROP or RENAME column (great for dynamic schema modifications)

You can find more details here as well as the list of targeted issues to be addressed.

As usual, you can check the latest Alpha documentation corresponding to the Derby Alpha codeline (Trunk).

Wednesday Apr 25, 2007

An Apache Derby unBOF at JavaOne 2007

Come learn what's cool and what's new in Apache Derby, the database for Java applications, from Derby committers and community members. This is a great opportunity to meet with the Apache Derby community and Java DB folks. Of course, there will be Beer, wine, soft drinks, and very nice snacks!

\*Tuesday evening, 8 May from 7:00 to 10:00+ pm \*\*
@ Jillian's in the Sony Metreon, right next to the Moscone Center
101 4th Street, Suite 170, San Francisco\*

Monday Apr 23, 2007

FISL 8.0 Conference in Brazil

Simon Phipps has posted a neat picture of Sun's booth at FISL 8.0 (Porto Alegre, Brazil) where I just came back from last week.

As usual and once again, the conference has been terrific - Lots of attendees (5,363) and it is all about free and open source software. It was incredible (even after my second time there) to experience the level of interest from the attendees - Very nice folks and this conference keeps you busy for sure until dusk ;-).

Also, for a "meaterian" like me ;-), it was absolutely awesome to experience the intense BBQ cuisine from Brazil (churrasco)and this area.

I gave a presentation on particular technics on how to enable offline web applications (RIA) using Java DB - I will give a more elaborated talk at JavaOne 2007 where I'm co-presenting with Zimbra on their next-generation suite of collaborative web applications that can operate homogeneously online and offline (Zimbra Desktop), using Apache Derby.

Many thanks to Rafael Vanoni for hosting my talk and speaking Portuguese better than I do ;-)

Obrigado a Todos!

Thursday Apr 19, 2007

Ubuntu Users Gets Java DB Surprise and A Lot More Than That...

It has been announced today, Ubuntu Feisty Fawn (7.04) has been released and it includes Sun's complete Java stack.

This is the first time that an entire, production quality Java stack with tooling is being included in an open source GNU/Linux distribution - greatly simplifying the process for Linux developers and users to access Java technology.

The complete and fully supported components of Sun's Java stack which are packaged for Ubuntu are Java SE 6 JDK, GlassFish v1, NetBeans IDE 5.5 and Java DB 10.2 (based on Apache Derby). (FAQ)

You can also check Tom Marble's blog entry for additional information. This is very exciting indeed.

You can 'apt-get' install Java DB as an optional Ubuntu package such as:
# apt-get install sun-java6-javadb
and it should get installed under '/usr/lib/jvm/java-6-sun/db/'

Friday Mar 16, 2007

Sequoia database clustering middleware with GlassFish and Java DB (Apache Derby)

Jagadish Ramu has written a demo and tutorial article to show how GlassFish and Sequoia can be used together to provide database clustering capability with Apache Derby / Java DB.

Sequoia is an open source database clustering middleware that allows any Java application to transparently
access a cluster of databases through JDBC. No code change is required to enable an application to have failover, replication capabilities.

This demo will have the modified sample application from Netbeans, deployed in GlassFish,
interacting with Sequoia controller for database operations with Apache Derby. The only change needed in the sample is to
configure the properties of jdbc-connection-pool to interact with the Sequoia controller.

Tuesday Mar 06, 2007

Migrating Your Application to Use Java DB

In this article, a web application that was developed using the Pointbase database is migrated to use Java DB. The web application was originally developed in the NetBeans 4.1 integrated development environment (IDE).

Java DB is Sun Microsystem's supported distribution of the Apache Derby 100% Java database. IF you are using JDK 6, Java DB is included as part of this last one. You can also download the Sun Java System Application Server, which includes Java DB.

When registering the application server in NetBeans 5.5, Java DB will be automatically registered as well. Alternatively, you can download the Java EE 5 Tools Bundle, which includes both the NetBeans IDE and Sun Java System Application Server.. Java DB is fully transactional, secure, and compliant with the JDBC, SQL, and J2EE standards.

Sunday Mar 04, 2007

Sun releases Java Enterprise System 5.0 with Java DB (based on Apache Derby)

"Java ES (Enterprise System) already includes Java DB, Sun's supported distribution of the open-source Apache Derby database. The middleware also supports the PostgreSQL open-source database.

Sun now lays claim to more than 1.3 million subscribers for Java ES compared to the nearly 1 million it declared in October 2005."

Monday Feb 26, 2007

Derby Embedded w/ Eclipse

To follow-up on the Java DB / Apache Derby with Netbeans blog entry that I recently posted, here is another user experience from Paweł Piotrowski who used Eclipse (IDE) to access Derby in embedded mode.

Wednesday Feb 14, 2007

Connecting a GUI to a Java DB Database with NetBeans IDE

This NetBeans tutorial contributed by Talley Mulligan guides you through the process of connecting the GUI of an application to a Java DB database. It shows how to add data-aware JDBC components to the GUI that will enable the program to interact with the database.

If you have not seen it already, there is also a "Working with the Java DB (Derby) Database in Netbeans 5.5" tutorial contributed by Brian Leonard.

Wednesday Feb 07, 2007

ActiveMQ graduates from Apache Incubator and uses Apache Derby

Apache ActiveMQ Open Source Message Broker has now graduated to become a top level project (TLP) at Apache! Congratulations to the ActiveMQ community!

To achieve high performance of durable messaging, ActiveMQ embeds and uses Apache Derby (configured by default), to allow for some very fast persistence via JDBC, coupled along with ActiveMQ's high performance journal.

Friday Feb 02, 2007

Archived Apache Derby Mailing lists - A great resource for Derby Users and Developers

I have been using Nabble for quite some time now and I have to say that it provides a great way to search and browse archived mailing lists.

If you need to get some Derby questions answered, you might want to do a search on the Apache Derby Users mailing list or the developers one, if you want to know more about Derby internals.

Of course, there is additional resources on the Apache Derby website itself.

Thursday Feb 01, 2007

Projects & Products using Derby (Java DB)

If your product is using Apache Derby, I encourage you to make mention of it in the Projects & Products using Derby web page.

Java DB, which is based on Apache Derby and bundled with Sun JDK 6 is using the same database core engine.

Tuesday Jan 16, 2007

Open Source Report on Apache Derby

David Spector has published an interesting article about Apache Derby on the Open Source Report blog.

Tuesday Dec 05, 2006

JavaPolis 2006 (J-8) and Java DB presentations

I will be in Antwerp (Belgium) next week to attend JavaPolis 2006 and give 2 presentations of Java DB (based on Apache Derby) as well as some Lab:

- Java DB Overview

- Java DB Performance

- Hands-on Java DB Lab

If you want to discuss anything related to Java DB / Apache Derby, please feel free to contact me over there - I will be at the Sun Java DB booth as well when not attending or giving a session.

See you in JavaPolis.

Wednesday Nov 22, 2006

Easysoft ODBC-JDBC Gateway certified for Java DB / Apache Derby

The Easysoft ODBC-JDBC Gateway which lets ODBC-enabled applications such as Business Objects, Microsoft Access, Microsoft Excel and Microsoft SQL Server access Java databases, is now certified with Java DB.

Note that the gateway is also available for the Solaris platform.

Thursday Jun 15, 2006

Java DB is now part of Sun's JDK

Pure fiction or reality? well, this is one of the two and yes it has become a reality! - It is a very exciting event indeed to have an Open Source Java Database System bundled into Sun's \*latest\* 1.6 JDK (Mustang build 88 to be more precised), and at no cost.

Java DB is based on Apache Derby and is Sun's redistribution of this last one.

It is a fully transactional, Java technology-based relational database with support for open standards such as SQL, JDBC, Java EE, Java ME CDC – concurrent users, triggers, Java stored procedures and encryptable databases, it is only 2 MB and free! Java DB is based on an Apache project with a strong and growing community which includes developers from Sun and IBM.

Sun's JDK 1.6 Build 88 is now available at

You will find the distribution of Java DB under the 'db' directory of the main JDK install.

The release of Java DB bundled with the JDK is a 10.2 Alpha version. See David Van couvering's weblog entry regarding database upgrade limitation and how to get support from Sun and/or the Apache Derby comunity.

This allows Java developers to build applications even more rapidly and easily by having access to a Java Database which implements many features from the latest JDBC4 API Specification, directly out of the JDK.

Java DB is easy to use and can run embedded as part of your application, as well as in a client/server topology. It can be deployed via Java Web Start, compressed down to around ~650KB and easily embeddable into a web browser as a Java plug-in extension.

Congratulations to all the persons involved who made this possible!

Friday May 12, 2006

Learn more about Apache Derby during JavaOne 06' w/ free drinks on top

If you're coming to JavaOne this year, I do recommend attending the introduction to Apache Derby session (TS-3154).

The speakers are Dan Debrunner (IBM) and David Van Couvering (Sun) - Both Apache Derby committers.

Informal Derby BoF at JavaONE 2006!

After this great introduction session you should come to the "informal Derby BoF at JavaONE 2006!" event hosted by Sun and IBM and meet all kind of derby geeks.

Come learn What's Cool and What's New in Apache Derby, an all-Java database. From Derby committers and community members. Have rousing conversations on subjects such as "The Power of Java in a Database", "Derby is a Real Database (ACID & 50+GB!)", and of course, "Is It a Hat or a Horse Race?" Beer, wine, softdrinks, and very nice snacks provided!

Tuesday evening, 16 May from 7:30 - 9:30 pm
@ Jillian's in the Sony Metreon next to the Moscone Center
101 4th Street, Suite 170, San Francisco
(Not in the Mocone Center as previously announced)

Sunday May 07, 2006

Client-Side services in the Web Browser - Local AJAX

Recently, several blog articles have been posted by David Berlind from ZDNET - it has sparked a lot of comments from several people and touched on a lot of differents subjects and technologies...

The embedded Java DB demo which showcases local and secure storage in the web brower is not just enriching the browser but principally enabling web applications to operate offline / disconnected.

What it comes down to and as stated by some comment posts in Simon Phipps's blog entry AJAX: New Life For The Applet?, the showed example demonstrates how a new service (local storage) can be added to the web browser and which applications can benefit from such capability (I can name a few popular web 2.0 applications that I use everyday and wish they could run offline).

A particular and popular web application protocol that can benefit from it is AJAX - why you may ask? 1) It has a defined and published paradigm/methodology, 2) It has been adopted and especially 3) it integrates extremely well with today's web applications and is a main component of web 2.0.

A local AJAX controller can handle requests and serve responses in XML format the same way AJAX currently does...We're talking about offline data management capability at the AJAX level (Local AJAX). Now how does this work from a 14,000 feet view? well, there is no magic and it is fairly straightforward to understand - a (local) client service(s) controller can satisfy AJAX type requests and return data from a local and embedded database system (Java DB) for instance. In the demo I wrote, the data being returned would purely be database rows in XML format, the requests can be canned SQL queries or pure SQL submitted via AJAX, locally.

What matters at the end is that we're adding extra capabilities to web applications via added services to the web browser. The browser gets richer, web applications get smarter and at the end, the user's web experience has improved without making the web browser a much fatter application like some people might think...This is still DHTML, Javascript and HTTP - The JVM is running embedded as part of the web browser and so does Java DB which is itself a Java extension in that context...You'd be programming the same way except you're being given extra capabilities for your webapp. This is as simple as that.

Sure, Java DB, based on Apache Derby was picked as the database running embedded within the browser. It is lightweight, secure, fast and meets all ACID properties. It is not a new database system; in fact its first release was in 1997 at Cloudscape where I had the privilege to work there. The fact it is written in Java is a plus indeed, because it can really be installed as a Java Extension and as part of the JRE/Java Plug-in which is itself a 1-click firefox extension install to Firefox. Of course, Java DB written in Java also allows a direct interaction from Javascript using LiveConnect technology which is itself available from the Java Plug-in; but better yet, having a uniform JVM across web browsers allows web applications to be run uniformly, no matter what the environment is.

The local AJAX controller and storage services are implemented as a thin and invisible applet, which itself is packaged as a Java extension (by choice). The advantage of this, is that I can install the Java Plug-in on every known web browsers out there and then the required client services will be installed on-demand automatically via the Java plug-in (or Java webstart). As Simon puts it, this could lead to the revive of the applet on the client side, but this time with no GUI involved, just a transparent and lightweight client service interface.

There is absolutely no changes with the DHTML and AJAX request handling syntax(es) - hence the learning curve is slim and additional code changes will be homogeneous with the rest of your new or existing webapps.

ZDNET Blogs:

Update to Creator 2 now includes Java DB (based on Apache Derby)

Great news and directly from The Aquarium.

Thursday Apr 27, 2006

JavaDB based on Apache Derby Demo posted

You can now get all the information about the demo embedding JavaDB within a web browser, which was shown at ApacheCon 05'.

Direct link to the demo information page can be found at

This demo runs on Mozilla Firefox as well as Mozilla Navigator. The minimal requirement is to install Sun's Java plug-in extension for the web browser. This demo does not run on Apple Mac OS X yet (work in progress).

You can also read some additional information on a previous blog entry.

Wednesday Jan 18, 2006

Compressing Apache Derby w/ Pack200

PACK200 (JSR-200) is a very interesting feature that is available as part of Java 5.

In order to increase network server, availability and bandwidth , two new compression formats have been made available to Java deployment of applications and applets: gzip and Pack200.

HTTP compression is implemented in Java Web Start and Java Plug-in in compliance with HTTP 1.1 RFC 2616. If a client does not support this type of compression then a web server will send a non-compressed JAR or a format that the client can process.

More information about Pack200 at:

I have compressed the Apache Derby engine JAR file (derby.jar) using pack200 and the resulting JAR went from 2,131,777 to 630,520 bytes (~2MB down to 600K for the database core engine!). Uncompression happens on the client side automatically once the pack200 compressed JAR has been fetched.

To compress/pack the JAR archive:
$ pack200 derby.jar.pack.gz derby.jar

It then can be stored on a HTTP 1.1 compliant web server and if a web client support pack200-gzip encoding (specified as part of the HTTP request), then the server will send that compressed JAR down - otherwise the server will stream/send a format that the client can process (compressed {gzip} or not {.jar}).

To unpack (manually):
$ unpack200 derby.jar.pack.gz derby.jar (the unpack operation is actually pretty fast)

This is quite good when one needs to deploy Apache Derby over a network (i.e. Applet using Derby with the Java plug-in, etc) or as part of some installer who would want to pack JARs even more efficiently and then unpack them during install (unpack200{.exe} is a standalone executable that can be included as part of an installer)

pack200 and unpack200 are pure executable(s) that do not require a JVM to be present or run at the time an archive is compressed or uncompressed (i.e. during installation)

unpack200 (Unix) or unpack200.exe(Windows) included as part of the JRE as well (under bin)

Pack200 also has a Java API (java.util.jar.Pack200):
The packer engine is used by application developers to deploy or host JAR files on a website. The unpacker engine is used by deployment applications to transform the byte-stream back to JAR format.

This does not reduce the runtime footprint of Apache Derby - it basically provides means to reduce the network footprint of JARs during download. Pack200 also supports the packing of \*signed\* JARs.

Wednesday Dec 14, 2005

ApacheCon demo - Web Browser Client Offline Storage with Java DB / Apache Derby

What I demo'ed at Apache during Tim Bray's keynotes was one particular use case of embedded Apache Derby (100% pure Java RDBMS) running within a web browser such as Mozilla Firefox...This allowed me to persist data automatically as HTML FORM fields got changed (at the field level or not) - It autosaved data entries locally without being paranoid about loosing my data in case of a browser crash or bad manipulation (fat fingers anyone?)...The store service can be called at anytime really from your client script...

Various database systems excel at different types of needs...My intent here was to use Apache Derby as the repository for an application managing some user's personal data (i.e. personal/private/financial taxes info). This is very different than managing browser's data/metadata (i.e. bookmarks, history, cache, etc) at the low-level and where indeed I would need a closer integration of the RDBMS with the browser engine...The demo highlighted how a web application could be enhanced (fast, embedded and secure local SQL storage) across web browsers, not just how it could enhance a particular web browser (i.e. Firefox).

As this particular demo manages personal and financial data, it is very likely that a production application would want to encrypt the data stored on the client storage - This is a possible and very likely an application requirement for this type of webapps. Derby supports strong encryption at the database level as well as strong authentication at the Derby engine or/and database level. Hence, I can have my local derby database(s) be secure, portable and platform independent without having to worry if I loose my usb drive or stick and my DB is on it...Derby also has some ACL-light support for embedded type of apps but Ansi SQL Grant & Revoke is being implemented as we speak - this is independent of the OS FS file permission scheme and is portable across OS's.

The demo I shown is one particular browser database integration scheme/topology - I did not have to \*natively\* integrate with the browser engine at all for this application. It was all driven from the application scripting logic interacting directly with a ClientStoreService object - This last one is implemented in Java and acts as a controller to the local client storage (Derby). It is seen as an object from Javascript (LiveConnect technology) which allows me to access some client storage service to issue queries and get data returned in XML, parse/process it with the native scripting engine XML Dom parser. The ClientStore Service can process requests asynchronously or not - I have another implementation where I added some HTTP request handling capability to Derby but this is NOT part of Apache Derby (yet) - this allows me to send a (Local) AJAX request (LAJAX) to Derby directly and get data returned as XML. The scripting engine does NOT have to be Javascript for the (L)AJAX mode...

For the Java engine I used Sun's JRE (browser Java plugin) which is a one-click install and is portable across and widely known web browsers.

Requirements for this Webapp demo were:
- A fast, embeddable, portable and secure (authentication/authorization/encryption) local client storage engine
- Portable across most widely known web browsers (at least 2 of them)
- Support for scripting standard asynchronous requests (Ajax mode) to the embedded client data store
- Various deployment options for the web application and database engine
- Support for direct access via a client scripting engine (non-Ajax mode, ala LiveConnect)

The deployment options for the ClientStorage engine and service would be:
- Direct HTTP download and archival of JARs,
- Direct copy of files,
- Firefox extension (w/ a dependence on the J2SE runtime environment Firefox plugin)
- Web shipping of already pre-populated databases, then made available locally to the web browser.

You can read all the details about this demo and get the source code at:

Thanks for reading...


Tuesday Dec 13, 2005

Embedding Derby in Mozilla Firefox

Today, during Tim Bray's keynote address at ApacheCon, I had the opportunity to present a Derby demo on which I've been working recently.

The application demonstrates the use of an embedded database (in this case Apache Derby) in a browser (in this case Mozilla Firefox). As soon as I get the time, I'll be writing more about the details of this demo. At this point, I'd simply like to thank Ted Leung for his brief description.

I do plan to release this demo to the open source community and will be announcing the details very soon on this blog.




« July 2016