<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Java</title><link>http://blogs.wankuma.com/kazuki/category/1422.aspx</link><description>Java</description><managingEditor>kazuki@wankuma.com (かずき)</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[Java]Spring Frameworkのメンテナンスポリシーが変わったみたい？</title><link>http://blogs.wankuma.com/kazuki/archive/2008/10/02/158023.aspx</link><pubDate>Thu, 02 Oct 2008 23:12:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/10/02/158023.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/158023.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/10/02/158023.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/158023.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/158023.aspx</trackback:ping><description>&lt;p&gt;ひがやすをさんのBlogで見たんだけど、どうもSpring Frameworkのメンテナンスポリシーが変わるみたいだ。&lt;br&gt;&lt;a title="http://d.hatena.ne.jp/higayasuo/20080921/1221962998" href="http://d.hatena.ne.jp/higayasuo/20080921/1221962998"&gt;http://d.hatena.ne.jp/higayasuo/20080921/1221962998&lt;/a&gt;&lt;/p&gt; &lt;p&gt;自分は、原文すら読んでないので、何がどうかわったのか言及するのは控えるけど、今後どうなっていくのか様子を見ておかないといけないかも。&lt;/p&gt; &lt;p&gt;誰かが定期的にビルドしてリリースしてくれるようになったりしないかな？&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/158023.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[JSF][NetBeans]入力値の検証方法</title><link>http://blogs.wankuma.com/kazuki/archive/2008/09/15/156568.aspx</link><pubDate>Mon, 15 Sep 2008 19:18:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/09/15/156568.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/156568.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/09/15/156568.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/156568.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/156568.aspx</trackback:ping><description>&lt;p&gt;JSF1.2でNetBeans6.5のVisual Web JSFを使った場合の入力値の検証について書いてみようと思う。&lt;br&gt;実装のサンプルは、話を簡単にするために以下の条件に絞って実装をしてみた。&lt;/p&gt; &lt;ol&gt; &lt;li&gt;テキストボックスには必ず値を入力しなければならない。  &lt;li&gt;入力する値は数字である必要がある。  &lt;li&gt;さらに入力された値は１～１０の間の数字でなければならない。  &lt;li&gt;未入力時には「必須入力項目です」と表示し、１～１０の数字でない場合は「１～１０の数値を入力してください」と表示する。&lt;/li&gt;&lt;/ol&gt; &lt;h1&gt;JSF 1.2の入力値の検証&lt;/h1&gt; &lt;p&gt;JSF1.2の入力値の検証は、大きく３つの検証のフェーズでチェックされる。&lt;/p&gt; &lt;ol&gt; &lt;li&gt;必須入力項目化どうか？  &lt;li&gt;何か入力されている場合は、入力値は何型かどうか？  &lt;li&gt;型変換後の値は、どういう値でなければならないか？&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;１は、requiredプロパティで指定する。boolean型なのでtrue(必須入力)かfalse(必須ではない）という意味合いになっている。さらに、この検証でエラーがでた場合は、requiredMessageプロパティで指定したメッセージがエラーメッセージとなる。&lt;/p&gt; &lt;p&gt;２は、converterプロパティで指定する。Converterは、文字列から目的の型へ変換するという仕事をする。また、表示用文字列への変換も担っている頑張り屋さんだ。Converterには、標準でInteger,Long.Double,Date,Booleanなど必要そうなものが一通り用意されている。&lt;br&gt;Converterでエラーが発生した場合は、converterMessageプロパティで指定した文字列がエラーメッセージとなる。&lt;/p&gt; &lt;p&gt;３は、validatorプロパティで指定する。Validatorは、Converterで変換した結果の値の妥当性を検証する。Validatorは、はじめから用意されてるものだとDoubleの範囲チェックを行うもの、文字列の長さをチェックするもの、Longの範囲をチェックするものが用意されている。ちょっと物足りない。&lt;br&gt;これで満足できなければ、validateイベントで自分で独自のチェックロジックを実装できるようになっている。まぁ、普通にプロジェクトでやるときにはカスタムValidatorを作ることも出来るので自作することになるんだと思う。&lt;br&gt;Validatorでエラーが発生した場合は、validatorMessageプロパティで指定した文字列がエラーメッセージとなる。&lt;/p&gt; &lt;p&gt;エラーメッセージの表示には、メッセージリストコンポーネントか、インラインメッセージコンポーネントを使用する。メッセージリストは、画面内のエラーメッセージをすべて表示するために使う。画面の上部や下部で、メッセージを一括表示するのに使ったりする。&lt;br&gt;インラインメッセージは、１つのコンポーネントに対応するエラーメッセージを表示するのに使う。&lt;/p&gt; &lt;h2&gt;というわけで実装してみよう&lt;/h2&gt; &lt;p&gt;グリッドパネルをデザイナで画面に配置して、そこに標準コンポーネントのテキストフィールドとボタンを置く。&lt;br&gt;テキストフィールドに、Longコンバータと、Long範囲コンバータを置く。これで数値であることと、特定の範囲であることを検証する。&lt;/p&gt; &lt;p&gt;コンバータとバリデータの設定方法は、パレットからテキストフィールド上に設定したコンバータとバリデータをドラッグアンドドロップするだけでOK。お手軽だ。&lt;/p&gt; &lt;p&gt;Long範囲バリデータは、maximumに10を、minimumに0を指定しておく。必須入力もチェックするので、TextFieldのrequiredプロパティにチェックも入れておく。&lt;/p&gt; &lt;p&gt;そして、テキストフィールドのrequiredMessageプロパティとconverterMessageとvalidatorMessageにエラー時のメッセージを指定する。&lt;/p&gt; &lt;p&gt;最後に、エラーメッセージを表示するためにインラインメッセージコンポーネントをテキストフィールドの下に配置してforプロパティで画面にあらかじめ置いておいたテキストフィールドのidをセットする。&lt;/p&gt; &lt;p&gt;ここまでの操作で画面とナビゲータウィンドウは下のような表示になる。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/04/JSFNetBeans_10554/image.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="104" alt="image" src="http://kazuki.wankuma.com/images/2008/04/JSFNetBeans_10554/image_thumb.png" width="192" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/04/JSFNetBeans_10554/image_3.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="image" src="http://kazuki.wankuma.com/images/2008/04/JSFNetBeans_10554/image_thumb_3.png" width="195" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;格コンポーネントのプロパティも下のようになっているはずだ。（変更した部分のみ抜粋）&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;textField1&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;required: true  &lt;li&gt;converter: longConverter1  &lt;li&gt;validator: longRangeValidator1  &lt;li&gt;requiredMessage: 必須入力項目です  &lt;li&gt;converterMessage: １～１０の数値を入力してください  &lt;li&gt;validatorMessage: １～１０の数値を入力してください&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;inlineMessage1&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;for: textField1&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;longRangeValidator1&lt;/p&gt; &lt;ul&gt; &lt;li&gt;maximum: 10&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;実行して動きを見てみよう。&lt;/p&gt; &lt;p&gt;何も入力しないでボタンを押すと下のようになる。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/04/JSFNetBeans_10554/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="92" alt="image" src="http://kazuki.wankuma.com/images/2008/04/JSFNetBeans_10554/image_thumb_4.png" width="178" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;１～１０の数字以外を入力すると下のようになる。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/04/JSFNetBeans_10554/image_5.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="101" alt="image" src="http://kazuki.wankuma.com/images/2008/04/JSFNetBeans_10554/image_thumb_5.png" width="219" border="0"&gt;&lt;/a&gt;これはConverterでエラーが起きている。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/04/JSFNetBeans_10554/image_6.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="96" alt="image" src="http://kazuki.wankuma.com/images/2008/04/JSFNetBeans_10554/image_thumb_6.png" width="212" border="0"&gt;&lt;/a&gt; これはValidatorでエラーが起きている。&lt;/p&gt; &lt;p&gt;ちゃんと１～１０の数字を入力すると、エラーは起きない。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/04/JSFNetBeans_10554/image_7.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="73" alt="image" src="http://kazuki.wankuma.com/images/2008/04/JSFNetBeans_10554/image_thumb_7.png" width="168" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;以上が、簡単だけどJSF1.2（IDEはNetBeans6.5のWebアプリでフレームワークにVisual Web JSFを使った場合)の入力値の検証方法でした。&lt;/p&gt; &lt;p&gt;# 最後まで書いてみて思った。数値だと1.5とか実数も含むんだっけ…まぁここでは整数ということで広い心で解釈してください。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/156568.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[NetBeans][Java]コードジェネレータを作ってみよう(NB5.5)</title><link>http://blogs.wankuma.com/kazuki/archive/2008/09/13/156482.aspx</link><pubDate>Sat, 13 Sep 2008 22:00:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/09/13/156482.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/156482.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/09/13/156482.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/156482.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/156482.aspx</trackback:ping><description>&lt;p&gt;前に、NetBeans6.1で無理やりコードジェネレータを作ったことがある。&lt;br&gt;&lt;a title="http://blogs.wankuma.com/kazuki/archive/2008/05/14/137729.aspx" href="http://blogs.wankuma.com/kazuki/archive/2008/05/14/137729.aspx"&gt;http://blogs.wankuma.com/kazuki/archive/2008/05/14/137729.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;これが、NetBens6.5では普通に作れるようになってるようだ。ということでやってみた。&lt;br&gt;最終的に、ハローワールド的なコードをサクッと挿入してくれるものが出来上がる予定で進めていく。&lt;/p&gt; &lt;p&gt;因みにNetBeans6.5 Dev 200809130201版で書いてるので正式版とは微妙に違うかもしれないです。&lt;/p&gt; &lt;h1&gt;プロジェクトの作成&lt;/h1&gt; &lt;p&gt;CodeGenSampleという名前でモジュールプロジェクトを作成する。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/NetBeansJavaNB5.5_13543/image.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="142" alt="image" src="http://kazuki.wankuma.com/images/2008/NetBeansJavaNB5.5_13543/image_thumb.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;h1&gt;作っていくよ！&lt;/h1&gt; &lt;p&gt;新規ファイルから、コードジェネレータを作る。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/NetBeansJavaNB5.5_13543/image_3.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="121" alt="image" src="http://kazuki.wankuma.com/images/2008/NetBeansJavaNB5.5_13543/image_thumb_3.png" width="497" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;MINEタイプは、Javaを想定してるのでx-javaにした。MINEタイプを指定できるってことはJava以外でも出来るってことなのかな？出来たらいいな～と思いながら完了ボタンをクリックした。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/NetBeansJavaNB5.5_13543/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="187" alt="image" src="http://kazuki.wankuma.com/images/2008/NetBeansJavaNB5.5_13543/image_thumb_4.png" width="508" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;そうすると、１つのjavaのファイルとlayer.xmlが作られる。Javaのコードは、前作った時とほとんど同じっぽい。&lt;br&gt;微妙な違いといえばinvokeメソッドにJTextComponentが渡ってきていたのに渡ってこなくなっている。どうやらコンストラクタで渡されてくるLookupから取得するようになってるらしい。&lt;/p&gt; &lt;p&gt; &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:16f7730d-d9aa-405e-8839-ef6dbde7c1b1" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="java"&gt;package com.wankuma.kazuki.netbeans.codegen;

import java.util.Collections;
import java.util.List;
import javax.swing.text.JTextComponent;
import org.netbeans.spi.editor.codegen.CodeGenerator;
import org.openide.util.Lookup;

public class HelloWorldCodeGenerator implements CodeGenerator {

    // コードを挿入するJTextComponent
    JTextComponent textComp;

    // コンストラクタでlookupしてJTextComponentを取得
    private HelloWorldCodeGenerator(Lookup context) {
        textComp = context.lookup(JTextComponent.class);
    }

    // このジェネレータを作成するためのファクトリ
    public static class Factory implements CodeGenerator.Factory {

        public List&amp;lt;? extends CodeGenerator&amp;gt; create(Lookup context) {
            return Collections.singletonList(new HelloWorldCodeGenerator(context));
        }
    }

    // Alt + Insertしたときの画面に表示する文字列
    public String getDisplayName() {
        return "Sample Generator";
    }

    public void invoke() {
        // ここにコード挿入の処理を書く
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;layer.xmlは、x-javaのコードジェネレータ部分にFactoryを登録するようになっている。&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:80164043-cbb3-4b4f-8522-2b6c70fc9f2c" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="xml"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;
&amp;lt;!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd"&amp;gt;
&amp;lt;filesystem&amp;gt;
    &amp;lt;folder name="Editors"&amp;gt;
        &amp;lt;folder name="text"&amp;gt;
            &amp;lt;folder name="x-java"&amp;gt;
                &amp;lt;folder name="CodeGenerators"&amp;gt;
                    &amp;lt;file name="com-wankuma-kazuki-netbeans-codegen-HelloWorldCodeGenerator$Factory.instance"/&amp;gt;
                &amp;lt;/folder&amp;gt;
            &amp;lt;/folder&amp;gt;
        &amp;lt;/folder&amp;gt;
    &amp;lt;/folder&amp;gt;
&amp;lt;/filesystem&amp;gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;じゃぁ、HelloWorldのコードを挿入する処理を書き足していこうと思う。HelloWorldCodeGeneratorクラスのinvokeメソッドを下のようにする。JTextComponentとDocumentクラスのAPIを使って文字列を挿入してるだけのシンプル実装にしてみた。&lt;br&gt;ついでに、getDisplayNameで返す文字列も変えてみた。&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:1e5ef708-8d5f-4512-b051-96ecacbb7edf" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="java"&gt;// Alt + Insertしたときの画面に表示する文字列
public String getDisplayName() {
    return "こんにちは世界";
}

public void invoke() {
    // ここにコード挿入の処理を書く
    int mark = textComp.getCaret().getMark();
    try {
        textComp.getDocument().insertString(mark, "System.out.println(\"こんにちは世界\");", null);
    } catch (BadLocationException ex) {
        Exceptions.printStackTrace(ex);
    }
}&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;さて、たったこれだけで完成だ。F6を押して実行してみよう。&lt;br&gt;NetBeansが起動してくるので、Javaアプリケーションのプロジェクトを適当に作ってコードエディタでAlt + Insertを押してみると、さっき作ったこんにちは世界が表示されていると思う。&lt;br&gt;選択すると、ちゃんとコードが挿入される。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/NetBeansJavaNB5.5_13543/image_5.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="131" alt="image" src="http://kazuki.wankuma.com/images/2008/NetBeansJavaNB5.5_13543/image_thumb_5.png" width="244" border="0"&gt;&lt;/a&gt; &lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/NetBeansJavaNB5.5_13543/image_6.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="78" alt="image" src="http://kazuki.wankuma.com/images/2008/NetBeansJavaNB5.5_13543/image_thumb_6.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;作るのが簡単になった。いいことだ。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/156482.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[JRuby][NetBeans]JavaのクラスをJRubyから使う</title><link>http://blogs.wankuma.com/kazuki/archive/2008/09/13/156481.aspx</link><pubDate>Sat, 13 Sep 2008 20:33:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/09/13/156481.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/156481.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/09/13/156481.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/156481.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/156481.aspx</trackback:ping><description>&lt;p&gt;NetBeans 6.5のbetaをほとんど使ってなかったので、使ってみた。何に使おうか悩んだんだけど、とりあえずJRubyをお試ししてみよう。ということでタイトルのJRubyでJavaのクラスを呼んでみるを試してみよう。&lt;/p&gt; &lt;p&gt;さて、呼ぶために必要な手順は２つだけだ。&lt;/p&gt; &lt;ol&gt; &lt;li&gt;require 'java'をする&lt;/li&gt; &lt;li&gt;include_class or include_packageをする&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;以上！簡単すぎる。ということでArrayListを使ってみた。&lt;/p&gt; &lt;p&gt; &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:6d1f3522-5cd0-4d8a-bd6c-198a4e08d867" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;# 前準備
require 'java'
include_class('java.util.List')

# ArrayListのインスタンスを作ってaddメソッドを使ってみる
list = java.util.ArrayList.new
list.add("こんにちは")
list.add("世界")

# eachでくるくる回すことも出来るのね
list.each do |item|
  puts item
end&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;実行すると、普通に結果が出る。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;こんにちは&lt;br&gt;世界&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;これでSwingを使ったりとかもやりたい放題だ。ただ、これじゃあまり面白くないので外部のjarファイルに定義されているJavaのクラスを呼ぶ方法を試してみた。因みにCLASSPATHを通すことはしない！
&lt;p&gt;まず、Javaのクラスライブラリのプロジェクトを作る。クラスはお試しなので１つだけ。文字列を返すだけにした。
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:08e9a053-ec12-4645-98c5-5c7439ba0712" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="java"&gt;package com.wankuma.kazuki.jruby.sample;

public class Greeter {
    public String greet(String name) {
        return "こんにちは！" + name + "さん！";
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;これをビルドしてgreeter.jarを作成する。それを、JRubyのプロジェクトのlibフォルダ（ソースフォルダ）にコピーする。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/JRubyNetBeansJavaJRuby_120B4/image.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="93" alt="image" src="http://kazuki.wankuma.com/images/2008/JRubyNetBeansJavaJRuby_120B4/image_thumb.png" width="212" border="0"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;さて、このjarファイルの中にあるクラスを使うための手順は以下の３つになる。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;require 'java'をする&lt;/li&gt;
&lt;li&gt;requrie 'jarファイル名'をする&lt;/li&gt;
&lt;li&gt;include_class or include_packageをする&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;なんとjarファイルをそのままrequire出来ちゃう。素敵だ。&lt;br&gt;ということでやってみた。&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:a01e0aa4-299f-4997-b338-ac7c3eacbabf" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="ruby"&gt;# 前準備
require 'java'
# jarファイルをrequireで読み込む
require 'greeter.jar'

# 後は普通に使えるようになる
include_class('com.wankuma.kazuki.jruby.sample.Greeter')
greeter = com.wankuma.kazuki.jruby.sample.Greeter.new
puts greeter.greet('田中　太郎')&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;実行してみると…&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;こんにちは！田中　太郎さん！&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;おお～ちゃんと使えてる。いいね。&lt;br&gt;POIとかも手軽に使えちゃいそう。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/156481.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[NetBeans]Visual Web JavaServer Facesで画面デザインする時によく使う方法</title><link>http://blogs.wankuma.com/kazuki/archive/2008/09/13/156453.aspx</link><pubDate>Sat, 13 Sep 2008 09:55:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/09/13/156453.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/156453.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/09/13/156453.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/156453.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/156453.aspx</trackback:ping><description>&lt;p&gt;NetBeansのVisual Web JSFは、JavaのWebアプリをぽとぺたで開発できる数少ない環境だと思う。&lt;br&gt;最近は、Eclipseもがんばってるみたいだけど、Eclipseのぽとぺたツールはイマイチな印象が強い（Visual Editorみたいに…）。&lt;/p&gt; &lt;p&gt;さて、Visual Web JSFでページを作るとデフォルトでグリッドレイアウト（絶対座標によるコンポーネントの配置）になってしまう。&lt;br&gt;ただし、この場合ちょっと困ったことがある。例を見てみよう。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/NetBeansVisualWebJavaServerFaces_8B48/image.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="103" alt="image" src="http://kazuki.wankuma.com/images/2008/NetBeansVisualWebJavaServerFaces_8B48/image_thumb.png" width="413" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;デザイナ上でTextFieldのWidthを指定して、その横にぴったりエラーメッセージ等を表示するInlineMessageを配置する。TextFieldを必須入力に設定をして実行してみよう。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/NetBeansVisualWebJavaServerFaces_8B48/image_3.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="123" alt="image" src="http://kazuki.wankuma.com/images/2008/NetBeansVisualWebJavaServerFaces_8B48/image_thumb_3.png" width="518" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;あぁ・・・TextFieldとInlineMessageがちょっとかぶってしまった。ということで、グリッドレイアウトだとデザイナ上と実際の表示がずれてしまって、どうにも悲しいことが頻発してしまう。&lt;br&gt;ということで、個人的にVisual Web JSFで画面を作るときにはグリッドパネルを多用して作っている。&lt;/p&gt; &lt;p&gt;同じ画面をグリッドパネルを使って作ると下のような感じになる。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/NetBeansVisualWebJavaServerFaces_8B48/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="112" alt="image" src="http://kazuki.wankuma.com/images/2008/NetBeansVisualWebJavaServerFaces_8B48/image_thumb_4.png" width="244" border="0"&gt;&lt;/a&gt; &lt;a href="http://kazuki.wankuma.com/images/2008/NetBeansVisualWebJavaServerFaces_8B48/image_5.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="116" alt="image" src="http://kazuki.wankuma.com/images/2008/NetBeansVisualWebJavaServerFaces_8B48/image_thumb_5.png" width="196" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;ここで、グリッドパネルのcolumnsプロパティを3にすると綺麗に横並びになる。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/NetBeansVisualWebJavaServerFaces_8B48/image_6.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="63" alt="image" src="http://kazuki.wankuma.com/images/2008/NetBeansVisualWebJavaServerFaces_8B48/image_thumb_6.png" width="402" border="0"&gt;&lt;/a&gt; &lt;br&gt;これをブラウザで表示させて動かしてみてもばっちり。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/NetBeansVisualWebJavaServerFaces_8B48/image_7.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="61" alt="image" src="http://kazuki.wankuma.com/images/2008/NetBeansVisualWebJavaServerFaces_8B48/image_thumb_7.png" width="498" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;LabelとTextFieldの間に、微妙な間を空けたいというときは、columnsを4にしてLabelとTextFieldの間に適当な幅のパネルを入れ込むことで実現できる。&lt;br&gt;こんな感じに。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/NetBeansVisualWebJavaServerFaces_8B48/image_8.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="70" alt="image" src="http://kazuki.wankuma.com/images/2008/NetBeansVisualWebJavaServerFaces_8B48/image_thumb_8.png" width="439" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;最終的に出来上がるHTML的には、ぜんぜん褒められたものにはならないのが悲しい所だけど、現状のVisual Web JSFで楽に作るなら、こういうのを駆使してやっていくのだと思う。&lt;br&gt;もっといい方法あるかな？ &lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/156453.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[Java][NetBeans]JavaFX試してみた</title><link>http://blogs.wankuma.com/kazuki/archive/2008/08/09/152406.aspx</link><pubDate>Sat, 09 Aug 2008 00:00:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/08/09/152406.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/152406.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/08/09/152406.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/152406.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/152406.aspx</trackback:ping><description>&lt;p&gt;JavaFX Preview SDKが出てるみたいなので、ちょびっと触ってみようと思う。&lt;br&gt;おもむろにNetBeans6.1を立ち上げてプラグインの更新をいじくってみた。そしたら、あった！！！&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/JavaNetBeansJavaFX_15146/image.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="72" alt="image" src="http://kazuki.wankuma.com/images/2008/JavaNetBeansJavaFX_15146/image_thumb.png" width="395" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;早速インストール。&lt;/p&gt; &lt;p&gt;プロジェクトを新規作成とかしてみたが、いまいち文法がわからず。&lt;br&gt;なんだか、CSSを拡張したみたいな書き方のような印象を受けるJavaFX。&lt;/p&gt; &lt;p&gt;AIRやWPF/Silverlightに比べると後発になるんだけど、強みはなんなんだろうか。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/152406.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[NetBeans][Java]GlassFish V3 TP2って早いらしいけど</title><link>http://blogs.wankuma.com/kazuki/archive/2008/07/09/148060.aspx</link><pubDate>Wed, 09 Jul 2008 00:29:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/07/09/148060.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/148060.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/07/09/148060.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/148060.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/148060.aspx</trackback:ping><description>&lt;p&gt;NetBeansのGlassFish V3 TP2のプラグインを入れてみた。&lt;br&gt;早速、サービスウィンドウからGlassFish V3 TP2を、何も配備してない状態で起動してみた。GlassFishのログに出てきたメッセージによると１秒かかってないらしい。確かに早い。&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;情報: Glassfish v3 started in 981 ms &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;何も配備してない状態だと、はやいのも仕方ないかなと思ったのでVisual Web JSFのプロジェクトを作って１つ配備してみた。&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;情報: Deployment of gf3vwp done is 5997 ms&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;大体６秒程度みたいだ。&lt;br&gt;この状態で停止して、また起動してみた。 &lt;blockquote&gt; &lt;p&gt;情報: Glassfish v3 started in 7265 ms&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;ふむ。まぁ大体こんなもんか。&lt;br&gt;確かに早い気がする。GlassFish V2は、何も配備してない状態で起動しただけで、GlassFish V3 TP2でアプリ配備してある状態で起動するものより遅く感じる。&lt;br&gt;気のせい？&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/148060.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[Java]アノテーションがいっぱい</title><link>http://blogs.wankuma.com/kazuki/archive/2008/07/03/147109.aspx</link><pubDate>Thu, 03 Jul 2008 17:44:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/07/03/147109.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/147109.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/07/03/147109.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/147109.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/147109.aspx</trackback:ping><description>&lt;P&gt;Java開発者なら耳慣れた（大体の人が体験したこともあるかな？）単語のXML地獄。&lt;BR&gt;設定ファイルのxmlが大量に出来すぎて泣きたくなるような状況のことをいう。&lt;/P&gt;
&lt;P&gt;でも、それも昔の話。&lt;BR&gt;最近は、XMLに記述するんじゃなくてアノテーション（.NETで言うところのアトリビュート）を使ってソース内にエレガントに記述するぜ！！っていうのがトレンド。&lt;/P&gt;
&lt;P&gt;普通に考えたらXMLに書いててしんどかったものを、アノテーションで書いてもしんどいよね。&lt;BR&gt;っていうことでannotation hellということが巷で起きてるらしい。&lt;/P&gt;
&lt;P&gt;この手の問題は、最近流行？のCoC（Convention over Configuration）かIDEによる手厚いサポートが無いとどうにもならないんじゃないかと思う。&lt;BR&gt;CoCの場合は、覚える規約がいっぱいすぎてソースは綺麗だけど、謎の法則満載に見えてしまうこともあるから、最終的には人間の脳みそを退化させるIDEに頑張ってもらわないと辛い。&lt;/P&gt;
&lt;P&gt;まぁ、どれもやり込んだ達人レベルになれば、目を閉じていてもXMLかけるぜ～！とかアノテーション書けるぜ！とか、ここはこういう規約だからこうだ！ってなるんだろうけどね。&lt;BR&gt;そこまで行くには時間が&amp;#8230;orz&lt;BR&gt;というか、そこに行くまでの補助輪としても充実したIDEのサポートが欲しいと思う今日この頃でした。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/147109.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[C#][Java]両方やってると迷います</title><link>http://blogs.wankuma.com/kazuki/archive/2008/06/29/146251.aspx</link><pubDate>Sun, 29 Jun 2008 23:54:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/06/29/146251.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/146251.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/06/29/146251.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/146251.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/146251.aspx</trackback:ping><description>&lt;p&gt;プロパティという概念は、C#には言語自体にある。JavaにはgetXxxxx,setXxxxxみたいなメソッドの組みでプロパティをあらわす。&lt;br&gt;言語仕様として、プロパティをサポートするかしてないかの違いはあるけれど、プロパティという概念は両言語にある。&lt;/p&gt; &lt;p&gt;んで、間違いやすいのがC#のプロパティ名は最初の一文字目が大文字。Javaは最初の一文字目は小文字。&lt;/p&gt; &lt;h1&gt;&lt;font color="#008080"&gt;間違えやすい。&lt;/font&gt;&lt;/h1&gt; &lt;p&gt;最近Javaをやってることが多かったから、思い出すためにWPFを書いてたら間違えてて5分くらい悩んだ。&lt;br&gt;悩ましい。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/146251.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[NetBeans][Java]Visual Web JavaServerFacesに思うところ</title><link>http://blogs.wankuma.com/kazuki/archive/2008/06/26/145796.aspx</link><pubDate>Thu, 26 Jun 2008 23:13:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/06/26/145796.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/145796.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/06/26/145796.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/145796.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/145796.aspx</trackback:ping><description>&lt;h1&gt;名前って大事&lt;/h1&gt; &lt;p&gt;強く思うことがある。&lt;br&gt;普通にプロジェクトを作ってできる雛形にある、ApplicationBean1やSessionBean1やRequestBean1の1っていらないよね？&lt;/p&gt; &lt;p&gt;個人的に使うときには、これらを全部消してから使ってる。&lt;br&gt;まだ、1がついてなければ、そのまま使ったかもしれないけど…。&lt;/p&gt; &lt;h1&gt;POJO・・・？&lt;/h1&gt; &lt;p&gt;Web画面に対応するJavaのクラスだから、ある程度Webに依存するのがあるのは仕方ないかな～…って思うけど、extends AbstractPageBeanとしてるのはいただけない。&lt;br&gt;initとかdestroyとかprerenderとかpreprocessとかが定義されてるのとかは別にいいけど、getFacesContext()とかで、思いっきりJSF無しに私生きていけないわっていうくらい依存してるのは好きじゃない。&lt;/p&gt; &lt;h1&gt;faces-config.xmlでDIできるよね？&lt;/h1&gt; &lt;p&gt;faces-config.xmlでmanaged-beanタグを使ってクラスをリクエストスコープやセッションスコープで登録できる。&lt;br&gt;AOPなどの、高性能DIコンテナみたいな機能はないけど、プロパティインジェクションができる。&lt;/p&gt; &lt;p&gt;なのに、何故か新規作成したページには、下のようなコードが組み込まれる。&lt;/p&gt; &lt;p&gt; &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:6a82d019-0ece-4396-b77e-72035efe748b" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="java"&gt;    /**
     * &amp;lt;p&amp;gt;Return a reference to the scoped data bean.&amp;lt;/p&amp;gt;
     *
     * @return reference to the scoped data bean
     */
    protected SessionBean1 getSessionBean1() {
        return (SessionBean1) getBean("SessionBean1");
    }

    /**
     * &amp;lt;p&amp;gt;Return a reference to the scoped data bean.&amp;lt;/p&amp;gt;
     *
     * @return reference to the scoped data bean
     */
    protected RequestBean1 getRequestBean1() {
        return (RequestBean1) getBean("RequestBean1");
    }&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;個人的には&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:c950f90b-9ac4-4b75-91b2-1e5b9fdcf33f" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="java"&gt;private SessionBean1 sessionBean1;
public SessionBean1 getSessionBean1() {
  return sessionBean1;
}
public void setSessionBean1(SessionBean1 sessionBean1) {
  this.sessionBean1 = sessionBean1;
}
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;みたいなプロパティだけ定義して、faces-config.xmlのほうでSessionBean1のインスタンスを設定するようにして欲しかった。&lt;/p&gt;
&lt;p&gt;というか簡単に、このManagedBeanのこのプロパティには、このManagedBeanのインスタンスを入れるよってGUIの上から定義できるようにしてくれたらハッピーだったのになぁ。&lt;/p&gt;
&lt;h1&gt;なんだかんだ言って&lt;/h1&gt;
&lt;p&gt;Visual Studioライクに開発できるので素敵だと思ってたりする今日この頃でした。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/145796.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>