Archive for the ‘Java’ Category
JDK 7 ならこう?
金曜日, 6 月 19th, 2009ちょっと勉強になるブログを発見した。
http://d.hatena.ne.jp/bleis-tift/20090616/1245134308
http://d.hatena.ne.jp/shin/20090618/p2
ついでに以前試した JDK 7 の walkFileTree を使ったチュートリアルをもとにゴニョゴニョしてみた。
特定ディレクトリ以下の列挙 ということなので見栄えは良くないが JDK 7 ならこんなのもありかな?
import java.io.IOException;
import java.nio.file.FileRef;
import java.nio.file.FileSystems;
import java.nio.file.FileVisitOption;
import java.nio.file.FileVisitResult;
import java.nio.file.FileVisitor;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.PathMatcher;
import java.nio.file.Paths;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.EnumSet;
public class Find {
public static class Finder implements FileVisitor {
private final PathMatcher matcher;
Finder(String pattern) {
matcher = FileSystems.getDefault().getPathMatcher("glob:" + pattern);
}
void find(Path file) {
if (matcher.matches(file.getName())) {
System.out.format("%s%n", file);
}
}
@Override
public FileVisitResult preVisitDirectory(FileRef dir) {
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult preVisitDirectoryFailed(FileRef dir, IOException exc) {
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFile(FileRef file, BasicFileAttributes attrs) {
find((Path) file);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(FileRef file, IOException exc) {
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult postVisitDirectory(FileRef dir, IOException exc) {
return FileVisitResult.CONTINUE;
}
}
public static void main(String[] args) {
Path searchDir = Paths.get("C:\\ターゲットディレクトリ");
String pattern = "*";
EnumSet<FileVisitOption> opts = EnumSet.of(FileVisitOption.FOLLOW_LINKS);
Finder finder = new Finder(pattern);
Files.walkFileTree(searchDir, opts, Integer.MAX_VALUE, finder);
}
}
基本的に間違っていたらごめんさない。
素人のやることだから笑ってゆるしてね(^^;
追記 List<String> result に格納するのがポイントだったのかな?
NB6.7 Dev で Java EE 6
月曜日, 6 月 1st, 2009JavaOne で何かしらの新技術がお披露目されるだろうと期待している私ですが待ちきれずに NetBeans で Java EE 6 って動くのか調べてみました。
といってもネットでググって調べただけです。
結果は・・・ ありました!
下記サイトです。
英語が駄目なのでだいたいこんな感じじゃないかと真似てみました。
一部コードは簡略化してありますが問題ないはずだと思います。
NetBeans 6.7 開発版に GlassFish V3 Preview を追加して Java EE 6 を試してみます。
まず GlassFish V3 Preview の zip 版をダウンロードしてインストールします。
NetBeans のサーバーに GlassFish V3 Preview を追加できるように GlassFish v3 Enabler というプラグインをインストールします。
インストールが完了したら [ サービス ] ウィンドウでサーバーを追加します。
GlassFish v3 が追加可能になってますので画面の指示にしたがって追加します。
GlassFish v3 が追加され利用可能となりました。
Java EE 6 の機能の一部ですが早速試してみます。
新規プロジェクトを作成します。
[ Java Web ] カテゴリを選択し、プロジェクトに [ Web アプリケーション ] を選び [ 次へ> ] ボタンをクリックします。
プロジェクトの設定を行います。
とりあえずここはデフォルト設定としました。
サーバーには GlassFish v3 を設定します。
Java EE バージョンには本当は Java EE 6 を選びたいところですが無いので Java EE 5 をドロップダウンリストから選択します。
フレームワークは利用しないので [ 完了 ] ボタンを押して終了します。
プロジェクトに POJO ベースの EJB を追加します。
[ 新規 ] → [ Java クラス... ] を選択します。
名前と場所を設定します。
HelloEJB クラスが自動生成されます。
このクラスに @Stateless アノテーションをつけます。
エラー表示が出てヒントが出ますのでヒントの指示どおり javax.ejb.Stateless をインポートします。
sayHello メソッドを作ります。
これで EJB の作成は終わりです。
次に、この EJB を呼び出すサーブレットを作成します。
[ 新規 ] → [ Java クラス... ] を選択します。
名前と場所の設定を下図のようにします。
自動生成された HelloServlet クラスに @WebServlet をつけます。
URL パターンも忘れずにつけます。
javax.servlet.annotation.WebServlet をインポートします。
HttpServlet を継承します。
EJB をインジェクトします。
ヒントのとおりインポートを修正してエラーを修正します。
doGet メソッドをオーバーライドします。
下記コードのように doGet メソッドを編集します。
これで単純にサーブレットから EJB を呼び出して http://localhost:8080/WebApplication1/hello のアドレスに ” こんにちわ(^^) ゆっち ” と表示されればOKです。
おっと、Java EE 6 では sun-web.xml ファイルと web.xml が不要となるんでしたね。
削除してしまいましょう。
なんか寂しい気がするけど気にしない。
それではプロジェクトを実行し、http://localhost:8080/WebApplication1/hello にアクセスしてみましょう。
動きましたね(^^)
Java EE 6 ってシンプルでいいですね。
アノテーションでなんでもありのようになったような気がしないでもないが大歓迎です(^^)
やっぱ、楽だね(^^)
火曜日, 5 月 12th, 2009NetBeans を使って JDK 7 build 58 を試してみました。
試すといっても私は素人ですし、英語もだめなのでこちらのサイトで紹介されているものをまんま試してみました。
その一部始終はこちらです。
NetBeans に JDK を一度登録したらプロジェクトのプロパティでいつでも選択できるようになります。
JavaDoc も登録して使用できます。
便利です!
プログラム実行時のコマンドライン引数も設定できますのでいちいち長いコマンド入力をしなくてすみます。
気軽に試せます。
また、エラーやヒントも対応してくれます。(たぶん・・・)
新しい物好きな人で楽なのがいい人向けの隠れた使い方でしょうか(^^;
Maven って C:\Program Files に入れちゃ駄目?
月曜日, 5 月 4th, 2009Maven を初めて使ってみた でプログラムの実行でトラブったけど Maven を置くところを C ドライブ直下にしたら問題なかった。
トラブル発生する C:\Program Files に置いた場合
C ドライブ直下に置いた場合
コンパイルオプションで「保存時に実行」カテゴリで「アプリケーションとテスト両方の実行」、「アプリケーションの実行のみ」を選択した場合はちゃんと実行されるようです。
なんでだろう?
そう言えばディレクトリ名にスペースがあると不具合がでることが何かであったような気がする。
これかな?
Maven の読み方 & ヘルプの検索ハイライト表示が・・・
日曜日, 4 月 26th, 2009NetBeans 6.7 では Maven が標準装備仕様となります。
Maven について少しずつ覚えていこうと思っているのですが重要な問題が発覚しました。
Maven の読み方です。
マーベン ?
メイベン ?
?????
何て読むのだろう?
そこで Kevin-san に活躍してもらうことにしました。
Java Web Start で Maven と喋ってくれるシンプルなプログラムを作ってみました。
Java 6 がインストールされていれば聞けると思います。(たぶん・・・)
私の耳では メイバン もしくは メイヴァン としか聞こえませんでした(^^;
とりあえず マーベン ではないようですね。
何気にアプレットでも久しぶりに作ってみようかと思い NetBeans のヘルプに「アプレット」と入力して検索したらこうなりました。(^^;
ハイライト表示がずれてるじゃん・・・
まぁ、いいか。 読めないことはないから。
でも、ちょっと驚きました。
Maven って便利かも?
木曜日, 4 月 16th, 2009昨日の Maven プロジェクトでもう少し遊んでみました。
pom.xml ファイルはこのようになってます。
ナビゲータの POM モデルで依存を確認すると junit 3.8.1 が test スコープで利用されているのが解ります。
pom.xml ファイルでも dependencies タグの子要素 dependency タグ内に記述されてます。
試しに Junit のバージョンを変更してみます。
プロジェクトツリーの[ テストライブラリ ]を右クリックでコンテキストメニューを表示
そして [ 依存リソースを追加... ] をクリックします。
依存リソースを追加ウィンドウが表示されます。
グループ ID を入力します。
途中まで入力すると補完機能が働きます。
アーティファクト ID とバージョンを入力し、スコープを設定します。
[ 了解 ] ボタンを押せばOK!
junit のバージョンが 4.5 に変更完了です(^^)
先ほどの依存リソースを追加ウィンドウで [ クエリー ] でも依存リソースを指定できるようです。
グループ ID やアーティファクトが不明な場合に有効かもしれませんね。
クエリーに junit と入力してみると(入力途中で検索リストが表示されます。)
検索結果から必要なものを選択し、[ 了解 ] ボタンをクリックすればOK!
以上、依存リソースを追加で遊んでみました。
あくまでも遊びということで操作方法が正しいか間違ってるかは解りません(^^;
ちなみに junit でテストを実行するとこのようになりました。
プログレスバーの長さが・・・・
前に使っていた NetBeans の開発バージョンでは確か表示欄いっぱいの長さだったのに。。。
Maven を初めて使ってみた
水曜日, 4 月 15th, 2009NetBeans 6.7 M3 をインストールして使うにあたって Maven が標準装備になったので使ってみた。
使うといっても初めからあるものを動かすだけなのでコードは一行も書きません。
それでも Maven をネット上の情報を斜め読みしたくらいの知識しかない私はみごとにつぼにはまりました(^^;
新規プロジェクトで [ Maven ] → [ Maven プロジェクト ] を選択します。
初めてなので Maven クイックスタート原型(1.0) を選択しました。
面倒なのでデフォルトのまま [ 完了 ]
うっ! Maven インストールしてないよ(^^;
このまま [ 了解 ] ボタンを押してもいいみたいだけど・・・
やっぱインストールしよっ!
Maven をインストール完了
パスが通っているか確認OK!
オプション設定をします。
これで Maven がインストールされてないって怒られないし余計な気遣いをさせることもなくなるはず。
で、先ほどの新規プロジェクトを同様に作ったら BUILD SUCCESSFUL と 表示された(^^)
ファイル構成は Maven そのものになってます。
プロジェクトツリーは解りやすいようにシンプルになってますね。
ソースコードはそれぞれこのようになってます。
失敗しないテストが素敵だったりしますね。
それではプロジェクトを実行してみます。
ガ━━(= ̄□ ̄=)━━ン!!
やっぱりつぼにはまった!
何でだろうと思いプロジェクトのプロパティを調べると
コンパイルカテゴリの設定で [ テストの実行のみ ] がデフォルトで設定されてました。
これを [ アプリケーションとテスト両方の実行 ] に変更します。
おお! 動いた!!
初めての Maven ちょっと躓いたけど無事にビルド、実行できました。
以上、Maven の凄いテクノロジーを一切使わない初体験でした。
凄いテクノロジーとはプロジェクトで使用するライブラリなどをネットワーク越しに自動ダウンロードしたり、依存関係を自動解決してくれたりですよね。
また、推移的依存関係も自動解決してくれるし、スコープによって細かな依存関係を設定できたりするようです。
まだまだ凄いところはあるようですが Maven 触りだしたばかりの私には良く解りません。
NetBeans6.7 の JUnit を試す
木曜日, 4 月 2nd, 2009いつの間にか日本語に訳されていたチュートリアル NetBeans IDE での Junit テストの記述 を この前ビルドした NetBeans6.7 で試してみました。
JUnit4 だけですけど。。
とりあえず綺麗に動きました。
以前、「へびのぬけがら」のTakakura-san が日本語を正確に判定できてないとレポートされていましたので試してみました。
まず、失敗はちゃんと判定されてるようです。
判定はあってるけど差異がはっきりしてませんね。
TestResults ウィンドウと併用すればわかるけど・・・ これってバグなのかなぁ?それとも仕様?
次にテストが成功するようにコードを修正
そして、ドキドキしながら Run Again をポチッと押します。
テストは成功!
NetBeans 6.5 と比べると華やかになってます。
これでテスト成功、失敗の時に音が鳴ると楽しいかなと思ったりします。
JDK7リリース予定
水曜日, 4 月 1st, 2009JDK7 のリリース予定が発表されました。
NetBeans 7 と同時リリースだそうです。
これにより Java の EoD が飛躍的に向上するそうです。
注目のクロージャはジェームス・ゴスリン氏が強くプッシュしていたが JDK7 には間に合わないそうだ。
遅れた理由はクロージャが利用するコードがキモいとの意見が大半をしめ、改善策を模索中だそうだ。
確かに => とか ==> は無いだろうと思う。
しかし、キモいのを我慢してでも新しい物には興味があるのが本音だろう。
そこで NetBeans 7 にクロージャのライブラリが先行投資され利用可能となる。(^^)
あまり評判が良くなかった NIO は NIO2 となり非常に便利な機能を備えて JDK7 に搭載されます。
すでに JDK7 の最新ビルド build52 に統合されてます。
Garbage-First GC は絶対にメモリーリークを許さない凶悪なガーベッジコレクタです。
Sun 社長兼 CEO のジョナサン・ジョアルツ氏はポニーテールを揺らしながら JDK7 & NetBeans 7 を Windows 7 上で動かせばフィーバーだと一部の日本人にしか解らないコメントをした。