技術あれこれ

技術情報を交換しましょう

Skip to: Content | Sidebar | Footer

Jython、Groovy、JRuby – どれが一番効率的?

26 7月, 2010 (11:51) | プログラム技術 | By: mofu

最近、本気で JVM を使用するスクリプト言語への乗換えを考えている。
考慮している。熟考している。
考課し、そして考査して、考察しながら勘考している。

我に、数多く存在する JVM 系スクリプト言語それぞれの利点、ドローバックを簡潔に述べ、
皆でそれについて考課し、考査する。勘考も忘れるな!

そして一番効率的なスクリプト言語を決定しようではないか!!



6:04/11/16 13:37:34

JythonはPython 2.1で止まっていて、開発者はバグフィクスよりも
2.2へのキャッチアップを優先しているが、new style classの実装に苦労している。
近いうちに安定版をリリースできる状況ではなさそうだ。
http://sourceforge.net/mailarchive/forum.php?thread_id=5754593&forum_id=5587

14:04/11/19 18:39:55

Jython が気にいったぞ。生産性では Jython に勝る者無し!!
これより、このスレッドは

          「Jython – 生産性最強の JVM 言語 part 1」

とさせてもらう。ではよろしく。

——————————————————————————–

Jythonを知る
ttp://www-6.ibm.com/jp/developerworks/java/040924/j_j-alj07064.html

17:04/11/19 21:58:25

>>14
その魅力を語ってください。

オレとしてはjavaみたいな型付けの強い言語はもう面倒で
死ぬのでVM上スクリプトが流行って一般のプロジェクトで使える
ようになる日が来るのを待っている。javaマンドクセ。

40:04/11/21 13:20:46

>>14
はよJython のこと語れ。ほれ。

16:04/11/19 20:50:35


print “anybody???”

18:04/11/19 22:59:07

ぜんぶString型で問題ない。

25:04/11/20 01:24:01

>>18
Integer.parseIntせずに数値として評価する技を教えてくらはい。
オレも全部Stringでやりたい。

19:04/11/19 23:20:05

強い型付けで防げるバグもある

37:04/11/20 18:45:01

>>19
強い型付けで防げるバグもある!
俺にもそう思ってた時期がありました…。

1 コンパイル時に検出する
2 実行時に検出する
ユニットテストしてたら所要時間は大差ない、かもしれぬ。

38:04/11/21 04:26:52

>>37
問題は、みんながみんなちゃんとしたユニットテストを書けるわけではないってことだ

20:04/11/19 23:27:18

どちらにしろ同じようにテストして最終的なバグの数が同じになるなら、実装の早いスクリプト言語の方が有利かも。
どうでもいいものを作る場合でテストしないなら、さらにスクリプトの方がいい。
間違いを見つけたときに修正すればいいからね。

オレは補完が賢く効いてくれる強い型付け言語の方が楽で好きだが。

21:04/11/19 23:34:49

>>20
> オレは補完が賢く効いてくれる強い型付け言語の方が楽で好きだが。

弱い型付けの言語でも十分補完はできるんだが。。。

java のような半OO言語でのプログラミングは面倒すぎる。

22:04/11/20 00:50:58

>>21
完全OOの言語の方がめんどくさそうですが。

24:04/11/20 01:21:52

>>21
プリミティブとクラスの変換。
コレクションと配列の変換。
面倒。

java.io の低レベルAPIっぽい作り。
ファイル開いて読んで閉じるのに何行書かせるんじゃ。
面倒。

スクリプトでいいよもう。

26:04/11/20 01:24:11

>>24
> プリミティブとクラスの変換。
Integer a = 5;
とか、
int b = a;
とかけますが、何か?

27:04/11/20 01:37:11

>>26
> Integer a = 5;
> とか、
> int b = a;
> とかけますが、何か?

書けませんが何か?
(それ5.0からじゃねーの?)

// あとプリミティブ型の引数を受けるメソッド、return typeがプリミティブ型
// のメソッドとかも考えること。

28:04/11/20 01:47:43

>>27
> 書けませんが何か?
> (それ5.0からじゃねーの?)

書けてるじゃないか。

// あとプリミティブ型の引数を受けるメソッド、return typeがプリミティブ型
// のメソッドとかも考えること。

List<Integer> l = new ArrayList<Integer>();
  l.add(5);

  int a = l.get(0);
できますが、なにか?
あ、逆ね。
 l.get(new Integer(0));
としても問題ないし
 Integer i = “いってよし”.length();
としても問題ないけど。

30:04/11/20 01:57:55

で、5.0からできてるじゃん。
何の問題が?

31:04/11/20 02:03:11

>>30
> で、5.0からできてるじゃん。
> 何の問題が?

それ以下のバージョンではコンパイルできない。

ちなみに

List<Integer> l = new ArrayList<Integer>();
  l.add(5);

だと Integer しか l に入れれないだろ?
JythonとかGroovyだと指定なしで何でも l に入れれるし、
「List<Integer> l = new ArrayList<Integer>();」
のようなきたない記述せんでもすむ

32:04/11/20 02:17:09

>>31
> それ以下のバージョンではコンパイルできない。

「スクリプトでいいよもう。」と言ってる人にとって、何の問題が?

> List<Integer> l = new ArrayList<Integer>();
> l.add(5);
>だと Integer しか l に入れれないだろ?

そうだよ。
でもl.add(5);と記述することはできるんだよ。



36:04/11/20 10:39:25

コンパイラが勝手に型を判断してくれればいい

41:04/11/21 19:33:47

論理的に正しいコードを書こうとしなければ、バグは無くならない。
正しいコードを書くには型がある方が便利。
ユニットテストはうっかりエンバグしないためのうっかり八兵衛用。

46:04/11/22 14:55:53

>>41
逆です。
論理的に正しいコードを書こうとするのは当たり前。
型が無くても正しいコードは書けるが、型があればバグの無いコードが書けるとは限らない。
型こそうっかりエンバグしないためのうっかり八兵衛用。

43:04/11/22 02:45:02

Jrubyがrubyの20倍遅いってのは
今は改善されているのか?

44:04/11/22 03:55:10

>>43
改善されて18倍になりました

50:04/11/24 00:01:55

スクリプト言語なんて、それこそ動けばなんだっていいからなぁ。

51:04/11/24 21:25:04

>>50
> スクリプト言語なんて、それこそ動けばなんだっていいからなぁ。
アフォだな

61:04/12/03 02:06:18

Jythonはシンタックス的にもかなりジャヴァと変わるだろ。
パイソンのコードが使いまわしできるし、それにJythonはコード
をそんなに書かなくても良いから効率がよい。
これからはJythonにしろ

62:04/12/03 02:06:39

>Rhinoってjavaと変わるか? かわらないのなら普通java使うだろ?

このスレ自体良スレだとは思っていなかったが、59を見て決定的に失望した。

64:04/12/03 02:10:09

>>62
> >Rhinoってjavaと変わるか? かわらないのなら普通java使うだろ?

あんたひっぱたくよ。

->
Rhinoってjavaと *そんなに* 変わるか? かわらないのなら普通java使うだろ?

66:04/12/03 10:57:57

それはCOBOLに、失r(ry

71:04/12/10 13:44:07

javaが中間言語ってアホちゃうか。

75:05/02/07 21:02:07

おれはJythonを押すね。

76:05/02/07 21:18:25

>>75
あれって開発止まってない? 

78:05/03/02 13:54:42

Groovyっていう結論がでたからじゃない?

79:05/03/03 21:48:10

>>78
使ってみればわかるが現時点では使い物にならない。

80:05/03/03 22:05:06

使わなければどうということはない!

81:05/03/05 22:57:35

>>80
頭いいなお前

86:2005/05/07(土) 00:41:30

ピーナッツを真珠と間違えて埋めた。ひどいめすにあった。

87:2005/06/13(月) 02:41:34

質問です(situmonndesu)

perl、python、ruby、これらはいずれもOOPが可能ですが、
これらでOOPをやる場合のそれぞれの利点を教えてください。

89:2005/06/23(木) 09:57:28

>>87
OOは考え方なので実装はどれ使っても一緒。

90:2005/06/23(木) 13:49:52

perlはOOやるにはつらいだろ。
pythonとrubyは同じようなもんだという話だけど。
ここに出てないけど、rubyとC++とJavaとPHPだと、OOといってもプログラムの組み方がまったく変わるわけで。

91:2005/06/25(土) 14:21:56

>>90
つ ら い の が い い ん じ ゃ な い か 。

まあプログラムの組み方が全く同じなら違う言語使う意味ないわな。
だからといってOO{P|D}するにあたって違いが出るとは思えないが。(PHPは知らん)

96:2005/10/05(水) 02:16:32

JRubyちょっと動かしてみたんだけど、なんかものすごく遅くね?
Rubyってこんなもんなの?

99:2005/11/06(日) 16:11:36

rubyで組んでJavaとして納品するのにJruby使ってるな。
遅いと言われたらハードの予算ぶんどるか、ネイティブrubyで動かすか、一部JavaやCで組み直すか。

jrubyが遅いのは当たり前。rubyをjavaでエミュレーションして、それを実行バイナリにエミュレーションしてるから。

103:2005/11/15(火) 21:29:41

>>99
> rubyをjavaでエミュレーションして

なんだ、バイトコードにコンパイルとかしてくれないのか。

100:2005/11/07(月) 09:06:40

<< 99
なんでそんなにまわりくどいコトやってんの?
JavaならJavaでRubyならRubyで組めよ。趣味でやっているならともかく。
しかも、遅いって言われたら予算ぶんどるって、業界の公害だな。

101:2005/11/15(火) 01:59:47

>>100
Ruby厨の妄想はほっとけ

105:2005/12/03(土) 01:00:30

実務で使うと後で泣けるけどな

108:2006/02/12(日) 02:59:20

>>105
確かに。
互換性よりもまつもと的言語の美しさのほうが優先だからね。。。

106:2005/12/04(日) 15:43:31

もしかしてJava→JRubyの呼び出しってできないのか?

107:2006/02/12(日) 01:29:46

Jythonて正式実装のわりに、本家からバージョン遅れすぎじゃね?

109:2006/02/12(日) 10:19:28

>>107
メイン開発者がMSに引き抜かれてIronPython作ってるから、
Jythonの開発はほとんど止まってるんじゃない?
IronPythonの方は最新(2.4)の言語仕様に対応してるのにね……

110:2006/02/12(日) 14:51:06

>>109
Javaからドトネトに流れてたのか…。回復の見込みはなさそうだな。
monoでバッチリ動くのならまあいいけど、Java資産が使えないのはイタいな。

111:2006/02/15(水) 06:42:49

ABCLってどうなの?

116:2006/04/18(火) 13:30:52

JRuby は遅いからなあ、と使うのをやめたあなた、
http://www.javaworld.com/javaworld/jw-03-2005/jw-0314-scripting-p2.html

3月27に出た 0.83 はすごく速いぞ!もうほかの処理系に引けを取らないぞ!

http://sourceforge.net/project/shownotes.php?release_id=405255
もうすぐ Ruby on Rails も動くそうだし、大注目だぞ!

だけどまだ継続(continuation)は使えないぞ!

120:2006/05/20(土) 13:18:41

だんだんできることが似たり寄ったりになると、
それぞれの言語の言語仕様で選択することになるのかな。

122:2006/05/22(月) 10:51:50

>>120
JVMの上で動くJava, Groovy, Jython, JRuby
CLRの上で動くC++/CLI, C♯, VB.NET, IronPython, 一応J♯

JITコンパイラの極まり具合だとJVMの方が上だが、
クライアントでの用途を考えると、WinFormsの分CLRが良いと思う。

どちらの上ででも動くPythonは使える範囲が広いってことか。
CLRで動くRubyって実物あったっけ?

こう見てみると、Perl6/Parrotって、すげーイマサラ感が漂う。

123:2006/05/22(月) 11:52:25

>>120
そういうのメンドクサイから、IFだけそろえてどの言語からでも同じように各種部品が使える状態にして欲しい

124:2006/05/22(月) 13:14:25

>>123
Bean Scripting Frameworkを組み込めば、とりあえずひととおりは簡単にサポートできる。
http://jakarta.apache.org/bsf/
Rhinoのリリースに対応していないのがいまいちだが。
つーかBSFて開発止まってる?

125:2006/05/22(月) 14:16:18

>>124
そういう話じゃないんだよ
ぶっちゃけ言語なんか何でも良いじゃん

RoRとかjakartaProjectとかを各種言語でシームレスに使いたい

126:2006/05/23(火) 03:40:10

>>125
でも、現実問題バリバリRubyの機能生かしてかかれたRoRとかを
多言語から利用するってのは無理くさくない?

例えば、BorlandのVCLをD言語から利用したくても、かなり無理くさいのと同様に

129:2006/06/05(月) 11:28:05

>>126
D知らないんだけど、何で無理なん?
VCLってDel専用仕様はあまり使ってない気がするんだが。
だからこそApolloなんかも存在出来るんだと思うし。

127:2006/05/25(木) 01:24:19

>>125
JavaOneでRoRの対応、全部じゃないけど出来てきてるって言ってた、
という記事をみたよ

131:2006/07/01(土) 22:43:48

Groovy、始まったな

「Groovy 1.0 JSR-6 公開、正式版は今秋を目処に」
http://journal.mycom.co.jp/news/2006/07/01/342.html

136:2006/09/10(日) 19:29:13

JRubyの開発者をSunが正式に雇用したらしいな
どうするつもりなんだろ
http://www.infoq.com/news/JRuby-Goes-To-Sun

137:2006/09/11(月) 00:00:29

Dynamic Language向けのJVMの最適化はやりたいんだろうな。
Rhinoだけじゃ偏るだろうしね・・・

151:2007/05/27(日) 17:16:29

>>137
どうせJythonの中の人がMSに取られたからとかそんな感じなんじゃないのか?

139:2006/09/11(月) 01:06:09

そういえば、なんでJDK6にはPnuts入れなかったんだろう?
少なくとも、Javaとの連携という意味では、Pnutsの方がRhinoよりもよっぽど
優れてると思うんだけどなあ。あと、性能でもJVM系Dynamic Languageの中
でほぼ最速だし

143:2007/02/16(金) 23:08:11

>>139
別に仕事として開発している訳じゃないからではないかと・・・・
何より開発者が一人というのがきついのでは?
Rhinoは、言語仕様自体は規格化されているけどPnutsは戸松さんのセンスだし。

どっちが好きかだって?
そりゃPnutsですよww

141:2006/10/09(月) 21:28:33

JythonでGUIアプリを作ろうかと思ってます。
pyからclassファイルにコンパイルしたら理屈上では
Javaで書いたGUIアプリとパフォーマンスは変わらないものでしょうか。

146:2007/05/05(土) 16:07:17

jython使わずにjavaのapi使えないのかな?
pythonで一緒に使いたいライブラリがあったりするので・・・

156:2007/06/09(土) 23:39:21

2年くらい前にJEmacs 使ったけどすぐ落ちちゃったからそれ以来見てないな

158:2007/06/10(日) 06:13:51

だって起動がクソ重いんだもん

164:2008/02/26(火) 13:02:11

>>158
クソってほどでもないだろうよ。

161:2007/09/01(土) 03:41:10

そっかー
GlassFish使うってまで重たい話にはしたくない気もするけどサポート度合いはこっちの方が良いだろね。

166:2008/05/06(火) 13:57:28

こっちに目次がある。
ttp://book.mycom.co.jp/book/978-4-8399-2282-5/978-4-8399-2282-5.shtml

171:2008/06/09(月) 21:12:57

ObjC-Rubyとも言うべきMacRubyが最強。
Mac限定だが。

176:2008/09/27(土) 16:19:50

Groovyイン・アクション
http://book.mycom.co.jp/book/978-4-8399-2727-1/978-4-8399-2727-1.shtml

9/27 発売らしい。

先月はこれも出たし、Groovy/Grailsの本が増えてきていい感じ。
http://www.amazon.co.jp/dp/4798117366/

181:2009/11/07(土) 14:02:09

JRuby に載ってるというJOniを試したが大したことないな。

パターン: “ABC([0-9]+).*”
テストメッセージ: “ABC56abc”
試行回数: 1000万ループ

java.util.regex.Pattern: 3828 ms
org.joni.Regex: 5156 ms

191:2010/03/03(水) 21:56:48

time_t の桁数(10進)が
999999999
から
1000000000
になると色々問題が起きるかもしれないっていう話かな

202:2010/04/27(火) 14:28:10

Rhinoのサイト
https://developer.mozilla.org/ja/Rhino

JScriptとRhinoの比較

//jscriptCat.js

var file = new ActiveXObject(“Scripting.FileSystemObject”).
       OpenTextFile(WScript.Arguments(0));

while (!file.AtEndOfStream) {

  WScript.StdOut.WriteLine(file.ReadLine());
}

file.close()

//rhinoCat.js

importPackage(java.io);

var file = new BufferedReader(new FileReader(arguments[0]));

while (file.ready()) {

  print(file.readLine());
}

file.close();

204:2010/04/27(火) 22:43:02

>>202
Readerの使い方間違ってるぞ



Popularity: 11% [?]

Incoming search terms for the article:

Write a comment