Java は、1995年頃に Sun Microsystems 社によって発表されたプログラミング言語です。プログラミング言語には他に BASIC、COBOL、FORTLAN、LISP、C、C++、JavaScript、Perl、PHP、Ruby などがあります。
Java の語源はコーヒーの Java(ジャワ)です。ただし、プログラミング言語の時は「ジャバ」と表記することが多いようです。英語の発音は「ジャヴァ」。何故、コーヒーの名前になったかには諸説あり、本当の理由は謎につつまれています。
Java と JavaScript は名前も文法も似ていますが、別物です。Java で記述されたスクリプトが JavaScript ではありませんし、JavaScript の略称が Java でもありません。ルーツは同じであるとしても、英語とドイツ語くらい異なるものです。
Java は、オブジェクト指向 的なプログラミングが可能な言語です。オブジェクト指向とは継承機能を持つクラスに基づいてインスタンスを生成することで記述性を高める・・・と言っても説明しきれないので、どこか別の場所で詳しく説明します。オブジェクト指向プログラミング言語には他に、Smalltalk、C++、C# などがあります。
プログラミング言語は、プログラムを逐次解析しながら実行する インタープリタ型言語 と、あらかじめマシン語コードに変換しておく コンパイル型言語 に大別されます。Java は基本的にはコンパイル型言語ですが、CPU に依存したマシンコードではなく、CPU に依存しない 中間コード にコンパイルするのが特徴です。
CPU に依存したマシンコードは CPU が実行しますが、Java のような CPU に依存しない中間コードは、Java の実行環境に含まれるソフトウェアが読み込み、CPU 依存のマシンコードに変換しながら実行します。このソフトウェアを Java VM(Virtual Machine:仮想マシン)と呼びます。
「一度書いたら、どこでも動く」。Java では CPU や OS に依存しないプログラミングが可能で、一度書いたプログラムは、Windows や UNIX系OS や携帯電話など、様々なプラットフォームで動かすことが可能と言われています。ただし、Java VM のバージョンなどに強く左右され、まだまだ思うようには動かないのが現実のようです。
Java は、メモリリーク の無い言語と表現されることもありましたが、これはちょっと嘘です。しかし、メモリリークのミスが少なくなるように設計された言語であることは間違いありません。確保されたメモリは、誰からも参照されなくなると自動的に開放されます。
Java の大まかな歴史は下記のようになります。Java1.2 からは Java 2 と呼ばれるようになりました。
Java1.0 ... 1996年 ↓ Java1.1 ... 1997年(国際化、JAR、JDBC、RMI、Java Beansなど) ↓ Java2(Java1.2)... 1998年(Swing、JFC、J2SE/J2EE/J2ME など) ↓ Java2(Java1.3)... 2000年 ↓ Java2(Java1.4)... 2002年(XML関連、正規表現) ↓ Java2(Java1.4.2)... 2004年(現在の主流) ↓ Java2(Java1.5)... 2004年(?)
Java 2 には複数のエディションがあります。個人向けデスクトップなどで使用されるのが J2SE、企業向けサーバなどで使用されるのが J2EE、組み込み系で使用されるのが J2ME です。
J2SE(Java 2 Platform, Standard Edition) → 標準エディション J2EE(Java 2 Platform, Enterprise Edition) → 企業向けエディション(Servlet、JSP、EJB ...) J2ME(Java 2 Platform, Micro Edition) → 組み込み向けエディション
J2SE は、下記の 2つの形態で配布されています。Java のソフトウェアを動かすには JRE が、開発するには SDK が必要です。SDK は Java 1.1 までは JDK(Java Development Kit)と呼ばれていました。
JRE(Java Runtime Environment) → Javaの実行環境のみ。 SDK(Software Development Kit) → Javaの開発環境。JREを含む。