skillup

技術ブログ

Java

JavaEEとは?

投稿日:2015年4月6日 更新日:

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

JVM,JRE,JDKなどについて

JVM(Java Virtual Machine)・・Javaで作成されたアプリケーションをWindowsやMacなどで動かす仮想マシン。エミュレーターみたいなもんでしょうか?

JRE(Java Runtime Environmnet)・・Javaのプログラムを動かすためのセット(最低限の動きを提供するためのパッケージ?)

JDK(Java Development Kit)・・Javaの開発や実行を行うためのプログラムの開発全般。Javaをインストールする場合、このJDKをインストールすることが一般的のようです。

以下のページの概念図が一番わかりやすいですね。

Java SEとJDK、JRE、JVMの違いに関する解説

-Java
-

執筆者:


comment

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

関連記事

no image

Streamでの特定条件化のカウント&合計値算出

Java8、streamで値を抽出し、カウントと合計値の算出について、小ネタです。 一番多いのがList<Map>タイプの値の検出です。 [crayon-641dca4134c0d3621 …

no image

jenkins構築

いままでjenkinsについての記事を書いていなかったので記録しておこうと思います。 Contents1 前提条件2 jenkins構築3 設定ファイル変更(ポート&URL変更)4 セキュリティ有効化 …

no image

JAXRSによるRESTAPI作成方法

業務でJavaによりWEBAPI(Rsetful API)を作成する機会ががあったのでちょっとメモしておきます。 Contents1 RestAPIとは2 プログラムの作成方法について RestAPI …

no image

arquillianでのリソースファイル読み込み

以前、このエントリーでarquillianからライブラリが利用できず、追加のライブラリを導入した、ということを書きました。 実はリソースファイルもそのままですとarquillianからは使用できません …

no image

JSFとManagedBeanがバインドされない

JSFとmanagedBeanはEL式.プロパティでバインドできますが、専用のタグを使わないとバインドされません。 managedBeanでtestというフィールドがあった場合、 JSF側で [cra …

アーカイブ