はじめに
Pythonで書くつもりだった研究のプログラムを後々Androidへの移植のため、Javaで書いてほしいと頼まれた。でも分析対象のデータがCSVファイルだったりJavaだとちょっと面倒くさそうなところがあったりするので、Javaで書いたプログラムをJythonを使って利用してみる。
Javaのパッケージ作成
試しに作ってみた.
$ tree . ├── models │ ├── CalcStats.class │ └── CalcStats.java └── Main.java
$ cat CalcStats.java
package models;
/**
* @author Mejiro
* @version 1.0
*/
public class CalcStats{
/**
* Calc average value.
*/
public double calcAverage(double... args){
/**
* Calc average value.
* @return average value
*/
double sum = 0;
for(int i=0; i<args.length; i++){
sum += args[i];
}
return sum/(double)args.length;
}
}
普通にjavaから使うなら↓みたいな感じ。
$ cat Main.java
import models.*;
public class Main{
public static void main(String[] args){
CalcStats calcStats = new CalcStats();
double test[] = {64, 82, 99, 78, 77, 78, 65, 85};
System.out.println(calcStats.calcAverage(test));
}
}
Jythonから使ってみる
インストールはHomeBrewで.
$ brew install jython
$ jython >>> import models >>> calcstats = CalcStats() Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'CalcStats' is not defined >>> dir() ['__doc__', '__name__', 'models'] >>> calcstats = models.CalcStats() >>> dir() ['__doc__', '__name__', 'calcstats', 'models'] >>> calcstats.calcAverage([78,87,68,89,98,78,67]) 80.71428571428571 >>> exit()
使えた!Jythonについて色々調べないと使えないかと思ったけど、特に問題なくすんなり使えた.