木曜日 12 26, 2013

Java ME Embedded 8を使ったM2Mアプリケーション開発 (3/3)

Java ME Embedded 8を使ったM2Mアプリケーション開発(2/3)の続きです。今回はRaspberry PiとNetBeansを使って、リモートデバッグを行う方法をご紹介します。NetBeansでステップ実行しながら、Raspberry Pi上で動くJavaアプリの様子をみることが可能となります。 ホストPCにはNetBeans 8.0, Java ME SDK 8, Java ME SDK 8 Plugins for NetBeans 8がインストールされており、Raspberry PiにはJava ME Embedded 8がインストールされていることが前提となります。 詳細は(1/3)(2/3)を参照してください。

1. Raspberry Piにログインして、Java ME Embedded 8のbinディレクトリ以下の、usertest.shを起動します。

>sudo ./usertest.sh

2. Java ME SDK 8のデバイスマネージャにRaspberry Piを登録します。

デバイスマネージャの起動は、Java ME SDK 8がインストールされたWindows PCにておこないます。 ”SDKのインストールフォルダ”\bin\device-manager.exeをダブルクリックすると下記の画面が表示されます。

 Windowsのタスクバーからもデバイスマネージャを開くことも可能です。

デバイスマネージャの追加ボタンからRaspberry PiのIPアドレスを登録すれば終わりです。

3. NetBeansでリモートデバッグを行うための設定を行います。

1. Java ME Embedded 8を使ったM2Mアプリケーション開発 (1/3)で作成したサンプルアプリ(ネットワークのデモ (MEEP))のプロジェクトを右クリックし、プロパティ画面を開きます。

2. カテゴリプラットフォームを選択し、以下のように設定を行ってください。

    Java MEプラットフォーム: Oracle Java (TM) Platform Micro edition SDK 8.0

    デバイス: EmbeddedExternalDevice1 


3. ソースコードの任意の場所にブレークポイントを設定し、プロジェクトのデバッグを行います。デバッグ実行はCtrl + F5もしくは、デバッグメニューより開始することができます。デバッグ実行を開始すると、Raspberry Piにアプリが自動的にインストールされ、通常のデスクトップでのデバッグと同じ感覚で開発を行うことが可能になります。

 こちら→http://docs.oracle.com/javame/8.0/get-started-rpi/debugging.htm#BABCIJHAにも詳細を記載していますので、ご参照ください。

Java ME Embedded 8を使ったM2Mアプリケーション開発 (2/3)

Java ME Embedded 8を使ったM2Mアプリケーション開発 (1/3)で作成したサンプルアプリを、Raspberry Pi(Model B)上で動かす手順をご紹介したいと思います。

Raspberry Piのセットアップ

手順はこちらを参照 → Raspberry Pi で JavaFX - かんたん3ステップ

PuTTY(ターミナルエミュレータ)のダウンロード

PuTTYはコマンドラインを使ってアプリのインストール等(詳細は後述)をホストPCから行う場合に使います。またscpやsftpでRaspberry Piにファイルを転送する場合にも使うことが可能です。

ダウンロードはこちら → http://www.putty.org/

Java ME Embedded 8のダウンロード

ダウンロードリンクhttp://www.oracle.com/technetwork/java/embedded/downloads/javame/index.htmlから、oracle-jmee-8-0-rr-raspberrypi-linux-bin.zipというファイルがダウンロードされますが、解凍すると以下のディレクトが含まれています。

  •  /appdb - Javaプラットフォームが内部で使用するためのディレクトリです。
  •  /bin - Javaの実行ファイルや設定ファイル等が格納されています。
  •  /legal - Legal関連の文書が格納されています。
  •  /lib - Raspberry Pi上でアプリ(IMlets)をコンパイルする時に使用されます。
  • /util - ホストPC(Windows)のコンソールからリモートデバッグを行う際に使用します。

Raspberry PiへJava ME Embedded 8を転送

上記でダウンロードしたファイル(oracle-jmee-8-0-rr-raspberrypi-linux-bin.zip)をRaspberry Piに転送します。転送はsftpもしくはscpで行います。Windowsの場合PuTTYを使って送信することも可能です。ターミナルでRaspberry Piにログインし、転送したファイルをお好みの場所へ展開後、appdbとbinディレクトリのアクセス権を変更します。

>chmod -R 755 appdb bin

HTTP Proxyの設定(オプション)

もしアプリがRaspberry PiからHTTP接続を行い、proxyサーバを必要とする場合、bin/jwc_properties.iniファイルにproxyサーバの情報を登録します。

com.sun.midp.io.http.proxy.host = proxy.mycompany.com
com.sun.midp.io.http.proxy.port = 80

Raspberry Piへサンプルアプリを転送

Java ME Embedded 8を使ったM2Mアプリケーション開発(1/3)で開発したサンプルアプリ(NetworkDemo.jar)をPuTTY等を使って、Raspberry Piへ転送します。NetworkDemo.jarはNetBeansのプロジェクトフォルダの下のdistフォルダ以下に保存されています。ここでは、転送したJarファイルをJava ME Embedded 8のbinディレクトリの下にコピーします。

アプリの起動 

コマンドラインを使った起動 

ターミナルエミュレータからRaspberry Piに入り、Java ME Embedded 8のbinディレクトリまで移動します。binディレクトリには下記のシェルが含まれています。コマンドのサンプルもその下に書いておきます。


listMidlets.sh [SUITE_ID or NAME]     --- インストール済みのアプリとステータス等を表示します。
installMidlet.sh <URL> [<URL label>] --- アプリをインストールします。JARファイルを引数に指定します。
removeMidlet.sh <SUITE_ID>             --- インストール済みのアプリをアンインストールします。
sudo runSuite.sh <SUITE_ID or NAME> [IMLET_ID or classname] --- 指定されたアプリを起動します。アプリの起動後は標準出力へLogが出力されます。


インストール

pi@raspberrypi ~/pi/bin $ sudo ./installMidlet.sh NetworkDemo.jar

Java is starting. Press Ctrl+C to exit

The suite was successfully installed, ID: 2

インストールが成功すると、上記の”The suite was successfully installed”が表示され、IDが自動的に割り当てられます。IDはコンソールに表示されるメッセージにて確認することが出来ます。

注)インストール時に、下記のメッセージが 表示されることがあります。これはホストPC上にインストールされたデバイスマネージャ(Java ME SDK 8の一部です)に、デバイスが登録されていない場合に表示されるメッセージです。 動作上問題はありませんが、デバイスマネージャにRaspberry Piを登録することにより、メッセージは表示されなくなります。

[ERROR][AMS] iso=1:SEnding the notification: com.oracle.midp.proxy.InstallCommand@7114ea81. FAILED,proxy is disconnected

起動

pi@raspberrypi ~/pi/bin $sudo ./runStuite.sh 2

引数には、アプリの名称もしくは、インストール時に割り当てられたIDを指定します。また起動後のアプリのログ等は標準出力へ表示されます。アプリを終了する場合はCtrl + Cで行ってください。

アンインストール

pi@raspberrypi ~/pi/bin $ ./removeMidlet.sh 2

引数には、インストール時に割り当てられたIDを指定します。 

インストール済みアプリの確認

pi@raspberrypi ~/pi/bin $ ./listMidlets.sh

Java is starting. Press Ctrl-C to exit

Suite: 2

    Name: NetworkDemo

    Version: 1.0

    Vendor: Oracle

    MIDlets:

        Socket Demo: socket.SocketMidlet


今回は、 いち早くRaspberry Pi上にてアプリを動作させる方法について記載を行いました。元文書 → http://docs.oracle.com/javame/8.0/get-started-rpi/debugging.htm#BABCIJHAを見ていただくと、WindowsのホストPCからコマンドラインでアプリを起動させる方法も紹介しております(Starting the Developer Agent Program on the Desktopの章)。 必要に応じて、上記リンクをご参照いただければと思います。


Java ME Embedded 8を使ったM2Mアプリケーション開発 (1/3)

Java ME Embedded 8を使ったM2Mアプリケーションの開発手順をご紹介したいと思います。今回は、NetBeans 8.0を使い、エミュレータ上で簡単なサンプルアプリを動作するところまで行いたいと思います。

また、Java ME Embedded 8は、センサーデバイスや通信モジュール等の小型デバイスをターゲットとしたJavaの実行環境で、従来のもの(Java ME Embedded 3.x)と比較すると以下の特徴を備えており、開発効率がさらに上がっています。

  • 言語仕様がJava SE Embedded 8と同期しており、APIもSE 8のサブセット版を実装していることから、SEとのソースコードの共有化が可能
  • New IO, コレクションフレームワーク等、SEで利用されている便利なAPIを追加
  • モバイル通信系のAPIの拡張。また従来通りGPIO, I2C等の低レベルH/WアクセスAPIも実装


開発用PCへのJava SEのインストール

開発用PCはWindows 7を想定しています。また開発用PCにはJava SE 7もしくは8の最新版をインストールしてください。

Java ME SDK 8のインストール

下記のリンクからJava ME SDK 8をダウンロードします。ダウンロードした.exeファイルをダブルクリックし、インストールを行います。インストール先は任意の場所を選んでください。

http://www.oracle.com/technetwork/java/javame/javamobile/download/sdk/index.html

NetBeans 8.0のインストール

こちら → https://netbeans.org/downloads/から、 ”JavaSE/EE/すべて”のいずれかをダウンロードしてください。

またインストール手順はこちらです。 → https://netbeans.org/community/releases/80/install_ja.html

Java ME SDK 8 Plugins for NetBeans 8のインストール

1. NetBeans向けのPluginを下記のリンクからダウンロードし、任意の場所で解凍します。

http://www.oracle.com/technetwork/java/javame/javamobile/download/sdk/index.html

2. NetBeansを起動し、ツール -> プラグインメニューを開きます。

3. 古いバージョンのPluginがインストールされている場合はアンインストールを行います。 新規インストールの場合はスキップしてください。 以下はアンインストール手順となります。 

  • インストール済タブの詳細の表示にチェックを入れ、インストール済みPluginの一覧を表示します。
  • Java ME SDK ToolsJava ME SDK Demosがあれば、チェックを入れ、アンインストールボタンをクリックします。アンインストール後はNetBeansを再起動してください。

4. NetBeans再起動後、ツール -> プラグインメニューを開き、ダウンロード済タブを開きます。

5.  プラグインの追加ボタンを選択し、1でダウンロードしたPluginを解凍したフォルダを参照します。.nbmファイルをすべて選択し、開くボタンを押します。

6. ダウンロード済タブを開くと、 ダウンロードしたPlugin一覧が表示されるので、 それらをすべて選択した後、インストールボタンを押します。

7. Pluginのインストールが開始されます。 ライセンス契約条件に同意し、インストールを完了させてください。インストール完了後は、NetBeansを再起動します。

8. 再びツール -> プラグインメニューを開き、インストール済タブを開きます。Java MEがインストールされており、アクティブとなっていればインストールが正常にできています。

Java ME Embedded 8の開発用プラットフォームのインストール

1. NetBeansを起動し、ツール -> Javaプラットフォームを選択します。

2. プラットフォームの追加ボタンを押下します。

3. Javaプラットフォームの追加画面が開くので、Java ME CLDCプラットフォーム・エミュレータを選び、次>ボタンを押下します。

4. プラットフォームを検索するディレクトリを選択してください画面にて、上記手順の”Java ME SDK 8のインストール"で行った、SDKのインストールディレクトリを選択します。

5. ME SDK 8のプラットフォームが正常に選択されたことを確認し次 >ボタンをクリックし、プラットフォームが問題なく検出できれば、終了ボタンを押して追加を終了します。

サンプルアプリの起動

上記に引き続いて、 新規プロジェクトを作成しサンプルアプリを作ります。

1.  ファイル -> 新規プロジェクトを選ぶと、新規プロジェクトの作成ダイアログが表示されます。カテゴリからサンプル -> Java ME SDK 8.0を選択し、ネットワークのデモ (MEEP)を選んだ後、次>ボタンを押してください。

2. プロジェクト名とプロジェクトの場所を任意に設定し、終了ボタンを押してください。

3. プロジェクトが新規に作成されるので、プロジェクトを選択し、右クリックメニューから、消去してビルドを行った後、同じく右クリックメニューから、プロジェクトを実行してください。

4.  アプリが正常起動すると、エミュレータが自動起動し、アプリが起動できていることが確認できます。


5. NetBeansの出力画面では、アプリが標準出力へ出力した以下のメッセージが表示されます。

Waiting for connection on port 5000

上記のように、Java ME Embeddedのアプリケーションはデバイスが無くても、エミュレータにより簡単に開発ができることがご理解いただけたかと思います。さらに詳しい情報は以下をご参照下さい。

http://docs.oracle.com/javame/8.0/javame-dev-tool.htm

Java ME Embedded 3.4 for Qualcom IOE


9月末に行われたJavaOne 2013でJava ME 8 Early Access版が公開されました。
Java ME 8の正式版のリリースは来年初旬に予定されておりますが、我々は引き続きJava ME Embedded 3.xシリーズのアップデートも行います。

今回はJava ME Embeddedの最新バージョン、Java ME Embedded 3.4のご紹介です。

Java ME Embedded 3.4はバージョン3.3をベースにしておりますが、Qualcomm IOE("Internet Of Everything";) developer platformをサポートしております。

Qualcomm IOE developer platform:
・QSC6270T processor with 64 MB DDR RAM and 128 MB NAND Flash
・Tri-band UMTS/HSDPA + quad-band GSM, SIM slot
・2.4 GHz WiFi a/b/g/n
・GPS
・Supported I/O: SPI, I2C, GPIO, ADC, UART, SD card, on-board accelerometer, light + temp sensor

さらにQualcomm IOE platformとPCをUSBでつないで開発、デバッグできるようJava ME SDKのアップデートも行いました。


このリリースにより、Java ME EmbeddedはQualcommのエコシステムを支えることができるようになり、また組み込みJavaの未来へ大きく前進する機会となるでしょう。


Java ME Embedded 3.4とJava ME SDK 3.4は開発・評価用に無料でOTNからダウンロードすることができます。

About

日本オラクルのエンベデッドJavaチームから、最新情報をお送りしていきます。

Search

Archives
« 12月 2013 »
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
27
28
29
30
31
    
       
Today