・   「Java入門」実習 第8回

Javaのシステムとオブジェクト

java.lang,java.lang.reflect,java.lang.ref パッケージの機能を用いて、 Javaのシステムやオブジェクトをコントロールするサンプルを紹介します。


・ 基本課題1:「クラスの情報の取得」

  1. ソースファイル MemberInfo.java (教科書 P151-3)を作成しなさい。
  2. コンパイルできたら、たとえば次のようにして実行し、結果を確認しなさい。

    java  MemberInfo  MemberInfo
    java  MemberInfo  java.awt.Color

・ 基本課題2:「GCとオブジェクトの消滅」

  1. ソースファイル WeakRefTest.java (教科書 P.155-6)を作成しなさい。
  2. コンパイルして実行し、結果を確認しなさい。

・ 基本課題3:「システムの環境の情報の取得」

  1. ソースファイル PrintEnv.java (教科書 P.158)を作成しなさい。
  2. コンパイルできたら、たとえば次のようにして実行し、結果を確認しなさい。

    java  PrintEnv
    java  -Dmyprops.city="Wakkanai"  PrintEnv

・ 基本課題4:「システムの機能の呼び出し」

  1. ソースファイル Exec.java (教科書 P.166-7)を作成しなさい。
  2. コンパイルできたら、たとえば次のようにして実行し、結果を確認しなさい。 (例は UNIXの場合。Windowsの場合は、適当なアプリケーションやバッチファイル の名前を指定してみてください。)

    java  Exec  date
    java  Exec  ls  -l


・ レポート課題:
ここまでの課題が終わった人は、下記の項目を tatsuo宛のメール で報告しなさい。(Subjectは java8)

  1. 課題1:のプログラム(MemberInfo)を用いて、java.lang.reflect.Member クラスがどんなメンバーを持つか調べなさい。
  2. 課題3:のプログラム(PrintEnv)を用いて、 以下のプロパティがどんな値を持っていたか調べなさい。

・ 応用課題1:「メモリの管理」
JDK1.2では通常の GCの管理とは別に独自にメモリを確保したり解放したり する機能が拡張されています。(ただし、この機能を利用する場合には プログラマがメモリの管理の責任を負うことになります。)

  1. ソースファイル MemoryCheck.java (教科書 P.160-1)を作成しなさい。
  2. コンパイルして実行し、結果を確認しなさい。 (メモリの確保と解放を無限に繰り返すので、適当なところで 強制的に終了させてください。)

・ 応用課題2:「Javaのコマンドを受け付けるシェル」

  1. ソースファイル JShell.java (教科書 P.163-5)を作成しなさい。 (教科書では説明の都合で分割していますが、 単独のファイルにしてください。)
  2. コンパイルできたら、実行してみましょう。 下記のように対話的にJavaのプログラムを実行することができます。 (JVMのロードの手間がなくなり起動が速くなります。試してみてください。)

    java  JShell
    >> RefTest
    >> PrintEnv
    >> Exec  cal


実習の目次   今週の講義の内容