2015年3月26日

JVM の中からシェルを叩くのがキモい件について

T/O
4
Yuta Okamoto @okapies

JVM の中からシェルとかネイティブのコマンド叩くの、現実的には仕方のない場面も多いと思うんだけど、何がキモいのかというのをうまく言語化できない。

2015-03-26 00:06:32
かず(原材料に小麦粉を含む) @kazzna

全てのメソッド宣言にnativeというキーワードをつけることが義務付けられているコーディング規約のJava開発案件

2015-03-26 00:13:28
Kota Mizushima (on a diet) @kmizu

@okapies せっかく小綺麗なJVMワールドに入ったのにそっから外に出る感じが気持ち悪いんじゃないですかね。自分はそういう気持ち悪さは感じます

2015-03-26 00:09:48
Yuta Okamoto @okapies

@kmizu 感覚的にはそういう感じですねー。ただ、具体的にどういう陥穽があるのかというのをちゃんと整理したことないなーと思いまして。なぜ、普通のスクリプト言語だとカジュアルにそういうことやってもあんまりキモくないのかとか。

2015-03-26 00:12:08
Kota Mizushima (on a diet) @kmizu

@okapies PerlもRubyもですけど、独自のワールド作らなくてUnix文化に混ぜ合わさってる感じじゃないかと思いました。JavaはコマンドラインオプションからしてUnix文化から離れている感じが

2015-03-26 00:16:04
Yuta Okamoto @okapies

@kmizu あー、それはありますね。「何でもファイル」とか「何でもプレインテキスト」みたいな概念が JVM の中でうまく安全に収まらないというか。

2015-03-26 00:17:54
puipuiカピバラ㌠ @kobtea

@okapies "Write once, run anywhere"感がなくなってしまうのではないでしょうか

2015-03-26 00:25:02
Yuta Okamoto @okapies

@kobtea なるほど、それもありますね。箱の中から出ていった先のセマンティクスの保証がないという。

2015-03-26 00:28:09
眼力 玉壱號 @objectxplosive

.@okapies うーむ…そう言われるとそんな気もするけど(と言いつつ #GroovyLang しか使わないので "ls -l".execute () …)

2015-03-26 01:13:16
Yuta Okamoto @okapies

JVM の外側のコマンドとかデーモンを、ある種のオブジェクト or サービスとして抽象化して見せるラッパとか作ったらキモさ減るかなぁ…。単に隠蔽してるだけで問題が解決してないんじゃないかって気もするけど。

2015-03-26 00:36:31
Kazuhiro Sera (瀬良) @seratch_ja

@okapies そうですね。あとは成功してる限りはまあ何でもよくて、失敗したときのヒントがアレかなと思うので、OS レベル(シェルレベルというか何というか)の問題だぞみたいな例外投げるとか?

2015-03-26 00:56:16
KAWACHI Takashi @kawachi

@okapies JVMで動かすからには30億のデバイスで動かしたいですからね!中には shell のないやつも。。。

2015-03-26 08:15:51
かず(原材料に小麦粉を含む) @kazzna

@kawachi @okapies 同じ意見だ!!Java = アプレットみたいなイメージが強い(特に初期)ので、気軽にそこにしかないシェル叩かれてもという感じです。ちなみにボクが唯一お仕事で使ったJavaはIBMのZ/OS上で動いてました。

2015-03-26 08:33:40
眼力 玉壱號 @objectxplosive

.@okapies 枠外ぽい内容なんで混ざっていいのか非常に恐縮です。そう言えばキモい理由に『Windows だと引数が vector でなくて、更に quote が多重化しちゃうのでややこしい』ってのがある気がします(というか今日正に焼かれました orz)

2015-03-27 01:52:07

コメント

NOKUBI Takatsugu野首貴嗣 @knok 2015年3月26日
この感覚が、いろんなものをJavaで再実装する原動力だと勝手に思っている。JGitとかAGPとかSenとか…
1
cocoon @cocoonP 2015年3月26日
「OS レベル(シェルレベルというか何というか)の問題だぞ」って言われちゃったらそれもはやVMじゃないじゃんねえと思ってしまうなあ
1
Yuta Okamoto @okapies 2015年3月26日
Apache Kafkaの「FileChannel#transferToでJVMの外側でデータぶん投げるから爆速だぜ!」という異端のアプローチは何かに使えないものかといつも思っている。 http://d.hatena.ne.jp/kimutansk/20130518/1368886758
0