Archive for the ‘NetBeans’ Category

NetBeans 6.9 をインストールしてみた

日曜日, 6 月 20th, 2010

先日リリースされた NetBeans 6.9 をインストールしてみた。

せっかくだから Java チュートリアルのサンプルを実行してみた。

試したチュートリアルは Watching a Directory for Changes です。

以下の環境で試したのですがちゃんと実行されました。

3

しかし、バーチャルコンピュータ上で動かしているせいか実行結果が・・・

そして、出力ウィンドウのフォントを大きくしようとしたところポップアップメニューがつぶれてました。

これはゲスト OS がサポート外なので NetBeans の問題ではないでしょう。

実機での確認はできないのでそういうことにします。(ヲヒ

2

で、同じプログラムを Windows Vist で実行すると

4

全然 OK です!

ちなみにルートディレクトリに適当にディレクトリを作成したりリネームしたり削除したりしてます。

今回のバージョンアップでは日本人にとっては大きな問題であった IME 変換時の勝手なスクロールは直ってます。

そして何より私のような未熟者にとってはヒントが増えてさらに賢くなったエディタは大歓迎です(^^)

JavaEE のほうでは CDI がサポートされましたね。

たしか WebBeans とか言われてたものですよね。

新技術への対応の早さはさすがです。

やっぱり NetBeans 最高です!

Hatena タグ: ,

Sony Ericcson XPERIA その2

月曜日, 4 月 5th, 2010

NetBeans でもプログラムは動くことを購入時に再確認したので次は実機で動かしたくなりました。

NetBeans のエミュレータでは下にある三つのボタンがなくて右側にキーボードと十字方向のバタンがあります(><)

eclipse だとちゃんと表示されるのが悔しいです!

とりあえず目的は実機に何かインストール(PC から)することなので気にしないことにします。(ヲヒ

すっかり Android のプログラミングは忘れてしまっている(覚えるほど触ってない)ので日経ソフトウェア4月号のサンプルを NetBeans で構築しただけのものです。

注意が必要なのは SDK の最低バージョン指定を GUI で設定する項目がないので Android Manifest.xml ファイルに手書きすることになります。

あとは特に注意が必要な項目は見当たりませんでした。

Android のプラグインも以前の問題があったものと比べると良くなってきてます。

開発者の皆様に感謝です!

雑誌の記事の通り(私の好みにより一部変更しました。)プロジェクトをビルドしたらちゃんと(当然か)動きました。(^^)

1

さて、ここからが問題です。

どうやって実機にこのアプリをインストールするか?

Apps Installer を Android マーケットから頂いてきてこれを使ってインストールしました。

携帯と PC を USB 接続して SD カードに dist ディレクトリに作成された apk ファイルをコピーします。

コピーが完了したら PC から携帯を接続解除し、 Apps Installer を起動してインストールするだけ。

ただし、携帯のセキュリティ設定がマーケット以外からのアプリのインストールを禁止しているので自己責任でセキュリティを解除する必要があります。

また、今回のアプリでは音声合成用の音声データのインストールも必要となります。

とりあえず、実機へのアプリのインストールという目的は達成しました。(^^)

バリバリの Java プログラマの人なら良いおもちゃになるんでしょうね。

えっ?お仕事以外でコード書きたくないって(@@)

Hatena タグ: ,

型推論が使える?

水曜日, 3 月 31st, 2010

NetBeans 6.9 Dev で JDK7 で採用される機能の一つを試してみました。

JDK 6 では下記のようなコードはエラーとなります。

0

しかし、JDK 7 では OK なんですねぇ~

1

とりあえず、NetBeans でエラーが出なくて実行もできたことを確認!

Hatena タグ: ,

なんじゃ、こりゃ!

土曜日, 3 月 20th, 2010

NetBeans 6.9 Dev で表示メニューのアイテムに見覚えがない項目が・・・

なんじゃ、こりゃ!(by 松田優作

1

これって日本語 Zip ファイルあてても英語のままってことは新しい機能なのかなと思って

NewAndNoteworthy69m1 を見てみたが見当たらなかった。

英語のサイトなので私が見落としたのかもしれないが何だろう?

Hatena タグ:

JColorChooser が豪華になってる

金曜日, 2 月 26th, 2010

JDK7 では JColorChooser が豪華になってる。

NetBeans 6.9 Dev 版で JColorChooser を GUI ビルダーにて貼り付けると変化に気づかないけど実行すると

1

なんと!

2

3

豪華になってますね(^^)

なんで今頃このような機能が追加されたのかは謎です。

 

[ 追記 ] 2010/03/08

NetBeans を JDK 7 で動かすようにしたら GUI ビルダーでも豪華になった JColorChooser で表示されました。

Hatena タグ: ,,

deepEquals

土曜日, 2 月 6th, 2010

今日、ネットサーフィン(死語)してて、面白そうな記事を見つけたのでさっそく試してみました。

ネタもとは英語だったので詳しく理解することはできなかった。

コードの切れ端と読めない英語をながめてみました。

私はこれを見てすぐに自信を持って答えることはできませんでした(><)

まぁ・・・永遠の初心者ですからしかたないです。

けど気になるので下記のようなシンプルなコードを書いて実行してみました。

24行目からの if 文の処理結果はよく知られた結果となることは間違いないでしょう。

29行目からの if 文の処理結果が気になります。

1

実行結果だけ確認するのもあれなので、NetBeans を使ってるのだからウォッチポイントを設定してデバッグ実行してみました。

変数 a,b,c,d をウォッチポイントとして違いを確認してみました。

2

変数 c,d は一段階深い所に Object 型の配列の中に Object 型配列の変数が格納され一段階深くなってます。

素人考えでは一段階深くなったところで同じじゃないの?って思ってしまいます。

3

そこで29行目にブレークポイントを仕掛けてステップ実行させてみました。

下のコードの2392行目で引っかかるようですね。

4

念のために実行結果はこうなります。

5

たぶん Java プログラマなら知ってて当然ってことでしょうがこんなこと考えたことがなかったので新鮮でした。

NetBeans の優秀なデバッガをこんなことに使う私って・・・幸せ者だ(^^;

Hatena タグ: ,

JDK 7 の Switch 文を試してみる

火曜日, 2 月 2nd, 2010

JDK 7 で変更のはいる Switch 文を試してみました。

JDK 6 ではエラーとなります。

1

ターゲット JDK を JDK 7 に変更します。

 2

プロジェクトをビルドします。

なにやらビルドエラーが出てますが NetBeans 6.9 の Dev 版を使っているので気にしない(いいのか!

3

プロジェクトを実行します。

ちゃんと String 型で Switch 文の制御ができてますね(^^)

素晴らしい!!

4

Hatena タグ: ,,

Play!

月曜日, 1 月 25th, 2010

CodeZine の記事で Java で動く軽量フレームワーク Play! が紹介されていた。

なにげに見てたら NetBeans プロジェクトとして取り込むことができるとあった。

Play! がどういったものかは CodeZine の記事をご覧いただくとして、記事をもとに NetBeans で動かしてみた。

まず、コマンドプロンプトで Web アプリケーションを作成します。

11

次に NetBeans プロジェクトとして取り込めるようにします。

13

これで NetBeans プロジェクトとして取り込めるはず。 たぶん・・・

では、取り込んでみます。

14

プロジェクト構成は下図のようになってます。

test パッケージがエラーとなってます。

未使用のインポートがあるようです。

何故かは調べてないので解りませんが無視するか、指示にしたがって未使用のインポートを削除でとりあえずエラーはなくなります。

16

プロジェクトが実行できるか確認します。

無事にプログラムが実行されました。

17

ブラウザで確認します。

18

ついでだから記事のとおりプログラムを変更してみました。

いつもの NetBeans での使い勝手の良さがこれでも一緒ですね。

19 20

で、ちょっとだけ触ってみただけなのですが・・・

NetBeans プロジェクトとして取り込んで何が便利なのかな?って考えてみた。

賢いエディタ機能が使える!

これくらいしか思い浮かばない(><)

Hatena タグ: ,

ForkJoin を NetBeans 6.8 で試してみた

月曜日, 12 月 21st, 2009

12月の初旬にリリースされた NetBeans 6.8 を使って JDK 7 に組み入れられる予定の ForkJoin フレームワークを試してみました。

Fork Jion フレームワークの情報は日本語でも少しありましたのでネット上の情報を元に英語の API ドキュメントをちらちら見ながら適当にプログラムを組んでみました。

素人の私がそういう状況で作ったので間違いがあるかもしれないの見つけられた方は優しく解りやすく間違いを正してくれることを望みます。(^^;

まず、JDK 7 build 77 をインストールして NetBeans 6.8 でそれを使えるようにします。(現在は build 78 が最新です)

Java プラットフォームマネージャーにて JDK 7 を登録します。

メニューバーの [ ツール ] から [ Java プラットフォーム ] をクリックして表示される画面の指示に従って入力していきます。

1

プラットフォーム名は自分の好みでつけてかまいません。

2

以上で NetBeans 6.8 でターゲット JDK を JDK 7 build77 にすることが簡単にできます。

新規プロジェクトを作成したらデフォルトがターゲット JDK と異なってる場合はプロジェクトのプロパティで Java プラットフォームを変更できます。

先ほど登録した JDK 7 build 77 が利用可能になってますのでそれを選択します。

3

また、下のほうに「ソース / バイナリ形式」 に JDK 7 が選択可能となりますのでそれを選択します。

4

以上のようにして下図のようなプロジェクト構成のサンプルプログラムを作ってみました。

分割統治型アルゴリズムで有名なマージソートです。

ちなみに JDK 6 ではこのマージソートアルゴリズムが使われているらしいです。

この JDK 7 build 77 からは java.util.Arraysクラスの定義されている基本データ型の配列のソートは、Dual Pivot Quicksortを呼び出すように書き換えられています。

参照型の配列の場合には、TimSortですので、Java 7ではソートのアルゴリズムが新しくなります。

と ForkJoin フレームワークの情報を探していたときにみつけました。(余計な情報><

5

RandomNumber2009.RandomNumber.java 

package RandomNumber2009;

import java.util.Random;

public class RandomNumber {

    private final int[] number = new int[300000];

    public RandomNumber() {
        Random generator = new Random(1982);
        for (int i = 0; i < number.length; i++) {
            number[i] = generator.nextInt(300000);
        }
    }

    public int[] getNumber() {
        return number;
    }
}
 
forkjointest.MergeSort.java

package forkjointest;

import java.util.Arrays;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.RecursiveAction;

public class MergeSort {

    public int[] sort(int[] number) {
        int nThreads = Runtime.getRuntime().availableProcessors();
        ForkJoinPool pool = new ForkJoinPool(nThreads);
        SortImpl sort = new SortImpl(number);
        pool.invoke(sort);
        return sort.result;
    }

    private class SortImpl extends RecursiveAction {

        private int[] number;
        private int[] result;

        SortImpl(int[] number) {
            this.number = number;
        }

        @Override
        protected void compute() {
            if ((number.length < 5)) {
                result = Arrays.copyOf(number, number.length);
                Arrays.sort(result, 0, result.length);
            } else {
                int midpoint = number.length / 2;
                int[] left = Arrays.copyOfRange(number, 0, midpoint);
                int[] right = Arrays.copyOfRange(number, midpoint, number.length);
                SortImpl task1 = new SortImpl(left);
                SortImpl task2 = new SortImpl(right);
                invokeAll(task1, task2);
                left = task1.result;
                right = task2.result;
                merge(left, right, number);
                result = number;
            }
        }

        private void merge(int[] left, int[] right, int[] number) {
            int i = 0, j = 0;
            while (i < left.length || j < right.length) {
                if (j >= right.length || (i < left.length && left[i] < right[j])) {
                    number[i + j] = left[i];
                    i++;
                } else {
                    number[i + j] = right[j];
                    j++;
                }
            }
        }
    }
}
forkjointest.Main.java

package forkjointest;

import RandomNumber2009.RandomNumber;
import java.util.Arrays;

public class Main {

    public static void main(String[] args) {
        RandomNumber test = new RandomNumber();
        int[] beforeNumber = test.getNumber();
        System.out.println("Before");
        System.out.println(Arrays.toString(beforeNumber));
        MergeSort ms = new MergeSort();
        int[] result = ms.sort(beforeNumber);
        System.out.println("After");
        System.out.println(Arrays.toString(result));
    }
}
このプロジェクトを構築し、実行させると無事に動きました。
さて、ここで本当に並列化しているか確認してみます。
プロファイラを接続して ForkJoinPool のワーカースレッドが起動しているか?
プロファイラによると起動されてますね。
実行中から待機状態になり新たに4っつのワーカースレッドがありますね。
ちなみに CPU コア数は 8個なので8つのワーカースレッドが作成されます。
実行が終了し待機状態になってなんで新たにスレッドが4っつ起動されているのかは謎です。(こういう仕様なのか?)
7 
では、生成されるワーカースレッド数を変更してみます。
        int nThreads = Runtime.getRuntime().availableProcessors();
        nThreads = 1;
        ForkJoinPool pool = new ForkJoinPool(nThreads);
このようにワーカースレッド数を1に変更してみました。
8 
次に 2に変更
9 
4の場合
10 
ちゃんと指定した数のワーカースレッドが生成されるようですね。
ついでにプロファイラの CPU でアプリケーションのパフォーマンスを調べてみようとしたところ
見れなかった(><)
ヒープを大きくしても変わらず・・・ なんでだろう?
12 
JDK 7 に標準搭載予定の ForkJoin フレームワークについての情報はネット上にも少し流れていますので興味のあるかたはググってみてくださいね。
大切なことを忘れてました。
ノーマルのマージソートとのパフォーマンスの比較はまだしていませんので気になる方は比較してみてください。(爆
download-netbeans-125x125 
Hatena タグ: ,
 

Eclipselink JPA2.0 動かない(><)

日曜日, 7 月 26th, 2009
javax.servlet.ServletException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.0.0.v20090713-r4647): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Error in allocating a connection. Cause: Class name is wrong or classpath is not set for : com.mysql.jdbc.jdbc2.optional.MysqlDataSource
Error Code: 0
エラーだなんて・・・まぁ、開発版を試してみただけなのでこれもありか・・・
Java EE 5 プラットフォームでの Java Persistence
NetBeans 6.8 Dev 版を使って上記サイトのチュートリアルをさらに簡単にして(手抜きとも言う) Java EE 6 で試したけどダメでした。

Product Version: NetBeans IDE Dev (Build 200907241401)

Java: 1.6.0_14; Java HotSpot(TM) 64-Bit Server VM 14.0-b16

System: Windows Vista version 6.0 running on amd64; MS932; ja_JP (nb)

Userdir: C:\Users\Yucchi\.netbeans\dev

何も動かないのは悔しいので persistence.xml ファイルをやけくそで下記のようにしてやったら動いた(ように見える)

<?xml version="1.0" encoding="UTF-8"?>

<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">

    <persistence-unit name="WebApplication5PU" transaction-type="JTA">

        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>

        <jta-data-source>jdbc/ee6p</jta-data-source>

        <exclude-unlisted-classes>false</exclude-unlisted-classes>

        <properties>

            <property name="eclipselink.ddl-generation" value="create-tables"/>

        </properties>

    </persistence-unit>

</persistence>

————–  変更後 ————-

<?xml version="1.0" encoding="UTF-8"?>

<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">

  <persistence-unit name="WebApplication5PU" transaction-type="JTA">

    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>

    <exclude-unlisted-classes>false</exclude-unlisted-classes>

    <properties>

      <property name="eclipselink.ddl-generation" value="create-tables"/>

    </properties>

  </persistence-unit>

</persistence>

PU のバージョンを変えただけだったりします。 (^^;

1

2

3

4

秋に Java EE 6 がリリースされる予定なのでそれにあわせて NetBeans 6.8 もリリースされるんだろうか?

6.8 というバージョンナンバーやこういうのを見ると一番乗りで Java EE 6 対応の統合開発環境としてリリースされるだろうと期待してしまう。

22 21

ちなみに起動直後やプロジェクトを新規作成した時にちょくちょくこの吹き出しメッセージが出る。

11

これって・・・ もっと高性能な PC を使ってねって言われてるような気がするw

[ 追記 ] お魚に JDBC 食べさせたら問題なく動きました。

クラス名の間違いでもなく、クラスパスがとおってないんでもなく JDBC ドライバがなかった・・・

てっきり標準装備だと思ってました・・・

Hatena タグ: ,