JavaEEのブログといいつつ、JavaEEについて全然書いていませんでした・・・
ちょっとJavaEEについて書かせていただきます。
Contents
そもそもJavaとは?
Javaの定義
Javaというのは一般的にはプログラミング言語として知られていますが、厳密にはJavaとはプログラミング言語というよりは実行環境全体を指します。
Javaの特徴としてどのような環境でも動作するということがいわれています。Write once, run anywhere” (「一度(プログラムを)書けば、どこでも実行できる」)なんて言葉が有名ではないでしょうか。
プラットフォーム(作業環境全般:OSや各種端末のこと)上にJVMという仮想マシンを構築し、その仮想マシンがプラットフォームの差異性を吸収するため、どのマシン(OSや各種端末)でも動きます。エミュレーターみたいなもんだと解釈しています。
Cのように直接コンパイルするのではなくクラスファイルといわれる中間ファイルを生成し、これを仮想マシン上で実行させます。またオブジェクト指向だということも大きな特徴のひとつです。
JavaSEというと一般的には下記のような仕様郡の集合体として定義されます。
- 基本のライブラリ郡
- コレクション
- JDBC
またJavaのメリットデメリットについても簡単に記させていただきます。
メリット&デメリット
メリット
- どのOSや端末でも動くため、非常に汎用的
- ライブラリが豊富で歴史も長いため、大抵のことは実現できる
- スクリプト系に比べると速度が速い
- 求人が多い、単価が高め
- 使用人口が多いため、ネットで情報が入りやすい
下2つは言語の特徴ではないですが、実際にプログラミングを覚える上で必要な条件ですので、かかせていただきました。
デメリット
- 環境構築や各種設定がメンドイ(IDEを使うことがほぼ必須)
- スクリプト系に比べるとコードが冗長になる
- 上記理由から学習コストが比較的高い
などでしょうか。
JavaEEとは
上記メリットでも書かせていただきましたが、Javaといっても範囲は非常に幅広く、やっていることは人によってまちまちだと思います。やっていること別に大別すると
- デスクトップ,AndroidなどのGUI系のアプリ
- バッチ系などマシン内部で動くもの
- WEB系
などでしょうか。
もちろん上記は大雑把に分けた分類でして、それぞれのカテゴリ内でももっといろいろと分類されると思います。
JavaEEはサーバサイドJava
この中でJavaEEは主にWEB系で使われる技術の総称です。JavaEEのEEはEnterpriseEditionですので、企業で使われるJavaの大まかな仕様群ということになります。またサーバサイドで使われる技術が多く、JavaEE≒サーバサイドと考えて問題ないかと思います。
JSP&サーブレット
JavaEEのなかで最も有名な技術問有名なところで言えばJSP&サーブレットではないでしょうか。
これらは主にJavaのプレゼンテーション層(画面の生成や制御)の構成を担うライブラリ群です。
スタンダードな技術であることから歴史も古く、情報も出てきやすいため初心者の学習には最適だと思います。
様々なフレームワークの乱立
元々JavaでWebといえばサーブレット&JSPという技術が一般的で、これをベースにしたいろいろなライブラリ郡が乱立していたようです。
有名なところでは
- JSF(Java Server Facss)
- JSTL(JSP Standard Tag Library)
- EJB(Enterprise JavaBeans)
- JTA(Java Persistent API)
- JDBCExtention
- JavaMail
など様々なライブラリ郡があるため、これらを組み合わせて使用することでさまざまな実装をすることができます。
そのほかにもこれらのライブラリ郡をまとめたフレームワークとしてStrutsやSpringなどがあります。
ちなみに私がたずさわっているのは下記の技術です。
JSF
コントローラー+テンプレート部分のような感じでリクエストをうけとり、レンダリングをする一連の動きを行います。
EJB
リクエストを受け取って値を返すまでのビジネスロジック処理を行うところ。いわゆるモデル部分です。
JPA
データベースをJavaのオブジェクトで定義するライブラリです。
現状だととくにJPAが難しいですね。
JVM,JRE,JDKなどについて
JVM(Java Virtual Machine)・・Javaで作成されたアプリケーションをWindowsやMacなどで動かす仮想マシン。エミュレーターみたいなもんでしょうか?
JRE(Java Runtime Environmnet)・・Javaのプログラムを動かすためのセット(最低限の動きを提供するためのパッケージ?)
JDK(Java Development Kit)・・Javaの開発や実行を行うためのプログラムの開発全般。Javaをインストールする場合、このJDKをインストールすることが一般的のようです。
以下のページの概念図が一番わかりやすいですね。