Java は、クラスを基本単位とするオブジェクト指向の、新しく開発された並列型のプログラミング環境および実行環境です。Java は、次の要素から構成されています。
プログラミング言語
API 仕様
仮想マシン仕様
Java には、次の特徴があります。
オブジェクト指向 - Java は、C++ の基本オブジェクト技術に多少の変更 (機能の拡張および削除) を加えたオブジェクト技術を提供します。
アーキテクチャに依存しない - Java ソースコードをコンパイルすると、アーキテクチャに依存しないオブジェクトコードが生成されます。このオブジェクトコードは、ターゲットアーキテクチャ上の Java Virtual Machine (JVM) によって解釈されます。
移植性 - Java では、移植性の面での規格が強化されています。たとえば、int は常に 2 の補数の 32 ビット整数です。ユーザーインタフェースは、Solaris および他のオペレーティングシステムですぐに実装可能な抽象ウィンドウシステム (AWT、Abstruct Window Toolkit) を使用して構築されます。
分散型 - Java には、包括的な TCP/IP ネットワーク機能が実装されています。ライブラリルーチンは、HTTP (ハイパーテキスト転送プロトコル、HyperText Transfer Protocol) や FTP (ファイル転送プロトコル、File Transfer Protocol) などのプロトコルをサポートしています。
厳密な検査 - Java コンパイラおよび Java インタプリタは、包括的なエラー検査機能を提供します。すべての動的メモリーを管理し、配列境界などの例外を検査します。
安全性 - Java 言語には、C や C++ でしばしば見られるような不正なメモリーアクセスを引き起こす機能は実装されていません。Java インタプリタは、コンパイル後のコードをテストして、不正なコードがないかどうかを検査します。これらのテストによって、コンパイル後のコードがオペランドスタックのオーバーフローやアンダーフローを起こしたり、不正なデータ変換を行なったり、無効なオブジェクトフィールドにアクセスしたりすることがなくなり、すべての opcode のパラメータタイプが有効であることが検証されます。
高いパフォーマンス - アーキテクチャに依存しない、機械語に似た言語にプログラムをコンパイルするため、インタプリタでの処理サイズが小さく、効率的に実行されます。また、Java 環境において Java バイトコードは実行時にネイティブのマシンコードにコンパイルされます。
マルチスレッド化 - Java 言語には、マルチスレッド機能が組み込まれています。マルチスレッド処理では、ユーザー操作の処理を継続しながら、イメージの読み込みなどの処理を行うことができるので、対話式処理のパフォーマンスを向上させることができます。
動的 - Java は、呼び出されたモジュールを実行時までリンクしません。
簡潔 - Java は C++ に似ていますが、C あるいは C++ の複雑な機能は取り除かれています。
Java には、以下の機能は提供されていません。
プログラミングで制御する動的メモリー
ポインタ演算
struct (構造体)
typedef
#define