KaffePC 制限事項
現在判明している KaffePC の制限事項の一覧を以下に示します。
1. java.net パッケージ機能制限
1.1 概要
- 実装するソケットは TCP/IP 型のストリームソケットのみ。UDP/IP 型
のデータグラムソケットや、マルチキャストデータグラムソケットには対応
しない。
- IPアドレスからホスト名へ逆引きできない。
- 生成できるソケットの数は 23 まで。
- ソケットオプションの設定はタイムアウト指定のみ対応する。
- ローカルホストに対して接続できない。
1.2 インスタンス生成の制限
java.net パッケージに存在する非抽象クラスのうち、インスタンス生成可能
なクラスを以下に列挙する。
- DatagramPacket
- InetAddress
- ServerSocket
- Socket
- URLEncoder
以下の非抽象クラスは、インスタンス生成時に例外が発生する。
- DatagramSocket
- MulticastSocket
1.3 各クラスの機能制限
- InetAddressクラス
-
- public String getHostName()
- 正しい名前を返さない。現在の実装では、一律 "<unknown>"
を返す。
- public static InetAddress[] getAllByName(String host)
- 一つの IP アドレスしか返さない。
- public boolean isMulticastAddress()
- 実装されていない。実行時に NoSuchMethodError が発生する。
- Socket クラス
-
- public int getSoLinger()
- public boolean getTcpNoDelay()
- public void setSoLinger(boolean on, int timeout)
- public void setTcpNoDelay(boolean on)
- 例外 SocketException が発生する。
- ServerSocket クラス
-
- public ServerSocket(int port, int backlog)
- public ServerSocket(int port, int backlog, InetAddress bindAddr)
- backlog は強制的に 1 に設定する
- ContentHandler クラス
-
- abstract public Object getContent(URLConnection urlc)
- null を返す。
- HttpURLConnectionクラス
-
HTTP プロトコルのリクエストは GET のみ対応している。また、プロキシーに
は対応していない。
- URLクラス
-
対応するプロトコルは、http, file のみ。
2. javax.comm パッケージ機能制限
2.1 概要
- シリアルポートのみサポートする。パラレルポートはサポートしない。
- 使用できるシリアルポート名は、"COM1"、"COM2"、"COM3" 。
- 以下の受信パラメータ設定には対応しない。
- receive framing
- receive threshold
- receive timeout
- 入力バッファ、出力バッファのサイズは指定できない。
- break キャラクタの送信、受信ハンドリングはできない。
- flow control の設定はできない。
- MODEM 機能の制御はできない。
- 非同期イベントの受信ハンドリングは、受信イベントのみ対応。
2.2 各クラスの機能制限
- javax.comm.CommPort クラス
-
- public void enableReceiveThreshold(int thresh)
- public void enableReceiveFraming(int framingByte)
- public void enableReceiveTimeout(int rcvTimeout)
- UnsupportedCommOperationException 例外が発生する。
- public void setInputBufferSize(int size)
- public void setOutputBufferSize(int size)
- 指定されたインプットバッファ、アウトプットバッファのサイズは無
視される。
- javax.comm.SerialPort クラス
-
- public void setFlowControlMode(int flowcontrol)
- UnsupportedCommOperationException 例外が発生する。
- javax.comm.CommPortIdentifier クラス
-
- public synchronized CommPort open(String appname, int timeout)
- 引数の timeout 値は無視する。
- public void addPortOwnershipListener(CommPortOwnershipListener
listener)
- public void
removePortOwnershipListener(CommPortOwnershipListener listener)
- kaffe.util.NotImplemented エラーが発生する。
- javax.comm.SerialPort クラス
-
- public abstract void sendBreak(int millis)
- public void setRcvFifoTrigger(int trigger)
- public void setDTR(boolean dtr)
- public boolean isDTR()
- public void setRTS(boolean rts)
- public boolean isRTS()
- public boolean isCTS()
- public boolean isDSR()
- public boolean isRI()
- public boolean isCD()
- public void notifyOnOutputEmpty(boolean enable)
- public void notifyOnCTS(boolean enable)
- public void notifyOnDSR(boolean enable)
- public void notifyOnRingIndicator(boolean enable)
- public void notifyOnCarrierDetect(boolean enable)
- public void notifyOnOverrunError(boolean enable)
- public void notifyOnParityError(boolean enable)
- public void notifyOnFramingError(boolean enable)
- public void notifyOnBreakInterrupt(boolean enable)
- kaffe.util.NotImplemented エラーが発生する。
3. パッケージ全般の制限事項
- java.lang.ArithmeticExceptionクラス
- 整数値の除算にお
いて0除算の際にスローされるArithmeticExceptionのハンドリングに問題が
ある。例外をハンドリングできずにVMが終了してしまう。
- java.lang.Processクラス
- 子プロセスを起動できない。
- java.lang.Systemクラス
- System.out, System.err は
テキストモードでオープンされているため、以下の問題が発生する。
- "\n" を単体で出力すると "\r\n" に変換される。
- Ctrl-Z を出力するとストリームがクローズされ、それ以上出力でき
ない。
- java.lang.Threadクラス
- 以下のメソッドは中身が実装され
ていない。呼び出すと実行時エラーが発生する。
- public final void stop()
- public final synchronized void stop(Throwable o)
- public void destroy()
- public final void suspend()
- public final void resume()
- public void interrupt()
- java.lang.Classクラス
- privateなコンストラクタを持つクラス
に関してnewInstance()メソッドでインスタンス化できてしまう。
- java.lang.Doubleクラス、java.lang.Floatクラス
- 文字列
に変換するメソッドtoString() が固定桁数の文字列を返す。
- java.io.Fileクラス
- getCanonicalPath() メソッドが絶対
パスを返さない。
- java.io.DataInputStreamクラス
- readLine() メソッドが、空行
を EOF と勘違いする。
- java.net.ServerSocketクラス
- 同じポートを指定した
ServerSocket インスタンスが2つ以上作ることができてしまう。例外
BindException が発生しない。
- java.net.InetAddressクラス
- ローカルホストに関してホス
ト名を <unknown> 、IP アドレスを 127.0.0.1 として認識してしま
う。ネットワーク設定ファイル kp-net.pro に記述されたホスト名、IP ア
ドレスを返さない。
- java.io.ObjectInputStreamクラス
- 以下のメソッドを呼び
出すと kaffe.util.Notimpleted エラーが発生する。
- public int available() throws IOException
- public String readLine() throws IOException
- public synchronized void
registerValidation(ObjectInputValidation obj, int prio) throws
NotActiveException, InvalidObjectException
- public int skipBytes(int count) throws IOException
- java.io.ObjectStreamClassクラス
- 以下のメソッドが実装
されていない。実行時に呼び出すと NoSuchMethodError が発生する。
- public long getSerialVersionUID()
- java.util.GregorianCalenarクラス
- 以下のメソッドを呼び
出すと kaffe.util.Notimpleted エラーが発生する。
- public void add(int field, int amount)
- java.text.BreakIteratorクラス
- すべてのメソッドが実装
されておらず、空のクラスになっている。
- java.text.ChoiceFormatクラス
- 以下のメソッドに不具合が
あり、うまく動作しない。
- public void applyPattern(String patt)
- java.text.Collatorクラス
- ロケール情報が用意されていな
いため、インスタンスを作成できない。
- java.text.MessageFormatクラス
- 以下のメソッドを呼び出
すと kaffe.util.Notimpleted エラーが発生する。
- public Object[] parse(String str, ParsePosition pos)
- public String toPattern()