Java 2 について(講釈)メモ(2002/11/30) 
 

■Javaとは?

狭義ではプログラム言語Javaを指し、広義ではJava開発環境全体を指します。
1995年に米Sun Microsystem(サン・マイクロシステム)が、始めに家電製品専用に開発(考慮)した言語プログラムという事は、あまり知られていない事実。

何故ここまで普及したかと言うと、セキュリティを重視したオブジェクト指向によるプログラミングと、ハードウエア(OSも含み)による依存を一切受けない共通プラットフォームからなる環境であるから。
※蛇足だが、ジャバの正確な綴りは「Java」と書くらしい。

1998 年 12 月、Sun は、これまで JDK 1.2 と呼ばれていた製品を、そのリリースに合わせて「Java 2」という名称で発表しました。ここでは、Sun が提供する特定の技術に、新たな「Java 2」ブランドを適用した理由を説明します。特に、かつて「JDK」と呼ばれ、現在では JavaTM 2 Platform, Standard Edition と呼ばれるコアプラットフォームに重点を置きます。ここで説明する構造は、今後登場する JavaTM 2 Platform, Enterprise Edition (以前「Project JPE」と呼ばれていたもの) にも適用できるらしいです。 

■統合開発環境(IDE)

J2SDK を使用し統合的に開発する環境として、IDE(Integrated Development Environment : 統合環境)ツールがあります。感覚として Microsoft の Visual Stdio系(現在は .net)の開発環境に似ていて非常に便利に開発することができます。

  Borland JBuilder

  Sun One Studio  (Sun Open Net Enviroment)

  VisualAge for Java

■その他の統合開発環境

Intel(x86/Itanium)マシンならばSunのものが使えますので適宜利用します。
また、Intelのx86ならば,BlackdownバージョンやIBMバージョンも利用可能です。
さらにBorland社のKylixを利用することもできます。これは統合開発環境の一つです。統合開発環境としてはeclipseも利用可能です。これはSunやIBMのキットと組み合わせて用います。
AlphaのマシンならばCompaq(HP)のものを利用して下さい。

■Javaの開発環境

Java(Java 2)を開発する環境として、サン・マイクロシステムが提唱している下記の3つの環境が存在します。

・J2SE : Java 2 Platform, Standard Edition (J2SETM)
  Java2の中核的な開発環境であり、実質的な Java 2 SDK環境である。
  その開発環境の中には、ツール、ランタイム、およびJavaプログラミング言語のアプレットとアプリケーションを書くことができ、また開発者のためのAPIが充実していることが挙げられる。
  またこの中には、Java開発キットリリース 1.1 および、Javaランタイム環境1.1が含まれます。

・J2EE : Java 2 Technology, Enterprise Edition (J2EETM)
  その名の通り、J2SE を含む Java2の最高峰の統合開発環境です。
  J2SE との決定的な違いは、セッションの管理、トランザクション管理、メール送信、CORBAやメッセージングによる既存システムとの連携、負荷分散、可用性の確保、といった大規模サービスに必要なサービスが標準で実装されていること。
  これにより、アプリケーション開発者が上記の考慮を1から作成する必要がなく開発効率、システム実装が飛躍的に上がり開発コストが抑えられるという点が挙げられる。
  ※一説には、1/20のコスト削減と言うが・・・・

・J2ME : Java 2 Platform, Micro Edition(J2METM)
  一番ちっちゃい Java 君(笑)、ってことです。
  これは、携帯電話、動画電話(FOMA)、セットトップ・ボックスおよび、自動車ナビゲーション・システム、etc・・・用に高度に最適化されたランタイム環境。
  ※サン・マイクロシステムの最終目標である、コンシューマ製品(家電製品)に、使われることことを差します。(これで結構もうけているらしい)

■その他の用語

・JSP(Java Server Page)
  静的なHTMLの中にJavaのコードを埋め込むことにより、動的なHTML作成することができます。このJSPで書かれた部分のJava記述は、サーバで一回だけコンパイルされますが以降はサーバメモリ上で動作するため効率良く動作します(但し、一回目は異様に遅いです)。 

・Servlet
  JSPもしくは、Webブラウザからの要求を受けて動作しますが、一見するとCGIと変わりがありません。実は、この Servlet から後記するEJBなどのビジネスロジックを使用することにより、今まででは考えつかない程の開発効率の削減をすることができます。但し、これには落とし穴があって単純なビジネスロジックだけであり、個々の要求を完全に満たすことはできないのです、そこで自前のEJBを作成するのですが・・・・・。結局、OSに近い言語では無いため苦労するのです。

・EJB(Enterprise Java Beans)
  乱暴に言ってしまえば、再利用可能なライブラリ郡の集まりですが、その定義として「サーバアプリケーション開発者に対してデータベース管理、セッション管理、トランザクション管理、セキュリティ管理などの低レベルなインタフェースを隠蔽し、ビジネスロジックを簡単に実現できる」と謳っています。このビジネスロジックの中には、ベンダ固有のAPIや、独自のAPIも含まれ、単にBean化するというと業務処理の部品化/共通化という事を指すそうです。
 EJB化するには、その規約に従いプログラムロジックを記述する必要があります。また、EJBの中(利用のされ方)には、以下の3つの種類があるそうです。EJBに関する最新情報は、「EJBコンソーシアム」にて参照することができます。

・Session EJB(Session Bean)
  ビジネスロジックをコンポーネント化します。関数の呼び出し単位やWebサイトの接続を保持するセッション単位での利用ができます。

・Entity EJB(Entity Bean)
  データベースのテーブルごとに作成されます。実際のデータとデータに依存するロジックを実装します。

・Message Driven EJB(Message Driven Bean)
  メッセージを受け取って動作を行うことが目的のコンポーネントです。主にJMS(Java Messaging Service)からのメッセージを受け取って動作します。

・awt Abstract Windows Toolkit
  Java環境ユーザーインターフェースに関するクラスが集まっているパッケージ。
  Java JDKに付属しているが、それぞれのOSのユーザインターフェースを利用しているため、共通的要素が少ない。

・JavaScript
  Visual Basic の様にインタープリタ処理された簡易言語。
  Java言語の体系を採用しており、Webページ(ホームページ)を制御するためのプログラミング言語であるが、あえて簡単という意味合いでスクリプト言語と言われます。

・JDBC(Java Database Connectivity)
 
Javaアプリケーションからデータベースを操作する共通APIのことです。JDKのコアAPIとしてjava.sqlパッケージに実装されています。JDBCを使用することにより、データベースサーバが変更された場合でも、プログラムの修正を一切行わなくてもよいというメリットがあります。

・JAR or WAR
  Javaアプリケーションのパッケージ方法の名称。詳しくは、JAR or WAR を参照のこと。

■サン・マイクロシステムの策略

企業であるから利益優先ではあるが、Javaを普及させるためにマイクロソフトに無償でJavaの技術協力をしておきながら、一転して訴訟を起こし大々的に Javaの名前を広めた事はあまりにも有名な話。
この他にも、小細工を色々しているが結局、マイクロソフトが敗訴してしまったのでJavaについては、実質的にサン・マイクロシステムが主導権を握っている。
http://cnet.sphere.ne.jp/Enterprise/News/2002/Item/020311-3.html
※個人的には、あまり賛同できないやりかたである。