Java Bridgeを利用した他言語によるデータロード＆プロットデモ
担当：阿部（九大ICSWSE）

2013/08/21

2013年度データ解析講習会＠NIPR

1

Outline
1. Java bridgeとは2. JUDASとは
3. Java bridgeを使う

Purpose• Java bridgeとその仕組みを知る• 他の言語からJavaクラスを呼び出してIUGONET機関の取り扱うデータをプロットできるようになる

2013/08/21

2013年度データ解析講習会＠NIPR

2

Java bridgeとはソフトウェア開発者が2つのプログラミング言語を統合するために、これらを（相互に）使用できる構造を提供するコンポーネントがある。このコンポーネントを bridge と呼ぶ。
われわれが作成している データ読み出し、解析、描画用bridge
は Java で書かれているため、特に Java bridge と呼んでいる。

なぜ Javaで提供するのか• 特定のプラットフォームに依存しなくなる• プログラムの保守が容易になる• 他言語のコード資産との接続が容易になる

2013/08/21

2013年度データ解析講習会＠NIPR

3

2013年8月19日 IUGONET解析ソフトウェア報告 より

JUDAS(Java-based UDAS)とは？
•

Java言語で書かれたライブラリ群。

•

観測データのダウンロード、プロット、解析が可能。
単独のダウンロードツールとしても利用可能。
他言語(e.g., Jython, JRuby, MATLAB,IDL(確認中))から呼び出すことが可能。
Java Web Startを用いた簡単インストール&更新。
CUI(Jython, JRuby)もGUIも準備中。

••
•
•
•

2013/08/21

Metadata DBのQuickLookへの利用。
(既に、DstIndexはQuickLook組み込み済み)

2013年度データ解析講習会＠NIPR

4

2013年8月19日 IUGONET解析ソフトウェア報告 より

JUDASのサンプル
Jythonから、JUDASを呼び出してDst Indexをプロットするサンプル。
一見長いが、殆どラッピング出来るので、３行程に収まる。

縦軸がオートスケールなので、DstIndexらしく見えない。
現在は、メタデータに記載されているRendering Hintを機械的に解釈し、適切な縦軸を設定するように、変更している。 → メタデータの有機的な利用！
2013年度データ解析講習会＠NIPR
2013/08/21

5

Java bridgeを使う
Judasを入手しよう
推奨手順は
1. Scientific Linux6 64bit環境（VMでも良い）を準備する
2. 作業アカウント “iugonet”を作成する
3. Github からJudas をダウンロードして展開する
4. Ant をインストールする
5. Judas付属の“build.xml”を実行して環境を構築する（開発環境eclipseのインストールを含む）
6. Eclipse上でファイルを書き直し、パッケージを作成するなのですが、今回は時間がないので上記そのままの実習は割愛。
3. Githubからのファイル取得をやってみましょう。
Eclipse：IBMによって開発された統合開発環境。Javaで記述され、オープンソースで公開。Javaのみならず多くのプログラミング言語に対応。
IUGONETのメタデータ記述推奨環境でもある。
2013/08/21

2013年度データ解析講習会＠NIPR

6

Java bridgeを使う

IUGONET開発プロダクトのほとんどはGitHub上で公開されています！

Judasを入手しよう

https://github.com/iugonet/

ここをクリック

2013/08/21

2013年度データ解析講習会＠NIPR

7

Java bridgeを使う
Judasを入手しよう

https://github.com/iugonet/スクロール

ここをクリック

2013/08/21

2013年度データ解析講習会＠NIPR

8

Java bridgeを使う
Judasを入手しよう

https://github.com/iugonet/

Git環境がある人は、このURLで git clone でも良しスクロール

ここをクリックするとzipがダウンロードできる
2013/08/21

2013年度データ解析講習会＠NIPR

9

Java bridgeを使う
Judasを入手しよう

https://github.com/iugonet/

ダウンロードしたアーカイブをJudasディレクトリに展開すると。。。
Judas/workspace/Plugins/bridgesに各言語へのjava bridgeが準備されている
2013/08/21

2013年度データ解析講習会＠NIPR

10

Java bridgeを使う
Judasを入手しよう
1. 本実習用のビルド済jarファイルを以下からダウンロードする
http://magdas2.serc.kyushu-u.ac.jp/bridges-demo.zip
2. 適当な場所に展開すると、bridges-demoというディレクトリができる

Libの中身は2013/08/21

pluginsの中身は2013年度データ解析講習会＠NIPR

11

Java bridgeを使う

Jython:プログラミング言語PythonをJavaで実装したもの。
あらゆるJavaクラスをシームレスにインポートできるのが特徴のひとつ。

サンプル実行用に他言語（ここではJython）をインストールするLinuxの場合：
各ディストリビューションに付属のパッケージマネージャを使うと楽（例えば、SLでは # yum install jython）
また、Judas内の build.xmlを実行すればインストールできる
Mac/Winの場合（LinuxでもOK）：
1．http://www.jython.org/ にアクセス

ここをクリック

2013/08/21

2013年度データ解析講習会＠NIPR

12

Java bridgeを使う
サンプル用に他言語（ここではJython）をインストールする

2．Downloadから“Download Jython 2.5.3” をクリック

ここをクリック

3．Central Repository から“jython-installer”の “jar”をクリック
ここをクリック

2013/08/21

2013年度データ解析講習会＠NIPR

13

Java bridgeを使う
サンプル用に他言語（ここではJython）をインストールする

4．ダウンロードしたjarファイルを実行する

ダウンロードしたファイルをダブルクリックする

または、コマンドライン（ターミナル）上で# java –jar jython-installer-2.5.3.jar
を実行
あとはインストーラーの指示に従う
2013/08/21

2013年度データ解析講習会＠NIPR

14

Java bridgeを使う
サンプル用に他言語（ここではJython）をインストールする

5．Jythonを実行する
Windows：
コマンドプロンプト上で>C:¥jython2.5.3¥bin¥jython
またはC:¥jython2.5.3¥bin¥jython.bat
をダブルクリックでもよいLinux：$ jythonなどで起動する
2013/08/21

2013年度データ解析講習会＠NIPR15

Java bridgeを使う
Jythonで実際にデータ読み込み、図を描いてみる
1．Bridgesから、plotDstIndex2.py をbridges-demoディレクト
リの中にコピーする
2．plotDstIndex2.py を書き直す#!/usr/bin/env jython
import sys

Jythonの場所を指定# Add jar path
sys.path.append("/home/iugonet/Judas/lib/Tplot.jar")sys.path.append("/home/iugonet/Judas/lib/Aplot.jar")sys.path.append("/home/iugonet/Judas/lib/external/jcommon-1.0.17.jar")sys.path.append("/home/iugonet/Judas/lib/external/jfreechart-1.0.14.jar")sys.path.append("/home/iugonet/Judas/plugins/DstIndex.jar")
データ読み込み、描画に必要なライブラリの位置を指定。ライブラリ名にも注意！
Windowsでもディレクトリの区切りは「/」を使う

timeSeriesCollection=dstIndex.loadData(strUrl)
2013/08/21

2013年度データ解析講習会＠NIPR

loadData->loadに変更
16

Java bridgeを使う
Jythonで実際にデータ読み込み、図を描いてみる

3．書き直したファイルを実行する
Win上での例：コマンドプロンプトで> c:¥jython2.5.3¥jython plotDstIndex2.py

2013/08/21

2013年度データ解析講習会＠NIPR

17

Java bridgeを使うプログラムの構成を理解して、他言語でのbridge作成に挑戦しよう#!/usr/bin/env jython
import sys# Add jar path
sys.path.append("/home/iugonet/Judas/lib/Tplot.jar")sys.path.append("/home/iugonet/Judas/lib/Aplot.jar")sys.path.append("/home/iugonet/Judas/lib/external/jcommon-1.0.17.jar")sys.path.append("/home/iugonet/Judas/lib/external/jfreechart-1.0.14.jar")sys.path.append("/home/iugonet/Judas/plugins/DstIndex.jar")

初期化部：
Jarファイルへのパス設定やクラスのインポートなどをおこなう

from org import jfreefrom org.iugonet.www import Aplot
from org.iugonet.www import Tplot
from org.iugonet.www import DstIndex
from java import lang
strUrl="http://wdc-data.iugonet.org/data/hour/index/dst/1984/dst8410"
dstIndex=DstIndex()
timeSeriesCollection=dstIndex.load(strUrl)

データ読み込み部：指定されたURLからデータを読み込む

chart=jfree.chart.ChartFactory.createTimeSeriesChart(lang.String("Dst Index"),lang.String("Time"),lang.String("Dst Index[nT]"),timeSeriesCollection,lang.Boolean("FALSE"),lang.Boolean("FALSE"),lang.Boolean("TRUE"))
frame=jfree.chart.ChartFrame(lang.String("Simple TimeSeries Chart"),chart)frame.pack()
frame.setVisible(lang.Boolean("TRUE"))
データ解析、描画部：

2013/08/21

データ解析や描画をおこなう。ここを別言語に置換することも可能（Javabridgeで読み込んでMATLABに描かせる、など） 18
2013年度データ解析講習会＠NIPR

MATLAB/Java ブリッジ
利用のポイント
MATLABが使うJava、とjarファイルをコンパイルしたJavaのバージョンを合わせる
どちらかで対応できる
1．Ｊａｒ作成のJavacをMATLABが使うJavaのバージョンにする2．環境変数 MATLAB_JAVA でMATLABが使うJavaをjarのJavaバージョンにする

2013/08/21

2013年度データ解析講習会＠NIPR

19

Appendix 1 JDK7 を入れる
http://www.oracle.com/technetwork/java/javase/downloads/jdk7downloads-1880260.html

1．Acceptを選ぶ
2．適切なプロダクトをクリック※1 Win/Linuxの場合、JREでも良い（MacのJREが提供されていないので、本AppendixはJDKとした）※2 Linuxの場合、各ディストリビューション提供のOpenJava7でも良い2013/08/21

2013年度データ解析講習会＠NIPR

20