Javaの特徴

一度書いたらどこでも走る

バイトコードはコンピュータの種類に依存しません。一方機械語はコンピュータの種類に依存します。Windwos用のJavaVMはバイトコードをWindowsの機械語に、Mac用のJavaVMはバイトコードをMacの機械語に翻訳してくれます。したがって、一度バイトコードを作ってしまえば、WindowsでもMacでも問題なく動作してくれます。
従来のアプリケーションだと、Windows用のものはMacでは動かないし、その逆もやはり動かないのは皆さんご存知でしょう。しかし、Javaで作ったアプリケーションはそのままどちらでも動いてしまうのです!
実際私もMac上で開発したJavaアプリケーションがそのままWindowsでも問題なく動くのを目の当たりにして、涙がこぼれそうなほど感動しました。

図 1-2 : 一度書いたらどこでも走る

オブジェクト指向

Javaではオブジェクト指向の考えを取り入れています。オブジェクト指向とは、部品を組み合わせてプログラムを作っていく考え方のことです。
以前に作られた部品を別のプログラムでも簡単に再利用することができるので、生産性の向上が期待できます。すでに完成している信頼できる部品を再利用することで、新しい機能のプログラミングだけに集中できるのは嬉しいことです。
また、機能ごとに部品に切り分けられるので、プログラム全体の意味内容もわかりやすくなり、読みやすくなります。

ガーベッジコレクション

プログラムの実行中、さまざまなデータがメモリ上に配置され、利用されたり、書き換えられたりしていきます。ところが実行中にもう二度と使われることのないデータがメモリ上にできてしまう場合があります。このため、メモリ領域が無駄に使われ、プログラムの動作が重くなってしまうという問題が発生します。
そこで、使われなくなったメモリ領域を解放して、もう一度その領域を使えるようにしてやる必要が出てくるわけです。C言語のような比較的古い言語では、このようなメモリ領域を解放するためのコードをプログラマが書かなければいけませんでした。正直言ってこれは楽しい作業ではありません。物好きなプログラマといえども、なんでいちいちメモリ領域を解放するコードを書いてやらにゃいかんのかと、疑問に思うのが当然です。また、プログラマがコードを書く場合、まだ解放してはいけないメモリ領域をうっかり解放してしまうことにより誤動作が起こる危険性もあります。
でも安心してください。JavaVMは、使われなくなったメモリ領域を自動的に、正しい時期に解放してくれるのです。この機能をガーベッジコレクション(ゴミ収集)といいます。もっとも、最近はJava以外にもガーベッジコレクションを実装している言語はいくつかありますので、もはやJavaの特徴とは言えないかもしれません。

マルチスレッド

プログラムにおける処理の流れのことをスレッドといいます。単純なプログラムにはスレッドは一つしかありません。一つのスレッドしか無い場合、たとえばそのスレッドの中で長時間の計算をしている間は、他のことはできなくなってしまいます。ボタンを押したりメニュー項目を選ぶこともできなくなってしまうのです。これでは大変不便を感じるでしょう。
より身近な例としてはブラウザーが分かりやすいでしょう。Webページの読み込みは有る程度の時間がかかりますが、読み込みが終了するまで、他のことができないということでは使い物になりません。そこで、スレッドを複数用意して、一つ目のスレッドでは、ボタンやメニューの処理、二つ目のスレッドではあるWebページの読み込み、三つ目のスレッドでは他のページの読み込みというふうに、複数の処理の流れを同時に実行していくことになります。
このようなしくみをマルチスレッドといいます。
ありがたいことに、Javaではこのマルチスレッドも比較的簡単に実現できるようになっています。しかし、最近ではマルチスレッドに対応した言語もめずらしくなくなってきました。

豊富なAPI

API ( Application Programming Interface )とは実際にプログラミングを行うために用意されたさまざまな機能の集まりことです。一般的にプログラミングではただ文法を覚えるだけではなく、このAPIを使いこなすことが重要になってきます。プログラマは、一からプログラムを作っていくのではなく、様々なAPIの中から必要なものを見つけて、それらを組み合わせたり、機能を付け加えたりしながら、プログラムを作っていきます。
JavaのAPIはすべて、機能ごとにクラスという形でまとめられています。このようなAPIのことをクラスライブラリともいいます。嬉しいことにJavaのAPIは非常に豊富で、気の利いたクラスが多数用意されています。既存のクラスに機能を追加して、自分の欲しい新しいクラスを作ることもできるのです。
Javaのクラスはパッケージで分類されます。例えば、java.langというパッケージにはJavaの基本的なクラスが含まれています。java.awtというパッケージにはウィンドウ部品関連のクラスが含まれています。
Java APIの最も詳しい情報を知りたいときは、以下のページで調べることになります。本格的にプログラミングをするときには確実に必要になりますので、お気に入りに入れておく方がいいでしょう。