【JavaEE6】JavaEEってなんだ。 | 宰予の昼寝。

宰予の昼寝。

気の向くまま。
生業:システムエンジニア
知識傾向:東洋史

読書備忘。新テーマです。


---------------

■経緯のはなし

会社の先輩と同期と勉強会をやっています。

今年度下期のテーマを私が出すことになり、苦し紛れに

『JavaEEだけ(StrutsやiBatisやSpringを使わない)でアプリケーションフレームワークをつくろう』

と提案したのが、このテーマを立てることになったきっかけです。


仕事(BtoBの新規システム開発をやってます)では、Spring、iBatis(とSwing)を使ってるのだけれども、

どうやら、JavaEEだけでDIもORMもできる、らしい、ということをその先輩と同期に聞いたので、

当方、調べて、先月簡単なプレゼンをしました。

さあ、じゃぁ次は実際つくるぞ、となるわけですが、素地がないので、またまなび。


ここには、その備忘を書いていくつもりです。

なるべく誠実に書くつもりですが、力量不足からくる記事の正確性の欠如等は

ご容赦ください。


---------------

■ネタ本のはなし

しばらく、

ここ

▼ThinkIT様

http://thinkit.co.jp/book/2010/01/08/619

やここ

▼CodeZine様

http://codezine.jp/article/corner/409

を見ていたのですが、情報がたりません。


これがいい、というので、先週の日曜日に買ってきました。

(そして即日、章ごとに切り裂いて、ホッチキスで14分冊にしました。)

▼Bignning JavaEE6(翔泳社)

http://books.shoeisha.co.jp/book/b92647.html


会社の行き帰りに読んで、かえって時間があれば、このブログを書こうと思います。

しばらく、三国志の読書はお休み。

代わりに(?)こんなのを毎日2頁読んでます。

▼ヒルティ『眠られぬ夜のために』

http://www.iwanami.co.jp/cgi-bin/isearch?isbn=ISBN4-00-336381-S


---------------

■JavaEEてなんだ

「エンタープライズアプリケーション開発のために必要な機能をまとめた一連の仕様」

「仕様」なんですね。

「仕様」。国語辞典を引いてもピンとこないので、自分なりに超訳すると、


仕様=外部からの入力に対し、どのような出力をするか定めたもの(内部構造はとわない)。


というところでしょうか。


具体的にJavaEE6では約30の仕様がJSR(Java Specification Request)として内含されています。


それでは「エンタープライズアプリケーション開発のために必要な機能」てなんだ。

以下、JavaEE6の新機能・キーワードとともに考えてみようと思います。


--------------

■データの永続化=データベースアクセス

□キーワード:JPA(Java Persistence API)


誰かが、今のエンタープライズアプリケーションの大部分は、

「DB周りにぺっとGUIはっただけの代物」などと

言っていましたが、確かにそんな気もします。


そういう意味で、データ永続化はエンタープライズアプリケーション開発で必須。

しかしながら、RDBとオブジェクトを操作するJavaではデータを取り扱う考え方が違うため、

その間をつなぐ必要があります。

その間をつなぐのがORM(Object Relation Mapping)という考え方。

JavaEE6では、JPAを、ORMの標準APIにしています。

※ちなみに私の今の仕事ではiBatisをつかってます。


--------------

■トランザクション管理

□キーワード:JTA(JavaTransactionAPI)


データ永続化に関連しますが、データは一貫性を保持するため、ひとつのまとまりで

更新・削除・登録をおこなわねばなりません。

そのひとまとまりがトランザクションであり、その管理をするのがJTA(らしい)。

※今の仕事ではSpringでトランザクション境界を設定しているのですが、

  これも、標準でできるようです。


--------------

■依存性注入(DI:Dependency Injection)

うまく説明できませんが。おいおい。

Springでできてたところが標準仕様になったらしい。


--------------

■ユーザーインターフェイス

□JSF(JavaSeverFaces)

JSPに代わる、プレゼンテーション層の仕様のようです。

いまSwingなのですが、ぽとぺたとかできるツールあるのかな…。


こう書いてみて、とても書ききれないことに気付いて……。

その、じつはEJBってよく分かってないのですが、これを機会に勉強したいと思います。

『Bignning』の柱はJPA・EJB・JSF・別システムとの相互連携(Webサービスなど)の4本。

まず、JPA・EJB・JSFの3本をざっと通覧しようと思います。


-------------

■閑話。(Javaと周王朝)

Javaの標準化史をみて、中国史に似てると思ったりしました。

とくに、いろんなフレームワーク(Spring・Struts・Hibernate etc)ができて、

それが標準仕様に取り込まれるあたり。

Strutsは袁紹であり、Springは曹操であり、Hibernateは孫権であり、標準仕様JSRは献帝?


むしろ、春秋時代っぽく、まず力をつけ覇を争うのは諸侯(さまざまなFW)で

最終的に勝ち残ったSpring桓公が、JSR周王朝を擁して、それが権威を持つ、みたいな。


封建制というゆるい支配体制をもつ周王朝が700年続いたように、

仕様として提示されるというゆるい紐帯で結びつくJavaも今後長く続いていくのだろうか。


そんな閑話で、第1回は終了いたしたく候。