(やれやれ)リンク先が別ウインドウで開くようにブログを修正しました
タイトルのとおりです。
修正のためにわざわざHEADタグを編集しなきゃならんという。
(参考)はてなブログ記事内にあるリンクを別ウィンドウ(target=_blank)表示に設定する方法 - (ホ)ライムライン
このくらい標準にしておいてくれよ、はてなブログェ……。
Javaバッチ処理 フレームワーク(OSS)ざっくりまとめ
仕事メモ記事が続きますが。
Javaバッチの学習手始めに情報収集しましたが、Javaはバッチ開発でもフレームワークを使用するのが主流のようです。
ざっと調べた限り、以下のフレームワークがメジャーのようです。
●TERASOLUNA Batch Framework for Java
NTTデータが開発し、オープンソースで提供している国産フレームワーク。
日本語資料が多く、初心者の学習・利用には向いていそう。
公式資料では、以下の特徴を挙げています。
①オンラインの開発者は、すぐにでもバッチ開発を習得可能です。
②バッチ開発に必要な機能を、コンポーネント化して提供しています。
③構造化プログラミングでビジネスロジックを実装可能であるため、以下の特徴があります。
• Pro*C、COBOLからのマイグレーションが容易です
• 処理設計書との親和性が高いです
http://www.terasoluna.jp/product/framework/batch_framework.html
●Spring Batch
世界的に利用実績が多く、事実上の標準。
だが意外とまとまった日本語情報がネットになく、書籍に当たる必要がありそう。
http://projects.spring.io/spring-batch/ (英語)
●JSR-352 Batch Applications for the Java Platform(通称:Java Batch)
Spring Batchの仕様をJavaが標準仕様として取り入れたもの。
つまりJava公式のバッチフレームワーク。
まだ新しいフレームワークで、こちらも情報が少ないが、Spring Batchと使い勝手はほぼ同じらしい。
http://www.oracle.com/technetwork/articles/java/batch-1965499.html (英語)
TERASOLUNAは内部的にSpring Frameworkを使っているし……本格的にSpringの勉強しとくいい機会かも。
ツールの概要調査 雑記
仕事でざっくり調べたことを記録しておきます。
断定口調になってますが、実際にすべてを試したわけじゃないので、実際は「調べてみたところ~らしいですよ」ってところ。
■Entity Framework
.NET Frameworkに含まれる、データアクセスに関わるフレームワークです。
https://msdn.microsoft.com/ja-jp/library/bb399567(v=vs.110).aspx
データベースを.NET上で扱いやすいようモデル(EDM)化します。
モデルを元に、データベースのテーブルを抽象化したクラスがフレームワークによってつくられます。
そのため、プログラマはクラスのプロパティやメソッドを操作する感覚でデータベースに格納したデータの検索や更新が行えます。
さらに、モデルはデータベースのテーブルそのものではなく、データベースの都合上でどうしても必要になってくる中間テーブルなどを意識する必要がない形で構築できるため、プログラマが直感的なデータ操作ができるようになっています。
具体的な例を挙げると、「店舗」テーブルと「商品」テーブルを関連づける「在庫」テーブルをプログラマが意識する必要がなくなります。
(SQLでJOINを行うといったことが不要になる)
プログラマは「店舗」クラスのオブジェクトが複数持っている「商品」クラスのオブジェクトを直接操作でき、その結果をSQLを使用せずにデータベースに反映できます。
Windowsアプリケーションのインストール・アップデートに関する仕組みです。
https://msdn.microsoft.com/ja-jp/library/t71a733d.aspx
Visual Studioからアプリケーションの発行を行う際にClickOnceが使われています。
Windowsのインストーラーと比べてシンプルで柔軟なインストールが可能で、アプリケーションのアップデートも簡単に行えるようになります。
・シンプル:インストール時にウィザードであれこれユーザに問わない
・柔軟:CDなどからのインストール、Webからダウンロードしてインストールなど、複数の形式に対応
また、ユーザがアプリを起動した時に、アプリが自動でアップデートがあるかを探しにいきます。
ベンダーはサーバー(ユーザーのイントラネット上でも、外部のWeb上でも可)の指定場所に最新バージョンを配置するだけでよく、ユーザー、ベンダーともにアップデートの手間が軽くなります。
■Flyway
データベースのバージョン管理や移行をサポートするツールです。
(DBマイグレーションツール)
海外産のオープンソースのツールです。
データベースへの変更(変更するSQLファイル)を都度バージョン記録して
います。データベースの変更によって不都合が生じた場合に、DBを過去のバージョンの状態に簡単に戻すことができます。
別環境に、指定したバージョンの状態のDBを簡単に再構築できます。
Java動作環境(JVM)で動作するようで、同じ環境で動作するビルドツールなどと連携させて使用することが多いようです。
Flywayの操作をビルドツールのスクリプトで自動化したり、Javaコードで作りこむことができるようです。
JNDIについて(とおまけ)
ものっそいひさびさにJavaの話。
それもいまさら聞けない系の。
JDBC利用時に定番のjava.naming.Context.lookupによるDataSourceの取得で、"java:comp/env/[データソース定義名]"とか決め事のように書いていたけど、その"java:comp/env/"ってなんやねん、と。
java:comp/env/"で始まる記述のしかたは、JNDI「ENC (Environment Naming Context:環境ネーミング・コンテキスト) 名」と呼ばれ、lookup する側の Web アプリケーション (*.war) や EJB-JAR (*.jar) 内でのみ有効なネームスペースに定義されます。
へえ~。
あーほんじゃ昔よく見たClass.forNameでJDBCドライバ指定するあれは?
各ベンダの JDBC Driver は java.sql.Driver を実装している必要があり、その実装クラスは static initializer で java.sql.DriverManager.registerDriver(java.sql.Driver) を使って登録している。
Class.forName -> static initializer -> DriverManager.registerDriver って流れ。あとは DriverManager を経由して各 Driver にアクセスして使用する。
ほーほー!
何でも決め事だからと思わずに調べるのは大事ですな。