メイン

Java アーカイブ

2005年10月12日

blanco Framework

blanco Framework。便利かも。

気になるプログラム達。

  • blancoDb

    Excelブックに書かれたSQL文と DBメタ情報をもとに、Java/JDBC用 R/Oマッピング・ソースコードを自動生成。

  • blancoResourceBundle

    Excel様式からプロパティファイルを自動生成。あわせてリソースバンドルアクセサJavaソースコードも自動生成。

  • blancoStruts

    Jakarta Struts用ソースコード(FormとAction)を Excel様式から自動生成。

  • BlancoSqlEditorPlugin

    SQLを整形する Eclipseプラグイン。

2005年10月22日

Javaで帳票出力

Javaで帳票出力するには、iReportJasperReports を使うのが簡単そうだ。

簡単なメモ。

iReport

  • 概要
    iReportは帳票のデザインテンプレートを作成するソフト。
    作成したデザインテンプレートはJasperReportsで帳票に変換する。

  • チュートリアル

  • 注意点

    • フォントの設定
      日本語を使う場合、間違ったフォントを選択すると日本語が表示されない
    • ゴシック体
    • PDF font name = HeiseiKakuGo-W5
    • PDF Encoding = UniJIS-UCS2-H
    • 明朝体
    • PDF font name = HeiseiMin-W3
    • PDF Encoding = UniJIS-UCS2-HW-H

JasperReports

2005年10月25日

JUnitで DataSource を使う

JavaでJUnitを使って、DataSourceを使用するクラスをテストしたい。

どうやら、JUnit JNDI DataSource helper package を使えば、DataSourceが使えるらしい。

  1. JUnit JNDI DataSource helper package をダウンロードし、展開する。
  2. jrunittesthelper.jar を WEB-INF/lib にコピーする。
  3. jndiunittest_helper.properties を適当なフォルダ(ここでは WEB-INF)にコピーする
  4. jndiunittest_helper.properties を編集する。

こんな感じで使える。

public static void main(String[] args) throws NamingException, IOException, SQLException {
    JNDIUnitTestHelper.init("WEB-INF/jndi_unit_test_helper.properties");
    InitialContext ctx = new InitialContext();
    DataSource ds = (DataSource)ctx.lookup(JNDIUnitTestHelper.getJndiName());
    Connection conn = ds.getConnection();
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery("select DEPTNO, DNAME from DEPT");
    while (rs.next()) {
        System.out.println(rs.getInt("DEPTNO"));
        System.out.println(rs.getString("DNAME"));
    }
    rs.close();
    stmt.close();
}

参考

2005年10月27日

iReportとJasperReportsを使い、画像をJavaプログラム側で差し替える

画像データをInputStreamで受け渡すことによって、Javaプログラム側で画像を指定できる

iReportで、画像のプロパティを設定する

  • Image Expression => $P{imgsrc}
  • Image Expression Class => java.io.InputStream

パラメータの設定をする

  • Parameter name => imgsrc
  • Parameter class type => java.io.InputStream

Javaプログラムでは、パラメータとして imgsrc に 画像のInputStreamを指定する

String imgPath = "images/xx.gif"; //画像ファイルの場所を指定
InputStream imgsrc = new FileInputStream(imgPath);
Map paramMap = new HashMap();
paramMap.put("imgsrc", imgsrc);

//テンプレートXMLのコンパイル
JasperReport jasperReport = JasperCompileManager.compileReport(templatePath);

//データの動的バインド
JasperPrint print = JasperFillManager.fillReport(jasperReport, paramMap, new JREmptyDataSource());

//PDFへ出力
JasperExportManager.exportReportToPdfFile(print, destPath);

2005年11月19日

All-In-One Eclipse

All-In-One EclipseとはEclipse v3.1.1をベースとして、その他便利だと思われるプラグイン(主にEclipseサブプロジェクトのもの)を追加し、日本語パックとフィーチャーオーバレイを適用したものを簡単にインストールできるインストーラのことです。

Eclipse のインストールが簡単にできるディストリビューション。

インストールが楽になりそう。

2006年01月07日

オラクル純正DB開発ツール "Project Raptor" ベータ版公開

オラクル純正DB開発ツール "Project Raptor" ベータ版公開

オラクル自身が開発したOracle Database向けのデータベース開発ツールである "Project Raptor" のEarly Adopter Release (ベータ版) が、オラクルの開発者向けサイトOTNで公開されました (正式版は2006年初頭を予定)。

QuestのTOADやSI Object Browserに代わるオラクル純正DB開発ツール。

Oracleのデータベース開発ツールの決定版になりそうなので、メモ。

追記:
Java製ソフトのせいだろうか、かなり重い。
仕事で使うなら、有償だが SI Object Browser を使いたい。

2006年07月22日

JDeveloper9.0.4.0 で JUnit を使う方法

インストール方法

  1. JDeveloper Old Versions Archives から、JUnit Extension for Oracle9i JDeveloper (Version 9.0.4.1.1)のリンクを選択する

  2. jdev9040_JUnit.zipをダウンロードする (OTNのアカウントが必要になります。)

  3. ダウンロードしたファイルを展開し、jarファイルを jdev\lib\ext にコピーする

  4. JDeveloperを再起動する

使用方法

  1. テストするクラスのソースファイルを選択する。

  2. メニューから「新規,,,」→「General」→「Unit Tests(JUnit)」

2006年07月23日

Javaのソースコードを整形する

Javaのソースコードを整形するソフトを探した。

最初に試したのが、Jindent

しかし、無料ではない上に、日本語が文字化けした。
文字化けに関しては設定があるのかもしれない。

次に試したのが、Artistic Style

Java以外にもC, C++, C#に対応している。
日本語も問題なかった。

修正するのはインデントだけのようで、大きな変更が行われないので、安心して使用できる。

xyzzyでプログラミング/整形 にxyzzyから Artistic Style を使う方法を発見。

AStyle.exeをPATHの通ったディレクトリにおいて、

C-x #
# astyle -j

で、バッファ全体のソースコードが整形される。

日本語訳のホームページを発見。これは便利。

2006年08月23日

Javaのバージョン間の互換性

Java 2 Platform Standard Edition 5.0 の互換性 に、J2SE 5.0(1.5のこと?)と過去のバージョンとの互換性についての記述があります。

中には結構やっかいなものがあって、

  1. 仮想マシン - これまで、クラスリテラル (Foo.class など) を評価するとクラスが初期化されました。5.0 では初期化されません。前の動作に依存するコードは書き直す必要があります。

これなんかは、一見ちゃんと動いているように見えるけど、初期化処理が行われていないため、予期せぬエラーに悩まされてしまうかもしれない。

プログラム言語のバージョンアップって難しい。

2007年06月03日

VineLinux4.1にEclipseをインストールする。

JAVAのインストール

  1. Java SE Downloadsのページに行く。

  2. 「JDK 5.0 Update 12」のダウンロードを選択する。

  3. 「Accept License Agreement 」をチェックする。

  4. 「Download Now! Linux self-extracting file」を選択する。
    ダウンロードが始まる。

  5. ダウンロードしたファイルを展開する。

    $ chmod 544 jdk-1_5_0_12-linux-i586.bin
    $ ./jdk-1_5_0_12-linux-i586.bin
    

動作確認

$ jdk1.5.0_12/bin/java -version
java version "1.5.0_12"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_12-b04)
Java HotSpot(TM) Client VM (build 1.5.0_12-b04, mixed mode, sharing)

Eclipseのインストール

  1. Eclipseのダウンロードのページに行く

  2. 「Eclipse SDK 3.2.2」を選択する。

  3. 適当なサーバーを選んで、ダウンロードする。

  4. ダウンロードしたファイルを展開する。

    $ tar xzvf eclipse-SDK-3.2.2-linux-gtk.tar.gz
    
  5. Eclipseを展開してできてディレクトリの中に、JDKをディレクトリ名「jre」にして移動する。

    $ mv jdk1.5.0_12 eclipse/jre
    
  6. Eclipseを実行する

    $ cd eclipse
    $ ./eclipse
    

Eclipseの日本語化

  1. Eclipse Project Downloads のページのページ下部にある「Language Packs」からバージョンにあったBuild Name(3.2.1_Language_Packs)を選択する。

  2. 「SDK Language Packs」から「NLpack1-eclipse-SDK-3.2.1-gtk.zip」を選択する。

  3. 適当なサーバーを選択すると、ダウンロードが始まる。

    $ unzip NLpack1-eclipse-SDK-3.2.1-gtk.zip
    
  4. 展開してできたディレクトリをEclipseのディレクトリにコピーする。

2009年01月30日

増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編

増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』は、 Javaに限らず、他の言語においても、 マルチスレッドプログラミングを学ぶ上で非常に役に立つ本です。

この本の著者が結城浩氏であると聞けば、 この本の読みやすさ、わかりやすさは容易に想像できると思います。

この本のすごいところは、練習問題の解答の充実です。
練習問題の解答は150ページを超え、丁寧に解説されています。
練習問題もしっかりと挑戦する価値があります。

J2SE5.0では、マルチスレッドプログラミングに便利なクラスライブラリが、新たに追加されました。
増補改訂版では、このJ2SE5.0で新たに追加されたクラスライブラリについての解説も掲載されています。

新しく追加されたクラスライブラリも含めて、 Javaのマルチスレッド関連のクラスライブラリの充実ぶりを、 他の言語を使っていると羨ましく思いました。

2009年07月05日

世界を股にかける数十億ドル規模の巨大航空会社をストップさせたバグ

Release It! 本番用ソフトウェア製品の設計とデプロイのために』で紹介されていた話。

数百の旅客機と数万人の社員を擁し、世界を股にかける数十億ドル規模の巨大航空会社をストップさせたのが次のコード。
さて、どこに問題があったかわかるだろうか。

package com.example.cf.flightsearch;
…
public class FlightSearch implements SessionBean {
  private MonitoredDataSource connectionPool;
  private List lookupByCity(…) throws SQLException RemoteException {
    Connection conn = null;
    Statement stmt = null;
    try {
      conn = connectionPool.getConnection();
      stmt = conn.createStatement();
      // 検索のロジックを実行して、
      // 結果のリストを返す
    } finally {
      if (stmt != null) {
        stmt.close();
      }
      if (conn != null) {
        conn.close();
      }
    }
  }
}

ヒントを一つ。
問題があるのは「finally { … }」の部分だ。

追記
アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣』にも、おそらくこの事件と思われる話が紹介されていました。

つい先日も、大規模な航空座席予約システムでの重大な障害がニュースで報じられた。 システムがクラッシュして飛行機が空港に足止めされて、何千人もの乗客が立ち往生することになった。 航空輸送システム全体の混乱は数日間にもわたって続いたそうだ。 原因は何だったのかって? アプリケーションサーバで起きた、たった1つのSQLの非チェック例外だったんだ。

About Java

ブログ「山本隆の開発日誌」のカテゴリ「Java」に投稿されたすべてのエントリーのアーカイブのページです。過去のものから新しいものへ順番に並んでいます。

前のカテゴリはFirebirdです。

次のカテゴリはJavaScriptです。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35