SE 8で導入されたコンパクト・プロファイルは、Java SEプラットフォームAPIのサブセットを定義します。これにより、ストレージ容量が制限されているデバイス上でJavaランタイムの静的サイズを削減できます。
コンパクト・プロファイル(単にプロファイルとも呼ばれる)は、完全なJava SEプラットフォームAPIのサブセットです。 プロファイルを使用すると、ストレージのフットプリントが小さくなるため、リソースに制約のあるデバイス上で多くのJavaアプリケーションを実行できます。 アプリケーションの機能上のニーズにもっとも適したプロファイルを選択することで、使用していない機能に割り当てられるストレージを最小限にすることができます。
コンパクト・プロファイルはAPIの選択のみを扱うものであり、Java仮想マシン、言語適正、ツールには無関係です。
compact1、compact2およびcompact3という3つのプロファイルがあります。 各プロファイルは、それより番号の低いプロファイルのAPIを含んでいます(compact2はcompact1のスーパーセットです)。 完全なSE APIはcompact3プロファイルのスーパーセットです。 次の表に、それぞれの構成の概要を示します。
| 完全なSE API | Beans | JNI | JAX-WS |
| Preferences | Accessibility | IDL | |
| RMI-IIOP | CORBA | 印刷サービス | |
| サウンド | Swing | Java 2D | |
| AWT | ドラッグ・アンド・ドロップ | インプット・メソッド | |
| Image I/O | |||
| compact3 | セキュリティ1 | JMX | |
| XML JAXP2 | 管理 | インストゥルメンテーション | |
| compact2 | JDBC | RMI | XML JAXP |
| compact1 | コア(java.lang.*) |
セキュリティ | 直列化 |
| ネットワーク | 参照オブジェクト | 正規表現 | |
| 日付と時間 | 入出力 | コレクション | |
| ロギング | 並行性 | リフレクション | |
| JAR | ZIP | バージョン管理 | |
| 国際化 | JNDI | オーバーライド・メカニズム | |
| 拡張機能メカニズム | スクリプト |
1. compact1のセキュリティにkerberos、acl、saslを追加します。
2. compact2のXML JAXPに暗号化を追加します。
次のJDK 8ツールは、プロファイルを明示的にサポートします。
-profile profileオプションは、profileに存在しないAPIが使用されている場合にフラグを付けるよう、コンパイラに指示します。 jdeps静的依存関係アナライザ[Solaris、Linux、Mac OS XまたはWindows]: -profileオプションは、パッケージを含んでいるファイルまたはプロファイルを表示します。 次の表に、各コンパクト・プロファイルに含まれるAPIパッケージを示します。 プロファイル構成はAPIリファレンスでも定義されています。
| compact1 | compact2の追加パッケージ | compact3の追加パッケージ |
|---|---|---|
| java.io | java.rmi | java.lang.instrument |
| java.lang | java.rmi.activation | java.lang.management |
| java.lang.annotation | java.rmi.dgc | java.security.acl |
| java.lang.invoke | java.rmi.registry | java.util.prefs |
| java.lang.ref | java.rmi.server | javax.annotation.processing |
| java.lang.reflect | java.sql | javax.lang.model |
| java.math | javax.rmi.ssl | javax.lang.model.element |
| java.net | javax.sql | javax.lang.model.type |
| java.nio | javax.transaction | javax.lang.model.util |
| java.nio.channels | javax.transaction.xa | javax.management |
| java.nio.channels.spi | javax.xml | javax.management.loading |
| java.nio.charset | javax.xml.datatype | javax.management.modelmbean |
| java.nio.charset.spi | javax.xml.namespace | javax.management.monitor |
| java.nio.file | javax.xml.parsers | javax.management.openmbean |
| java.nio.file.attribute | javax.xml.stream | javax.management.relation |
| java.nio.file.spi | javax.xml.stream.events | javax.management.remote |
| java.security | javax.xml.stream.util | javax.management.remote.rmi |
| java.security.cert | javax.xml.transform | javax.management.timer |
| java.security.interfaces | javax.xml.transform.dom | javax.naming |
| java.security.spec | javax.xml.transform.sax | javax.naming.directory |
| java.text | javax.xml.transform.stax | javax.naming.event |
| java.text.spi | javax.xml.transform.stream | javax.naming.ldap |
| java.time | javax.xml.validation | javax.naming.spi |
| java.time.chrono | javax.xml.xpath | javax.security.auth.kerberos |
| java.time.format | org.w3c.dom | javax.security.sasl |
| java.time.temporal | org.w3c.dom.bootstrap | javax.sql.rowset |
| java.time.zone | org.w3c.dom.events | javax.sql.rowset.serial |
| java.util | org.w3c.dom.ls | javax.sql.rowset.spi |
| java.util.concurrent | org.xml.sax | javax.tools |
| java.util.concurrent.atomic | org.xml.sax.ext | javax.xml.crypto |
| java.util.concurrent.locks | org.xml.sax.helpers | javax.xml.crypto.dom |
| java.util.function | javax.xml.crypto.dsig | |
| java.util.jar | javax.xml.crypto.dsig.dom | |
| java.util.logging | javax.xml.crypto.dsig.keyinfo | |
| java.util.regex | javax.xml.crypto.dsig.spec | |
| java.util.spi | org.ietf.jgss | |
| java.util.stream | ||
| java.util.zip | ||
| javax.crypto | ||
| javax.crypto.interfaces | ||
| javax.crypto.spec | ||
| javax.net | ||
| javax.net.ssl | ||
| javax.script | ||
| javax.security.auth | ||
| javax.security.auth.callback | ||
| javax.security.auth.login | ||
| javax.security.auth.spi | ||
| javax.security.auth.x500 | ||
| javax.security.cert |