Java API、使ってますか?に触発されたので、Javaのスクリプト言語実装の一つBeanShellについてポストしてみます。
Java界隈で、JVM上で動作するスクリプト言語実装が注目されている。
知っている範囲で、以下のJVM上のスクリプト言語実装がある。
繰り返しになるが、BeanShell(以下bsh)の特徴は以下。
JVM上のスクリプト言語のユーザは、以下の2種類に分けられると思う。
さて、「ホーキング宇宙を語る」と言う本の中で、著者のホーキングは執筆時に以下のアドバイスを受けたという話がある。
本に数式を1つ入れる度に、売上は半分になる
ホーキングは数式を最小限に減らし(e=mc^2の1つだけらしい)、その本はベストセラーになった。
後者のユーザにスクリプトを使ってもらうことを考えると、クロージャ等の別言語から輸入されたシンタックスには、覚えるためのコストが必要になる。
私の周りには、Javaの開発経験はあるが、PythonやRubyは経験がない人たちが大勢いる。
私は彼らに簡単なスクリプトの便利さを知ってもらい、やがてスクリプトを書けるようになってもらいたい。
bshなら他の言語より学習コストは小さいので、もしかしたら使ってくれるかもしれない。
以下はSQLをOracleに投げる簡単なプログラムをJavaとbshで書いたもの。
SampleOra.java
import java.sql.*;
public class SampleOra{
public static void main(String[] args){
String drv = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@servername:1521:SID";
String user = "user";
String pass = "pass";
try{
Class.forName(drv);
Connection con = DriverManager.getConnection(url, user, pass);
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select 'Hello, world!' from dual");
rs.next();
String hello = rs.getString(1);
System.out.println(hello);
}catch(Exception e){
; // do nothing
}
}
}
sampleora.bsh
import java.sql.DriverManager;
drv = "oracle.jdbc.driver.OracleDriver";
url = "jdbc:oracle:thin:@servername:1521:SID";
user = "user";
pass = "pass";
Class.forName(drv);
con = DriverManager.getConnection(url, user, pass);
stmt = con.createStatement();
rs = stmt.executeQuery("select 'Hello, world!' from dual");
rs.next();
hello = rs.getString(1);
print(hello);
上記サンプルを実行したい場合は大変です。コードをファイルとして保存し、Oracleの接続環境を整え、bsh-2.0b4.jar と適当なJDBCドライバをクラスパスに通て以下のような感じでコマンドを起動して下さい。
$ javac SampleOra.java
$ java SampleOra
$ java bsh.Interpreter sampleora.bsh
bsh版はJava版に比べ、スクリプト言語的として使いやすくするための以下の利点がある。
また、コード中の例外はインタプリタが補足するため、ハンドリングする必要のない例外はtry〜catchで囲わなくて良い。
foo = 1;
foo = "1";
Javaと同じように型を宣言することもできる。
型を宣言した変数barに別の型の値は代入できない。
int bar = 2;
bar = "2";
// Error: EvalError: Variable assignment: bar: Can't assignjava.lang.String to int : at Line: 5 : in file:
: bar = "2"
感触はつかんでもらえたでしょうか。
※このエントリは CNET Japan ブロガーにより投稿されたものです。シーネットネットワークスジャパン および CNET Japan 編集部の見解・意向を示すものではありません。
アナリストが語る、サイトのユーザーエクスペリエンスを向上させる10個のカギ
ネットとリアリティ 〜宮崎駿さんの「折り返し点」〜
原宿で野宿を含む15時間 - iPhone行列完全ドキュメント
[緊急入荷 ビックカメラ有楽町店]HP 2133 Mini-Note PC(HP Mini)
2011年テレビ滅亡論
iPhone OS 2.1とモバイルビジネス2.1
定性的大キライ。(3)
Joomla CMSをカスタマイズするには・・・テンプレートが第一優先
最適なマウスの移動速度は?
パブリックコメントは国民に知られていなかった( 2 )みんなのお題では、ブロガー同士で質問を出し合いそれに対する回答や意見を集めています。今日はどんな話題が盛り上がっているでしょう?
DELLが掲げる「新・仮想化アセスメントサービス」CNET Japan ブログネットワークは、元はCNET Japanの一読者であった読者ブロガーと、編集部の依頼により執筆されているアルファブロガーたちが、ブログを通じてオンタイムに批評や意見を発信する場である「オピニオンプレイス」、また、オピニオンを交換するブロガーたちが集うソサエティです。
広い視野と鋭い目を持ったブロガーたちが、今日のIT業界や製品に対するビジョンや見解について日々熱く語っています。
CNET Japanやその他サイトが提供するITニュースやコンテンツへの意見や分析、 ビジネスやテクノロジーに対するビジョンや見解について語っていただける方を 募集しています。ご応募はこちらから
ブログの投稿はこちらから(※ブロガー専用)
今年最も活躍したブロガーを表彰します。詳細はこちらから
これは、CNET Japan 編集部の依頼に基づいて執筆されているCNET Japan アルファブロガーによるブログの印です。
CNET Japan ブログネットワーク内で拍手の代わりに使用する機能です。ブログを読んで、感激した・役に立ったなど、うれしいと思ったときにクリックしてください。多くGood!を獲得した記事は、より多くの人に読まれるように表示されます。
[レビュー]高い信頼性を普通に使う地球に優しい電源ユニット--Antec EarthWattsシリーズ EA-650
オンリーワンの個性を極めた超薄型テレビ--日立 Wooo UTシリーズ
[レビュー]“この手があったか”と思わせるパワーユーザーも納得のPCオンデマンド--「VALUESTAR G タイプR Luiモデル」+「Lui RN」詳細レビュー
今週の新製品総チェック:ドコモ、au夏モデルが続々店頭へ、ビデオカメラは新機種ラッシュ
[レビュー]テレビを持ち歩ける最強ツール--ソニー、Blu-rayレコーダー「BDZ-A70」
[レビュー]ネットワーク対応の高機能デジタルフォトフレーム--ソニー「Canvas Online CP1」
15時間の行列で手に入れたiPhone 3Gファーストインプレッション--ソフトバンクモバイル「iPhone 3G」
北京を見逃すな!--2008年夏、今買うべき「薄型テレビ」
[レビュー]通勤鞄に忍ばせたい軽さと装着感--マクセルのノイキャンヘッドホン「HP-NC15」