Java


プログラム言語

特徴

  • Sun Microsystemが開発し,1995年に発表
  • どんなプラットフォームでも稼動する
    • ネットワークを前提としたアプリケーションやモバイルでも動く
    • Once Write, Run Anywhere(一度作ったら,どこでも動く)
  • その他
    • プログラム自体の容量が少ない
    • 機能がシンプル

ファイルの種類

  • 通常
    • ソースファイルからコンパイラを使ってコンパイルを行う
    • 出来上がったファイルを実行するが,マシンに依存してしまう
  • クラスファイル
    • Javaでは,ソースファイル(.java)からコンパイルしたら「クラスファイル」にする
    • バイトコードで書かれた中間ファイル(.class)
    • これを,各マシンのJava仮想マシンで変換するので,どんな環境でも動く
  • バグ
    • プログラムの間違い
    • デバッガによって修正(デバッグ)する

言語の特徴

  • 従来のプログラミングは「手続き型プログラミング」
  • Javaなどは「オブジェクト指向プログラミング」

手続き型言語

  • C言語など
  • 手続きが主役
    • まず手続きの内容を示す
    • 示した手続きに対して最後にデータを与える

オブジェクト指向言語

  • Javaなど
  • データが主役
    • 1つ1つのオブジェクト単位のデータが別々に定義される(クラス)
    • データの中に手続きを含む
      • データ自身が手続きを実施する
  • メリット
    • プログラムが設計しやすい
      • 1つ1つの目的を設計し,結果をそのままプログラムに
    • 進んだ部品化
      • プログラムの使いまわしなどにより,効率が良い
    • 他人数での開発
      • 開発者ごとにどの機能を作成すべきか分かりやすい
    • 保守性
      • 手続きの詳細は隠して,オブジェクトの扱い方のみを公開すればよい
      • オブジェクト内の詳細が変わっても,使う人は意識しない

Java独特のしくみ

クラス

  • オブジェクトの内容を定義した型
    • Javaプログラムは最低でも1つのクラスが存在する必要がある
  • 2つの要素(メンバ)
    • フィールド
      • データを表す変数
    • メソッド
      • クラス内で行う処理を定義した部分
        class (クラス名){(フィールドやメソッド,コンストラクタ)}
  • インスタンス
    • クラスを基に形にしたもの
      • クラスの内容はただの設計図(実体が無い)
    • インスタンスにしてしまえば,クラスの中のメンバやメソッドだけでも使える
  • コンストラクタ
    • インスタンスを使うときのフィールドの初期値
      • 初めは何も設定されてない
    • インスタンスを生成するときに自動的に呼び出されて実行されるメソッド
    • 他にも色々な仕組みがある

継承

  • 他のクラスをフィールドとメソッドごと自分のクラスに取り込むこと
    • スーパークラス:継承元
    • サブクラス:継承先
      class (サブクラス) extends (スーパークラス){・・・}

抽象クラス

  • よく使うフィールドやメソッドだけを書いたクラス
    • 同じ事を書かなくてもそのクラスを継承するだけで良くなる
  • 処理などの細かい事は定義しないで,他のクラスのスーパークラスになる為だけのクラス
  • 特徴
    • インスタンスを作ることが出来ない
    • 中傷クラスのメソッドは定義し直さなきゃいけない
  • バグを防ぐ
    • 継承させる必要な部分だけを定義する
      • 継承先でオーバーライトして定義しなおす(実装)
      • 具体的な処理内容の無い「抽象メソッド」を作る
      • 実装しなかったらエラーが出る
        abstract class (抽象クラス){
               abstract (抽象メソッド)
        }

インタフェース

  • 抽象クラスの考え方をさらに広げたもの
    • 全てのメソッドが抽象メソッド
      • 全てのメソッドを実装(オーバーライト)する必要がある
        interface (インタフェース名){・・・}
class (クラス名) implements (インタフェース名(複数可)){・・・}
  • 継承との違い
    • 複数のインタフェースが選択出来る
      • 全て抽象メソッドなので,そのクラスで定義し直すから
      • 継承だと,抽象メソッド以外の同じ名前のメソッドがあったらどっちか分からない
  • インタフェースを継承で作る場合
    • 全て抽象メソッドでなければならない
      • インタフェースのみで継承でき,複数指定が可能
      • ただし,フィールドは抽象ではないので同じ名前はだめ

開発環境

  • JDK*1
    • プログラム作成のための開発キット

J2SE*2

  • 主にデスクトップで動かすような一般的なプログラムを開発する用

J2EE*3

  • ビジネス目的でも使用可能
    • 信頼性も高く,相互運用性に優れたプログラミングが出来る
    • Webサービスもサポート

J2ME*4

  • 携帯電話等の小型端末で稼動するプログラムを作成する用
    • デバイス専用のツールなどが含まれる

統合開発環境IDE*5

  • プログラム開発に関する一連の作業を視覚的な操作で統合して行える
  • 種類
    • Eclipse
      • オープンソースプロジェクト
    • Sun Java Studio
      • Sun Microsystems
    • JBuilder
      • Borland

プログラムの種類

Javaアプレット

  • 小さなアプリケーション
    • HTMLファイル上で指定するとサーバからダウンロードされる
    • Webブラウザ上で実行される
  • 基本的にファイルの読み書きや実行が制限されている

Javaサーブレット

  • Webサーバ上で稼動するプログラム
    • サーブレットの処理結果がWebページとしてクライアントマシンに返される

JSP*6

  • 断片的なJavaのコードが埋め込まれたWebページ
    • サーバ上でサーブレットに変換されて処理される
  • JavaなのでWebサーバのシステムに依存せずに動作する

JavaBeans

  • 統合開発環境などで視覚的に利用できる部品(Beans)として利用する

*1 Java Development Kit
*2 Java2 Platform Standard Edition
*3 Java2 Platform Enterprise Edition
*4 Java2 Platform Micro Edition
*5 Integrated Development Environment
*6 Java Server Pages