Javaの世界

1.Javaの生い立ち

2.Javaブームの理由

3.ブームの裏の問題点

4.Java環境の概要

5.主なJava開発ツール

6.Javaプログラミングの実際

7.JDBC APIの使い方 (2001.02.22追記)


1.Javaの生い立ち

 Javaは1995年にSun Microsystems社が発表したネットワークを強く、意識したオブジェクト指向プログラミング言語です。文法的にはC++と似ており、その 長所を取り入れ短所を取り除く形で開発生産性の向上を図っています。
 Javaは当初ブラウザであるHotjava上で動いていたアプレットと呼ばれるプログラムで注目されたこともあり、ブラウザ上コンテンツを装飾するクライアントサイドの技術として認識されましたが、実際にはブラウザ上に限定されない完全なプログラミング言語であり、しかもマルチプラットフォーム(詳細について後述)稼働をサポートする言語として一躍桧舞台に立っています。
 Javaほど短期間に技術が進展し且つ人々に受け入れられてきたプログラミング言語は過去にありませんでした。98年12月にSun Microsystems社が発表したJava2で多少は落ち着くのかも知れませんがそれまでの3年間の飛躍・進展には目を見張るものがあります。


2.Javaブームの理由(その優位性)

1.マルチプラットフォーム

 Javaが短期間で受け入れられた最も大きな理由がこれと考えられます。具体的には例えばUNIXで開発しコンパイルしたものがMACでもWindowsでも動くという事です。生産効率の飛躍的向上をもたらすものと言えます。これはコンパイルした バイトコードと言われる生成物がそれぞれのプラットフォーム上のJVM (Java Virtual Machine)で稼働する事で実現されています。

2.ネットワーク対応

 当初のJavaがブラウザ(Hotjava)上で動くアニメーションで注目を集めた事は良く知られた話です。これはアプレットと呼ばれるプログラムがサーバーから転送されてブラウザ上のJVMで動くものです。現在のインターネット時代に対応した技術と言えます。又イントラネット環境でもプログラム資産の集中管理を可能にする技術として注目されています。

3.強固なセキュリティ

 前記のネットワーク対応を可能としているのがこの強固なセキュリティです。最近WORDのマクロを利用したウィルスの話などが絶えませんが、Javaは予めガードが固い事もあり、そうした報告は殆どありません。主要セキュ リティを下に記します。
−Appletからブラウザマシン上のファィルへのアクセス禁止
−Appletが通信をおこなうのは送信ホストのみ
−Appletからブラウザマシン上の他のアプリケーションを起動することは出来ない。

4.ガーベージコレクション機能

ガーベージコレクションつまりメモリー自動解放機能がJavaにはあります。これにより従来C言語などではプログラマ自らが行なっていたメモリ割当て・解放などはJava側が自動的に行なってくれることとなりました。

5.ポインタ排除等で生産性向上

 C言語でお馴染みのポインタですが、プログラムのデバッギングを 難しくしている主要原因としても有名です。Javaではポインタが無くなる事のデメリットよりもデバッグ効率の向上に主眼を置いてポインタそのものを採用しませんでした。ポインタを利用していたコーディングについては別のアルゴリズムでの対応が必要となります。


3.ブームの裏の問題点

1.遅い・メモリを食う

 メモリについてはお手上げです。新しいPCであれば64MB搭載は当たり前の時代ですので問題はありません。しかし古いPCや組込み機器となるとどうしようもありません。組込み用のJavaが実はJavaのサブセットであるのは肯けます。
 遅い現実も300MHz以上のCPUであればかなり改善されていますし、JITコンパイラなどの新技術で改善されつつあります。

2.バージョン問題

 折角マルチプラットフォームが長所と謳われているのにJavaの内部でバージョン問題が出ています。これはJava自身が過渡期の言語であり技術の進展がなくなるまで続きます。Java2(旧JDK1.2)の出現で少しは落着きそうですが未だ時間は掛かりそうです。前記のメモリ問題があるのでJava2へ移れない環境では問題が解決しません。具体的にはJDKの新しいバージョンで作られたアプレットがJDKの古いものに対応したJVMしか搭載していないブラウザ上で稼働させようとした場合などに現れます。


4.Java環境の概要

HotJava Browser

Sun Microsystems社がフリーで提供するWebブラウザ。すべてJavaで記述されています。
http://java.sun.com/products/hotjava/index.html/

Applet

単体で動くJavaプログラムをJava applicationと呼ぶ一方Webブラウザ上でサーバーから転送されて実行されるJavaプログラムをJava appletと呼びます。

Java Servlet

サーバー側で動くJavaプログラムのうちJava Servlet API を利用しているもの。サーバーサイドのアプレットの意でこの呼称が用いられています。

http://www.javasoft.com/products/java-server/servlets/index.html/

JRE Java Runtime Environment

Sun Microsystems社がフリーで提供するJava実行環境。

JDK Java Development Kit

Sun Microsystems社がフリーで提供するJava開発環境。JDKのバージョンが事実上のJavaバージョンとなっています。現在はJDK1.2改めJava2と呼称が変更になりました。


5.主なJava開発ツール

Visual Cafe3.0

 Symantec社のJava開発環境。最も人気がありシェアも大きい。先行した事がその理由だが、最近は他社に追い上げられつつ、シェアを維持している。企業ベースの利用では後述のPowerJなどライバルが強いが、個人ユースでの人気は衰えない。Sun社自身がJDKにSymantec社のJITコンパイラを採用するなど、その関係も良好であり、今後とも開発ツールの先頭を行く商品と考えられます。

Visual Age for Java

 IBM社の提供するJava開発環境。for Javaの名称が暗示するようにVisual Ageは幾つかの言語に対応しており、Javaはその中の一つという位置付けである。しかしIBM社程Javaをビジネスとの連動でうまくやっているところもなく、メインフレームユーザへの取込みに成 功しています。

JBuilder2

 Inprise社のJava開発環境。同社はつい先日までBorland社と名乗っていた。あの有名なTurboCやBorlandCの開発元です。JBuilderはC++BuilderやDelphiといった同社商品と同じ系列に属する商品で、同社開発環境に馴染んでいる者にとっては捨て難い商品です。CORBAやBeanへの対応にも進んでいるところがあり、検討に値する商品と思われます。

PowerJ2.5

 PowerSoft社(国内はアシスト社)提供の開発環境。29.8万円の版だけであり、完全にエンタープライズターゲットの商品。それ故にCORBAの対応やRADの完成度など秀でた面が少なくないようですが、出ている本数も少ないようで、利用に関する情報も殆ど入手出来ません。

Visual J++6.0

 Microsoft社の開発環境。この前のJ++2.0から突然6.0バージョンに上がった。J++2.0の頃はRAD環境で他社に見劣りしていたためこの6.0に期待するところは大きい。しかしながらSun社とMS社のJavaを巡る一連の訴訟の問題もあり、他社製品のように簡単に推奨する事は難しい。Windows環境に限定して利用するのであれば問題はないものの、マルチ プラットフォームを前提とした開発をするのであれば、今少し訴訟とその回りの環境が落着くまで同製品を保留しておいても良いのではないだろうか?



6.Javaプログラミングの実際

(1) JDKの種類

 上の項番5で幾つかの開発ツールを紹介していますが、ozawaとしては先ずJDKでの開発を推奨します。Sun社純正でベンダー独自のクラスファイルが入る事なく、クロスプラットフォームの開発が可能です。JDKは同社のサイトからダウンロード出来ますが容量も大きいので雑誌付録のCD等を入手される方が賢明です。Java2と呼ばれるJDK1.2のものと、それ以前のJDK1.1xが有りますが、Java2対応のブラウザが未だ無いので、取り敢えずはJDK1.1xで開発されるのが良いのではないでしょうか。

(2) classpath

 JDKをインストールした後注意すべき点はpathとclasspathです。JDKは32ビットアプリケーションですが、DOSプロンプト環境で使います。(windows系の場合) よってpathが繋がっていないと動きません。又、Java2以降では関係ないのですが、それ以前の場合はclasspathの設定が必要です。これはライブラリの設定をするもので例えば次のようにsetコマンドを用いて設定する他、引数で指定することも可能です。

set classpath={jdkhome}\lib\classes.zip;

(3) コンパイルと実行

 JDKの場合は各自のエディタでプログラムソースを作成します。ここで注意すべきはファイル名称とクラス名が一致している事、しかも大文字・小文字の区別がある事、更にはソースファイルの拡張子が.javaである点です。

---------- source sample -------------------

class Hello {
  public static void main(String args[]) {
    System.out.println("Hello!");
  }
}
--------------------------------------------

 例えば上のようなソースファイルを作成した場合ファイル名は Hello.javaとする必要があります。そしてコンパイルは、

javac Hello.java

とします。エラーが無ければ Hello.class のファイルが作成されています。実行は、

java Hello

とします。Hello!が表示されたでしょうか?




7.JDBC APIの使い方 (2001.02.22追記)

 さてJDBC (Java DataBase Connectivity)は、Java言語で書かれたプログラムからRDBを読み書きする際に使われるAPIです。既に多くのRDBベンダーはピュアJavaのタイプ4と言われるJDBCドライバーを提供済みであり、これらを使うことで各RDBをハンドリングするプログラムを容易に作成することが可能です。JDBCドライバーと書くとデバイス用のドライバーと同じような印象も受けますが、これらはJavaのクラスファイルであり、JARファイルやZIPファイルの形態で提供されます。例えばOracle用のJDK1.1対応のJDBCドライバーはclasses111.zipという名称のファイルで提供されています。

 2年程前の段階ではこのJDBCドライバーを利用したJavaプログラミングは先進的でした。ところが、SQL部分を文字列パラメタとして扱うJDBCのプログラミングよりもSQL自体をJavaの中に埋め込んでしまおうという発想でSQLJという技術も提唱され、既にOracleなどで実現化されています。以下はOracleでのJDBCの使い方の例です。

(1) 接続

try{

Class.forName("oracle.jdbc.driver.OracleDriver");
con = DriverManager.getConnection

("jdbc:oracle:thin:@nnn.nnn.nnn.nnn:1521:ORCL","scott","tiger");

} catch( Exception e ) {

e.printStackTrace();

}

注) nnn〜の所はIPアドレスです。

(2) SQL発行

try {

Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select * from emp");

} catch( Exception e ) {

e.printStackTrace();

}


前ページに戻る---> RETURN