skillup

技術ブログ

Java

JavaEEとは?

投稿日:

JavaEEのブログといいつつ、JavaEEについて全然書いていませんでした・・・
ちょっとJavaEEについて書かせていただきます。

そもそも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が難しいですね。

-Java
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

URLパターンマッピング

JavaEEではURLのマッピングについて結構悩んだんですが、サーブレットは案外簡単ですね。 web.xmlで設定することもできるようですが、アノテーションで設定することもできるようです。 例えば s …

no image

Javaでのスクレイピング

スクレイピングというと一般的にはRubyが一番有名なようですが、もちろんスクレイピング自体はどの言語でも行うことができます。 Contents1 スクレイピングの手法1.1 正規表現1.2 HTMLパ …

no image

mavenのリモートリポジトリについて

JPAでO/Rマッパーに慣れてからというもの通常のSQLをごりごり書くのが億劫になってきました。 億劫というかいろいろとリスクがありますね。 問題点としてはコンパイルするときにエラーが検知できなかった …

no image

DBUtils活用 その2

以前DBUtilsの活用を書きましたが、他の使い方がわかったのでメモ 以前はSelectでList<エンティティ>を取得したのですが、List<Map>でも取得できます。 ソー …

no image

GlassFishとTomcatの違い

JavaEEの開発を始めてからは基本的にサーバーとしてGlassFishを使っています。 一般的なJavaのサーバーというとTomcatが有名ではないでしょうか。少なくとも私はTomcatしか知りませ …