1. APIの実装のレベル
2. 文字エンコード
3. 追加例外
4. APIの実装
5. PersonalJAVA独自の実装について
specificationにおいて、サポートするべきAPIが示されているが、それらAPIはそのサポートのレベルによって段階が分けられている。
- Required
- 完全に実装を要求されるAPIに対しては、このRequiredが指定される。
- Unsupported
- PersonalJAVAではサポートされないAPIに対して指定される。
- Optional
- 実装の可否が実装を行うVMのベンダーに任せられているAPIに対して指定される
- >PJAE-specific
- JDK 1.1.8 や JDK 1.2.2には存在しないが、PersonalJAVAにおいてのみ存在するAPIに対して指定される。
- Modified
- 完璧にはJDKのAPIが実装されず、その細部が未実装もしくは動作の詳細が違うAPIに対して指定される。
文字エンコード
文字エンコーディングはプラットフォームに強く依存、もしくは制限されることになる。
ただし、最低限、ISO 8859-1 ("Latin-1")、 Unicode、プラットフォームのネイティブコードは実装環境がサポートする。
API自体がJDKのサブセットであるため、開発者が意図せずPersonalJAVAがサポートしていないクラスやメソッドを使うことが想定される。
このため、このようなサポートしていないクラスやメソッドを使用したときに専用の例外をThrowするように新しい例外{\bf com.sun.lang.UnsupportedOperationException}が設けられた。
PersonalJAVAは基本的にJDK1.1.8のAPIの実装を要求するが先に述べた要求のレベルに段階分けされて一部、機能制限されている。
JDK1.1.8のAPIパッケージごとの実装を示す。ただし、specificationの全てを載せるわけではなく詳細については目立つ部分にしか言及しない。
java.Applet
フルサポート
java.awt
modified package
一部動作に修正が加えられている。
- Dialog
- モーダルなダイアログは同時に一つまでしか表示できない。
- Graphics
- setXORModeの動作が異なる場合がある。
- Scrolling Controls:
- ScrollPane、List等スクロールを行うコンポーネントのフィールドScrolling Policyを指定した場合の動作が異なる。
- その他
java.awt.event
フルサポート
java.awt.image
フルサポート
java.awt.peer
modified package
FileDialogPeerのみRequiredではない。これは、実装環境によってシステム内でのファイルの取り扱いポリシーが異なるためである。
java.beans
フルサポート
java.io
modified package
次に示すクラスがOptional指定である。
- File
- FileInputStream
- FileNotFoundException
- FileOutputStream
- FileReader
- FileWriter
- FilenamaFilter
- RandomAccessFile
java.lang
modified package
JDK1.2.2 security APIで定義されているfine-grained access controlに関する項目を実装することが要求されている。
java.lang.reflect
modified package
java.lang同様セキュリティー項目においてJDK1.2.2レベルの実装を要求されている。
java.math
Optional指定
ただし、実装をする場合はフルサポートにすることを要求される。
java.net
modified package
セキュリティー項目に関してJDK1.2.2レベルの実装を要求されている。
また、使用できるネットワークプロトコルについては次表の通り。
プロトコルに対する実装要求
プロトコル名 | Version | Required | Optional |
http | 1.0 | x | |
SSL | 3.0 | | x |
gopher | | | x |
ftp | | | x |
SMTP | | | x |
file | | | x |
java.rmi
Optional指定
サポートする場合はフルサポートであることを要求する。
java.security
modified package
基本的にJDK1.2.2レベルでの実装を要求する。
Fine-grained access controlについてはRequired、code signing mechanismについてはオプショナル指定である。
java.sql
オプショナル指定
実装する場合はフルサポートにすると同時にjava.mathパッケージの実装を要求する。
java.text
フルサポート
ただし、文字エンコーディングについては前述の通り
java.util
modified package
JDK1.1.8のAPIについてはフルサポート。fine-grained access controlやcode signing mechanismに呼応してJDK1.2.2レベルのAPIを一部要求されている。
awtコンポーネントの拡張
awtコンポーネントは全てダブルバッファリングに対応する。
ただし、初期状態でダブルバッファリングが有効になっているか否かは実装に任されておりメソッドpublic boolean isDoubleBuffered()で確認することが出来る。
マウスレス入力支援システム
com.sun.awtにインターフェースのみ定義されている。