Javaのお勉強 (3)
「Essential Java Classes」の勉強の続き。
- java.ioパッケージは入出力 ストリームを提供する。Character StreamとByte Streamがある。Character StreamではUnicodeが使える。Byte StreamはISO-Latin-1のみ。File, Pipe, Filter, Object Serializationなど。DataInputStreamなどが便利。
RandomAccessFileクラスを用いるとランダムアクセスが可能。
java.ioでは他にFile, FileDescripter, StreamTokenizer, FilenameFilterなどのクラスが使える。java.util.zipにはZipInputStream, ZipOutputStreamなど。 - プログラム起動時の初期設定などを扱うクラスにPropertiesがある。アプレットの場合はセキュリティ上の制約に注意。Applet Security FAQを参照。Propertiesの使用例としてBINGOの例題を参照。
コマンドラインの引数もStringアレイのargsで扱える。C, C++とは違ってプログラム名は渡されない。Stringからの型変換はInteger.parseInt(args[0])など。 - シ ステムリソースへのアクセスにはSystemクラスやRuntimeオブジェクトを用いるとプログラムがポータブルになる。Systemクラスは instantiateする必要は無く、直接使える。標準入出力変数としてSystem.in, System.out, System.errがあり、print, println, writeメソッドが使える。システムの環境はSystem.getProperty(name)で得られる。Propertiesオブジェクトで System.setProperties(object)を使ってシステム環境をそのプログラムの実行中だけ再定義することもできる。
Javaではオブジェクトを使用しなくなったらメモリ解放のため自動的にfinalizeされるが、明示的にfinalizeすることも可能。同様に明示的にGarbage Collectionをすることも可能。
プ ログラムのセキュリティ向上のためにSecurity Managerを定義することができる。プログラム中で定義できるのは1回のみ。System.getSecurityManager()で利用可能。 checkExit(), checkAccess()などでプログラムの終了やオブジェクト、スレッドへのアクセスをチェックすることができる。
その他、System.arraycopy(), System.currentTimeMillis()などが便利。System.exit(-1)はそのプログラムだけでなく、Java Runtime Environmentも終了させる。
RumtimeオブジェクトはJava VM, Java Interpreter, Host OSのインスタンス。それぞれの実装によって仕様が異なる。
