小ネタ千夜一夜 第1夜

きしださんの一連のエントリで新しいネタである必要がないということに衝撃を受けたので、小さいTipsをいろいろと思いついたときに書いていこうと思う。


記念すべき第1夜の今回はJavaによる環境変数の取得。これもネタとして新しいものではありませんな。知っていて当たり前の情報。

J2SE 5.0からは環境変数の取得ができるようになった。昔は出来ていたのでいまさらなのだが、実は新しいメソッドも追加されている。

java.lang.System

public static Map<String,String> getenv()

戻り値を見てわかるように環境変数の一覧が取得できるようになったのだ。


以下サンプルコード。

    public static void main(String[] args)  {

        for(Entry<String,String> e : System.getenv().entrySet()){
            System.out.printf("%s=%s%n",e.getKey(),e.getValue());
        }

    }

ちなみに

現在のJava SE 6 update10ではVMの起動に0.1秒もかからないこと、環境変数が自由に取得することも出来ることを考えるとJavaCGIも使用可能な状態になった気がする。メモリ使用量も20KBくらいのようだし、PHPRubyと比べて大きく不利とも思えない。起動が早いホットスポットVMとの相性も実はいいはず。もちろん、ループなどでは途中でコンパイルがされて高速化するので遅いといったデメリットもない。

プロセス単位での起動はやはりパーミッション等の設定が容易になるということで、レンタルサーバー等で導入いやすいような気がする。問題はmod_cgiのままではすぐに扱えないので、mod_javacgiとかが用意されれば一気に広がる可能性もあるのでは?という妄想が膨らむ。

Java SE 6 update10はまじでVM起動が一瞬なので、コマンドライン用ツールが大量にJavaで書かれてもおかしくないかも。Java=起動が遅いと思ってる時代遅れな人はぜひupdate10を試して欲しい。

[追記]
ブックマークコメントみて反応。NetBeans6.5付属のJRuby1.1.4を起動してみたところ0.5秒かかっている模様。0.1秒あれば動くJavaのコードに比べるとやはりプロセスの起動はちょっとつらいかも。