KaffePC 制限事項

現在判明している KaffePC の制限事項の一覧を以下に示します。



1. java.net パッケージ機能制限

1.1 概要

1.2 インスタンス生成の制限

java.net パッケージに存在する非抽象クラスのうち、インスタンス生成可能 なクラスを以下に列挙する。 以下の非抽象クラスは、インスタンス生成時に例外が発生する。

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 概要

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()