Java Platform, Standard Edition

Java SE (Java Platform, Standard Edition) について



Java SEは、Javaプラットフォームの基本となるAPI群です。これは、Java仮想マシン (JVM) とともに、Javaプログラムを実行するための基盤を提供します。かつてはJ2SE (Java 2 Platform, Standard Edition) と呼ばれていましたが、バージョンアップを経てJava SEという名称になりました。

Java SEの歴史



Java SEは、JCP (Java Community Process) の下で開発されており、各バージョンはJSR (Java Specification Request) によって規定されています。例えば、J2SE 1.4はJSR 59、J2SE 5.0はJSR 176、Java SE 6はJSR 270、Java SE 7はJSR 336によって規定されました。これらの仕様は、Javaプラットフォームの進化を支える重要な役割を担っています。

Java SEの役割



Java SEは、標準的な機能のみを定義しており、サーバー関連の機能は、Jakarta EE (旧称: Java EE) で定義されています。この明確な役割分担により、Javaは多岐にわたる分野で利用されています。

主要なJava SEパッケージ



以下に、主要なJava SEパッケージとその機能について説明します。より詳細な情報については、Java SE 9 API Javadocsをご参照ください。

java.lang


`java.lang` パッケージは、Java言語の中核をなすクラスとインターフェースを提供します。これは、クラス階層の頂点である `Object` クラス、列挙型を扱う `Enum` クラス、型情報を表す `Class` クラス、例外処理のための `Throwable` クラスなどが含まれています。また、スレッドや文字列操作、数値演算、プリミティブラッパークラスもこのパッケージに含まれます。`java.lang` パッケージのクラスは、import文なしで自動的に利用可能です。

java.lang.ref


`java.lang.ref` パッケージは、ガベージコレクションと連携して柔軟な参照型を提供するクラス群です。ここでは、ソフト参照 (SoftReference)、弱参照 (WeakReference)、ファントム参照 (PhantomReference) の3つの参照型が定義されています。これらの参照型は、キャッシュの実装、弱マップの作成、オブジェクトのファイナライズ処理など、特定の目的で使用されます。これにより、ガベージコレクションをより柔軟に制御できます。

java.lang.reflect


`java.lang.reflect` パッケージは、リフレクション機能を提供するクラス群です。リフレクションとは、実行時にクラスの構造を調べたり、メソッドを呼び出したりする機能のことです。これにより、動的なプログラミングが可能になり、デバッガインタプリタ、オブジェクトインスペクタなどのツールを作成する際に役立ちます。クラス、メソッド、フィールド、コンストラクタなどの情報を取得し、操作することが可能です。

java.io


`java.io` パッケージは、入出力 (I/O) をサポートするクラス群です。ストリームベースの入出力だけでなく、ランダムアクセスファイルも扱えます。`InputStream`、`OutputStream`、`Reader`、`Writer` などの抽象クラスを基盤として、様々な入出力操作をサポートします。ファイルシステムとのインタラクションや、データ型に応じたフィルタリングも可能です。文字エンコーディングの指定もサポートされています。

java.nio


`java.nio` パッケージは、メモリマップドI/O|メモリマップドI_Oなどの高度な入出力機能を提供します。従来の入出力よりも効率的な処理が可能になり、パフォーマンスの向上が期待できます。バッファの操作、文字エンコーディング、チャネルなどをサポートし、より柔軟な入出力処理を実現します。ファイルのロック機能も提供します。

java.math


`java.math` パッケージは、任意精度の数値演算を提供するクラス群です。`BigDecimal` クラスは任意精度の10進数を、`BigInteger` クラスは任意精度の整数を扱うことができます。暗号鍵の生成や、誤差をコントロールした数値演算も可能です。

java.net


`java.net` パッケージは、ネットワーク通信をサポートするクラス群です。HTTPリクエストやその他のネットワーク関連の操作を扱うためのルーチンが提供されています。

java.text


`java.text` パッケージは、文字列の解析や書式設定をサポートするクラス群です。ロケールに依存したテキスト処理が可能で、国際化対応のアプリケーション開発に役立ちます。

java.util


`java.util` パッケージは、コレクションAPIを中心とした、データ構造を扱うためのクラス群です。リスト、セット、マップなどのデータ構造を利用でき、効率的なデータ管理が可能です。

特殊なパッケージ



java.applet


`java.applet` パッケージは、Webブラウザ上で動作するアプレットを作成するためのクラス群です。アプレットはサンドボックス内で実行され、セキュリティ制約が適用されます。

java.beans


`java.beans` パッケージは、JavaBeansアーキテクチャをサポートするためのクラス群です。再利用可能なコンポーネントであるJavaBeansの作成と操作を可能にします。

java.awt


`java.awt` パッケージは、基本的なGUI操作をサポートするルーチンを提供します。ネイティブシステムに依存したウィンドウ表示を行います。Java 2DグラフィックAPIも含まれています。

java.rmi


`java.rmi` パッケージは、異なるJVM間でリモートメソッド呼び出し (RMI) を行うためのクラス群です。

java.security


`java.security` パッケージは、メッセージダイジェストアルゴリズムなどのセキュリティ関連機能を提供するクラス群です。

java.sql


`java.sql` パッケージは、JDBC (Java Database Connectivity) APIを実装するためのクラス群です。SQLデータベースへの接続をサポートします。

javax.rmi


`javax.rmi` パッケージは、RMI over IIOPプロトコルを使用した、アプリケーション間のリモート通信をサポートします。

org.omg.CORBA


`org.omg.CORBA` パッケージは、CORBA (Common Object Request Broker Architecture) をサポートするためのクラス群です。異なるプログラミング言語で作成されたオブジェクト間でのリモートメソッド呼び出しを可能にします。

javax.swing


`javax.swing` パッケージは、プラットフォームに依存しないGUIコンポーネントを提供するSwingツールキットです。ルック・アンド・フィール (PLAFs) の切り替えや、MVCパターンの改良版に基づいた設計が特徴です。

javax.swing.text.html.parser


`javax.swing.text.html.parser` パッケージは、HTMLパーサーを提供するクラス群です。

関連情報



詳細な情報については、以下のリンクをご参照ください。

Java'>Java
Java#.E3.82.A8.E3.83.87.E3.82.A3.E3.82.B7.E3.83.A7.E3.83.B3.EF.BC.88Java_SE.E3.80.81Java_EE.E3.80.81Java_ME.E3.81.AA.E3.81.A9.EF.BC.89'>Java#エディション
Java#.E3.83.90.E3.83.BC.E3.82.B8.E3.83.A7.E3.83.B3.E5.B1.A5.E6.AD.B4'>Java#バージョン履歴
Java%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E5%B1%A5%E6%AD%B4'>Javaバージョン履歴
Jakarta EE
Java_Platform,_Micro_Edition'>Java Platform, Micro Edition (Java ME)
Java_Card'>Java Card

外部リンク



Oracle - Java SE (日本語)
Oracle JDK 9ドキュメント (日本語)
Java SEバージョン9 API仕様 (日本語)
JSR 336 (Java SE 7) (英語)
JSR 270 (Java SE 6) (英語)
JSR 176 (J2SE 5.0) (英語)
JSR 59 (J2SE 1.4) (英語)

この記事がJava SEの理解を深めるための一助となれば幸いです。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。