プログラミング言語「Java」

Java
用途汎用
実行インタプリタ / コンパイラ
日本語
対応環境いろいろ
入手無償 / 有償

ネット時代の本格派言語

インターネット時代の始まりとともに広まった、「ネットワーク対応の オブジェクト指向本格プログラミング言語」、それが Java です。

開発したのはアメリカの Sun Microsystems。Unix 系の基本ソフト である Soralis (SunOS) やコンピュータの心臓部である マイクロプロセッサの SPARC などで、企業や研究機関には 古くから知られてきた会社です。

Java が発表された 1995 年は、ちょうど Windows 95 が発売されて 今のようなインターネット流行が大きく進んだ年です。どんな種類のコンピュータでも 利用できることをウリにした Java は、時代の寵児であると言ったら、 少し大袈裟になるでしょうか?

特徴

まず、Java の主な特徴を並べてみましょう。

ポータビリティ
一度作ったプログラムをそのまま他のコンピュータでも使うことができます。 多くのプログラミング言語では、手直ししたり再コンパイルする必要がありますし、 限られたプラットフォームでしか使えない言語もあります。 Java は、「実行環境」さえ用意すればあらゆるプラットフォームで利用できます。
ネットワーク対応
プログラム実行状態をネットワークを通じて簡単にやりとりすることができます。 これが、複雑な手順を踏まなければならない他の多くのプログラミング言語と 比較して Java が「ネットワーク言語」と呼ばれる理由です。
高い生産性
オブジェクト指向が取り入れられており、とくに大規模なプログラムの構築が 従来の言語より行いやすくなっています。また、一度作ったプログラムを 部品として再利用することも可能になっており、時間と手間が有効活用できます。

C++ 似の文法

Java の文法は、すでに普及していた C++ をもとにして作られました。 実際、構文やキーワードの中には C++ から流用されているものがたくさんあります。

オブジェクト指向を取り入れている Java で開発のスタート地点に なるのは「クラス」です。各クラスのオブジェクトは「メソッド」や「フィールド」を もちます。

Java に限らず、オブジェクト指向の言語では、クラス間の関係をいかに作るかが 重要なポイントになります。あるプログラムの機能を 2 つのクラスにわけたとき、 両者の関係をうまく設定すれば、そのプログラム自体の効率が上がるうえに、 それぞれのクラスを別のプログラムから利用することもできるからです。

「どこでも動く」の仕組み

Java のプログラムは「どこでも動く」のがウリのひとつになっていますが、 どうしたらそんなことができるのでしょうか。

ひとことで言ってしまえば、「エミュレータを使う」ということです。 エミュレータとは、あるコンピュータ用に書かれたソフトウェアを 別のコンピュータで動かせるようにするソフトウェアのことです。 現在では、合法のもの、違法なものを合わせて少なくとも数十から百以上の エミュレータが存在します。

Java の場合、「Java 仮想マシン」という架空のコンピュータが想定されています。 Java 言語で作られたプログラムを、この Java 仮想マシン用にコンパイルし、 その結果できた「Java 仮想マシン用の機械語プログラム」を、各プラットフォームで 用意したエミュレータを使って動かすのです。このため、エミュレータがあれば どんな環境でも動く、というのが、Java の「どこでも動く」の意味なのです。

ちなみに、ここで「どうせエミュレータを使うなら、 Java 仮想マシンなんてモノを考えなくてもいいのでは」と思われる人も いるでしょう。実際、Windows 用のソフトを MacOS 上で使えるようにする エミュレータなどが存在します。しかし、Windows が動作するコンピュータの 機械語の構成は、あくまでそのコンピュータで使うために設計されたものなので、 別のプラットフォームでエミュレートしようとすると、効率が著しく下がってしまいます。 Java 仮想マシンは、エミュレータで実行することが初めからわかっているので、 「エミュレータが作りやすい」ような構造になっています。

これからの Java

発表された当初、Java は熱狂的に歓迎されました。 ネットワーク上で Java のもつ可能性の大きさが評価されたからです。 そして、その後の数年で、Java の能力が厳しく見極められてきました。

Java を使わない方がよい場面というのも認識されるようになりましたし、 一方で Java のオブジェクトモデルを拡張する「JavaBeans」という技術も 開発されました。企業向けのライブラリなども整備されるようになり、 やっと本格的な実用化の準備が整ってきたといえます。

新しい試みとしては、Java の柔軟なネットワーク機能を生かして、 「ユビキタス」なコンピューティング環境を作り出そうとする「Jini」も登場しました。 ユビキタスというのは、どこでもコンピュータやネットワークが同じように 利用できることを指しており、「距離」がどんなに離れていても、 どこにいても同じように活動することができるという、コンピュータ利用者の 「夢」のひとつです。インターネットで世界中とやりとりできることを スゴイと思ったことのある人なら、この「ユビキタス」という言葉が目指しているものが 想像できると思います。Jini は、Java を使ってユビキタスな環境を構築することを 目指した技術です。

今後は、「Java だから」という理由で企業や製品が注目されることは 少なくなるでしょう。逆に我々の日常のコンピューティングに浸透し、 新しいネットワークの構築に大きな役割を果たすことが期待されているのです。。

ToyFish.Net 内のコンテンツ

JavaBeans Activation Framework
データの種類を識別する仕組みを提供する 標準拡張パッケージ javax.activation の Javadoc ドキュメントを 訳したものがあります。

Java 関連の主なサイト

一般

java.sun.com [英語]
Java の開発元である Sun Microsystems のサイト。Java 関連のニュースや 事例紹介などがあるほか、Java の標準開発環境などが無償でダウンロードできる。
Java コンピューティング
日本のサン・マイクロシステムズが提供する Java 情報のページ。製品紹介などもある。
Java Developer Connection [英語]
java.sun.com 内にある、Java 開発者向けのサイト。 ベータ版ソフトや最新情報が入手できるほか、入門用テキストなどもある。 略して「JDC」と呼ぶことが多い。
Java Developer Connection Japan
JDC の日本語版、ということになっているが、提供されている情報は まだまだ少ない。今後の発展に期待。
jCentral [英語]
Java の API 仕様策定に参加している IBM によるページ。 IBM の製品に関するニュースを中心に、様々な情報が載っている。
JavaWorld [英語]
アメリカ発のオンラインマガジン。チュートリアルや Tips からソフトウェアや 最新ニュースまで、膨大な情報がある。
JavaWORLD
こちらは日本の雑誌「JavaWORLD」の公式サイト。
JAVA PRESS
主に個人の Java 利用者を対象にした雑誌「JAVA PRESS」の公式サイト。

議論・意見交換

Java カンファレンス
Java の発展と普及を目指す、日本のユーザー団体の 1 つ。 「パッケージ」の命名や開発環境の評価などについての意見が交換されている。
Java House Mailing List
Java の利用や開発についてのメーリングリスト。投稿内容はサイトから 閲覧することもできる。Java のプログラミングでつまずいたときには、 ここの主な投稿を集めたトピックスが役立ちます。

開発環境

Java SDK
Sun が提供する標準の「Java 開発キット」で、開発用のツールと 実行環境がセットになったもの。もともと JDK と呼ばれていたが、 Java 2 になってから名前が変わった。事実上の標準で、例えば「JDK 1.1 以降か、 それと同等の Java 実行環境が必要だ」ということを「JDK 1.1 以降に対応」などという。 最新版の Java 2 SDK はソースが公開されている。旧版で現在利用できるのは、 JDK 1.0.2JDK 1.1.8 など。
Java SDK
日本語
対応環境Linux、Solaris、Win
入手無償
上記以外にも、サードパーティによる移植版が多数ある。詳しくは 「Java Platform Ports」 を参照。
CodeWarrior
Metrowerks による上級者向けの 開発環境で、Java の他に Pascal、C/C++、Objective C での開発もサポート。 お試し版の「CodeWarrior Lite」もあるので Windows 版をダウンロードしてみたところ、 C のサンプルとして懐かしの「リバーシ」のソースなどがサンプルとしてついていた。
Code Warrior
日本語
対応環境Mac、Win
入手購入 (試用版あり)
Java Studio
ほとんどマウス操作だけでプログラムが作れる、Sun の製品。 条件判断や計算などもすべて「コンポーネントの配置」で表現するという、 一風変わったものになっている。
JavaStudio
日本語
対応環境Solaris、Win
入手購入 (試用版あり)
Forte for Java
Sun が提供する開発環境。以前チェコの NetBeans 社が NetBeans Developer として 開発していたが、Sun が NetBeans 社ごと買収した。Java で実装されており、 構造がモジュール化されているため、自分で拡張することも可能。 オープンソースで開発されているので、 個人ユーザは一度はチェックしたい。
Forte for Java
日本語
対応環境Solaris、Win
入手購入または無償(グレードによる)
Borland JBuilder
Inprise の製品。 Java にとことんこだわった統合開発環境で、非常に高機能。 パワーのあるマシンでないと重くなる。
JBuilder
日本語
対応環境Win95/NT4
入手購入
teikade
PFU によるフリーの開発ツール。 Smalltalk のシステムブラウザに似た外見を持ち、ソースコードを 素早く閲覧することができる。高度な機能はないがその分軽快。 JDK 1.0.2 から JDK 1.2 まで、バージョンを問わずに使えるのも魅力の一つだ。 余談だが、筆者が先日パソコンを修理に出したのも PFU という会社だったが、 同じトコだろうか?
teikade
日本語
対応環境Java (1.0.2 以降)
入手無償
Visual Age for Java
IBM の製品で、Smalltalk に似た 統合開発環境。独自デザインの画面構成や、強力な RAD 開発機能がある。 カンタンなものならマウス操作だけでプログラムが作れてしまうぐらいで、 RAD にかけては他より抜きんでている。
Visual Age for Java
日本語
対応環境OS/2 Warp4、Win95/NT4
入手購入(無償版あり)
Visual Cafe for Java
かなり前から Java の統合開発環境を 出していた Symantec の製品。 x86 ネイティブコンパイラなどもついている。比較的パワーのないマシンでも良く動く。
Visual Cafe for Java
日本語
対応環境MacOS(PowerPC)、Win95/98/NT4
入手購入(試用版あり)
Visual J++
Microsoft の統合開発環境。 Java の開発環境というより、Java を使った COM 開発環境といった方がいいかもしれない。 WindowsDNA にも対応。Microsoft の独自拡張を含んでいるので、使うなら どこが違うのか調べてからが無難。最近別の会社に売却されたらしい。
Visual J++
日本語
対応環境Win95/98/NT4
入手購入(試用版あり)

実行環境

JRE (Java Runtime Environment)
Java SDK からコンパイラなどを省いて、Java プログラムの実行に 最低限必要なものだけにしたパッケージ。Java SDK (JDK) とバージョン番号を 合わせているので、「JDK 1.1 以降に対応」と書かれた Java プログラムなら、 JRE の 1.1 以降があれば動くことになる。 JDK 同様に、JRE 1.1.8 などがある。
JRE
日本語
対応環境Linux、Solaris、Win95/NT4
入手無償
この他にサードパーティによる移植版も多数ある。詳しくは Java Platform Ports を参照。
Java Plug-in [英語]
Netscape や Microsoft が自社改造版の JRE をブラウザに搭載したため、 ただでさえバージョンの違いに困っていた Java プログラマーたちは悲鳴を上げた。 この問題に対して Sun が作ったのが Java Plug-in。標準仕様の JRE が 内蔵されているので、ブラウザの「改造版」に悩まされずにすむというもの。 パソコンにプレインストールしてほしいとユーザー団体がメーカーに 頼んだりしているが、まだまだ普及していない。
Java Plug-in
日本語
対応環境Win95/98/NT(IE3.02 以降/NN3.0 以降)
入手無償

ツール、ユーティリティ

IBM alphaWorks Japan
IBM が先進技術を公開しているサイト。イロイロな Java プログラムがあって、 ついつい全部ダウンロードしたくなるのは筆者だけ?
Digital Cats Java Resource Center
Java 関連のプログラムやデータが集められている。一応、日本語。 メールマガジンで新着情報を受け取ることもできる。
KFC Home Page
Java AWT の機能があまりに貧弱なことに憤慨した安松一樹さんが作った クラスライブラリ「KFC」の公式サイト。HTML エディタのコンポーネントなども入っている。
KFC
日本語
対応環境Java (1.1 以降)
入手無償

他の言語とのつながり

FESI [英語]
Java プログラムで ECMAScript を使えるようにするための パッケージ。ECMAScript のスクリプトから Java のクラスを利用することもできる。 きちんと仕様に沿っているのがウリ。
FESI
用途スクリプティング
実行インタプリタ
日本語
対応環境Java
入手無償
Demi
Java の API を使って処理したいことがあるが、Java 言語で書いて コンパイルするのも面倒だなぁ、というときがある。前田修吾さんによる Demi は そんなときのためのスクリプト言語で、Java API をフルに使える。 画面デザインのチェックやバッチ処理など、応用範囲は広い。 文法は Java に似ているが、Ruby に似た構文もある。ドキュメントは 最低限しかないが、ソースコードが公開されている。
Demi
用途スクリプティング
日本語
対応環境Java
入手無償
Pnuts
Sun の戸松豊和さんによる、「Java 専用スクリプティング言語」。 Java をベースに、Lisp の一部を取り入れたような文法をもつ。Java プログラムから マクロ言語として使うこともできる。次々と改良が加えられ、かなり便利になってきている。
Pnuts
用途趣味・教育・実務
日本語
対応環境Java (1.1 以降)
入手無償
Jython [英語]
スクリプティング言語 Python を Java で実装したもの。以前は JPython と呼ばれていたが、ライセンスと名前を 変更した。[Thanks to shoji さん]
Jython
用途スクリプティング
日本語
対応環境Java
入手無償
Jcon [英語]
グラフィカルプログラミング言語「Icon」を Java で実装したもの。 現在は Icon に近づくべくチューニングが進んでいる段階のようだ。
Jcon
用途趣味・教育・研究
日本語
対応環境Unix(ksh)+Icon 9.3+Java(JDK 1.1)
入手無償
HotTEA [英語]
Java で実装した BASIC。BASIC の カンタンさと Java のネットワーク機能をあわせもつのがウリ。
HotTEA
用途趣味
日本語
対応環境Java (1.0.2 以降?)
入手無償
このほかにもご存知の方は、ご一報ください


Presented by 夏鰯 <sardine@toyfish.net>