Jun 20, 2006

[Mustang] Derby in Mustang にチャレンジ

色々なところで話題になっているようだが、Derby が Mustang に同梱されるらしい。 公式には Java DB という DBMS が搭載されるということだが、Java DB のサイトには

What's Java DB?

Java DB is Sun's supported distribution of the open source Apache Derby 100% Java technology database. It is fully transactional, secure, easy-to-use, standards-based -- SQL, JDBC API, and Java EE -- yet small, only 2MB. The Apache Derby project has a strong and growing community that includes developers from large companies such as Sun Microsystems and IBM as well as individual contributors.
と記述されているので、Java DB == Derby ということだろう。

ユニットテストやプロトタイプ開発時など「とりあえず何でもいいから DBMS が欲しい」というときに Derby を結構使うので同梱してくれるのは多少嬉しい。 ・・・ Maven2 使っていれば別に同梱してくれなくてもすぐ使えるけれど。
Java DB is bundled in Mustang
http://weblogs.java.net/blog/davidvc/archive/2006/06/java_db_is_bund.html
Java DB
http://developers.sun.com/prodtech/javadb

Derby in Mustang のインストール

早速 Java Platform, Standard Edition 6 Binary Snapshot Releases から jdk-6-rc-bin-b88-windows-i586-15_jun_2006.exe をダウンロードしてインストールしてみた。 インストールされた J2SE SDK を見てみると、%JAVA_HOME%\db に Derby がそのまま同梱されていることが分かる。

>tree /f C:\_java\jdk\1.6.0_15_jun_2006\db
C:\_JAVA\JDK\1.6.0_15_JUN_2006\DB
│  3RDPARTY
│  CHANGES
│  COPYRIGHT
│  LICENSE
│  NOTICE
├─demo
│  ├─databases ... snip
│  └─programs ... snip
├─frameworks
│  │  readme.html
│  ├─embedded
│  │  │  readme.html
│  │  └─bin
│  │          dblook.bat
│  │          dblook.ksh
│  │          ij.bat
│  │          ij.ksh
│  │          setEmbeddedCP.bat
│  │          setEmbeddedCP.ksh
│  │          sysinfo.bat
│  │          sysinfo.ksh
│  └─NetworkServer
│      │  readme.html
│      └─bin
│              dblook.bat
│              dblook.ksh
│              ij.bat
│              ij.ksh
│              NetworkServerControl.bat
│              NetworkServerControl.ksh
│              setNetworkClientCP.bat
│              setNetworkClientCP.ksh
│              setNetworkServerCP.bat
│              setNetworkServerCP.ksh
│              startNetworkServer.bat
│              startNetworkServer.ksh
│              stopNetworkServer.bat
│              stopNetworkServer.ksh
│              sysinfo.bat
│              sysinfo.ksh
└─lib
        derby.jar
        derby.war
        derbyclient.jar
        derbyLocale_de_DE.jar
        derbyLocale_es.jar
        derbyLocale_fr.jar
        derbyLocale_it.jar
        derbyLocale_ja_JP.jar
        derbyLocale_ko_KR.jar
        derbyLocale_pt_BR.jar
        derbyLocale_zh_CN.jar
        derbyLocale_zh_TW.jar
        derbynet.jar
        derbyrun.jar
        derbytools.jar

Derby in Mustang を使ってみる

環境設定

Mustang 内の Derby を実行するには、JAVA_HOME、DERBY_HOME という環境変数を指定する必要がある。 これら環境変数を指定した後で、DERBY_HOME の中にある環境設定用バッチファイルを実行する。 今回は Embedded モードを使用した。

> set JAVA_HOME=c:\_java\jdk\1.6.0_15_jun_2006
> set DERBY_HOME=%JAVA_HOME%\db
> set PATH=%JAVA_HOME%\bin;%PATH%
> %DERBY_HOME%\frameworks\embedded\bin\setEmbeddedCp.bat

SET DERBY_HOME=c:\_java\jdk\161730~1.0_1\db

set CLASSPATH=c:\_java\jdk\161730~1.0_1\db\lib
\derby.jar;c:\_java\jdk\161730~1.0_1\db\lib\derbytools.jar;.;C:\Program Files\Ja
va\jre1.5.0_06\lib\ext\QTJava.zip

環境確認

Derby の情報を確認するための sysinfo.bat というバッチファイルが用意されているので実行してみた。

> java -version
java version "1.6.0-rc"
Java(TM) SE Runtime Environment (build 1.6.0-rc-b88)
Java HotSpot(TM) Client VM (build 1.6.0-rc-b88, mixed mode, sharing)

> %DERBY_HOME%\frameworks\embedded\bin\sysinfo.bat
------------------ Java 情報 ------------------
Java バージョン:       1.6.0-rc
Java ベンダー:         Sun Microsystems Inc.
Java ホーム:           c:\_java\jdk\1.6.0_15_jun_2006\jre
Java クラスパス:       c:\_java\jdk\161730~1.0_1\db\lib\derby.jar;c:\_java\jdk\1
61730~1.0_1\db\lib\derbytools.jar;.;C:\Program Files\Java\jre1.5.0_06\lib\ext\QT
Java.zip
OS 名:                 Windows XP
OS アーキテクチャー:   x86
OS バージョン:         5.1
Java ユーザー名:       me
Java ユーザー・ホーム: C:\Documents and Settings\me
Java ユーザー dir:     C:\Hoge
java.specification.name: Java Platform API Specification
java.specification.version: 1.6
--------- Derby 情報 --------
JRE - JDBC: ?-?
[C:\_java\jdk\1.6.0_15_jun_2006\db\lib\derby.jar] 10.2.0.3 alpha - (412448:41244
9)
[C:\_java\jdk\1.6.0_15_jun_2006\db\lib\derbytools.jar] 10.2.0.3 alpha - (412448:
412449)
------------------------------------------------------
----------------- ロケール情報 ----------------
現行ロケール :  [日本語/日本 [ja_JP]]
ロケールのサポートが見つかりました: [de_DE]
         バージョン: 10.2.0.3 alpha - (412448:412449)
ロケールのサポートが見つかりました: [es]
         バージョン: 10.2.0.3 alpha - (412448:412449)
ロケールのサポートが見つかりました: [fr]
         バージョン: 10.2.0.3 alpha - (412448:412449)
ロケールのサポートが見つかりました: [it]
         バージョン: 10.2.0.3 alpha - (412448:412449)
ロケールのサポートが見つかりました: [ja_JP]
         バージョン: 10.2.0.3 alpha - (412448:412449)
ロケールのサポートが見つかりました: [ko_KR]
         バージョン: 10.2.0.3 alpha - (412448:412449)
ロケールのサポートが見つかりました: [pt_BR]
         バージョン: 10.2.0.3 alpha - (412448:412449)
ロケールのサポートが見つかりました: [zh_CN]
         バージョン: 10.2.0.3 alpha - (412448:412449)
ロケールのサポートが見つかりました: [zh_TW]
         バージョン: 10.2.0.3 alpha - (412448:412449)
------------------------------------------------------

サンプルコード実行

以前作成した Embedded モード Derby 用のサンプルコードを実行してみた。

> java jp.in_vitro.codelets.mustang.javadb.Codelet
field01=100, field02=dummy data
field01=888, field02=hogehoge
Derby システムがシャットダウンされました。 : 50000