« テストはいつでも不足する | トップページ | ATMが多すぎるわけですが »

2008年5月14日 (水)

Java言語の位置

もともと、Java言語が狙っているのは、 C/C++ のポジションだと思うのですよね。確か、当初は組み込み分野で使うことを考えていたのではなかったか、と以下の記事を読んでいて思い出したわけですが。

Real-time response is a requirement in Java application domains such as banking, online collaboration, and games development, as well as for safety critical applications used in hospitals, manufacturing, aviation, and emergency response systems. Unfortunately, the Java platform has long suffered from its erratic response time. Java applications are known to freeze because the garbage collector has "stopped the world." Incremental garbage collection (-Xincgc) improves this situation, but it does not completely eliminated the nasty "full GC" pauses associated with the Java platform.

To further complicate things, Java program execution also can suffer from unexpected delays caused by Just-In-Time (JIT) compilation, class initialization, or standard utility collections internally resizing.

Realistically real-time: Real-time Java application development using multicore systems (Java World)

言語設計者の意図に反して、Java言語は、むしろ、エンタープライズ分野やWebアプリで広く使われるようになったわけですが。Java言語が目指している位置は、システムプログラミング言語であって、エンタープライズ分野とWebアプリは、Java言語が目指していた方向とは違うのではないか、と思うわけです。

こんなことは Java ではいたるところに存在していて、たとえばテキストファイルひとつ読み込むのも FileInputStream と InputStreamReader (と BufferedReader) を組み合わせて書かないといけない。だいたい、なんで FileReader では文字コードを指定できないのか、理解に苦しむ。

「怠慢はプログラマの美徳」というけれど (kwatchの日記)

FileReader で文字コードが指定できない理由というのは、 もともと”文字を読む”という発想がなかったからでしょうね。 『プログラミング言語 Java 第4版』 ”20.3.3 文字ストリームと標準ストリーム” によりますと:

標準ストリーム System.in、 System.out、 System.err は、文字ストリームが導入される前から存在しています。したがって、論理的には文字ストリームであるべきですが、標準ストリームはバイトストリームです。

p.448

もともと、Java API には、文字ストリームは存在せず、バイトストリームしかなかったみたいですね。このあたりに、InputStream と Reader との関係が煩雑になった事情がありそうです。 言語設計者の意識は、テキスト・データより、バイナリ・データの方に向いているように思えますね。

Java言語の設計者は、エンタープライズ分野やWebアプリには、あまり興味はなさそうな感じですよね。今後も、Java言語が、エンタープライズ分野やWebアプリに特化する、ということはないでしょうね。やはり、システムプログラミング言語を目指し続けるのではないでしょうか。

|

« テストはいつでも不足する | トップページ | ATMが多すぎるわけですが »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/80472/20942429

この記事へのトラックバック一覧です: Java言語の位置:

« テストはいつでも不足する | トップページ | ATMが多すぎるわけですが »