祝! Java EE 7リリース

Java EE 7が遂に出た。実に目出度い話である。

EEとはEnterprise Editionである。つまり「企業版」である。企業システムに携わらない方にはなんのこっちゃら分からん話の可能性大である。

Screen Shot 2013-06-12 at 21.33.18

Java EEの歴史は混乱の歴史でもあるが、出てもう13年にもなるのでさすがに記憶が曖昧になってきた。忘れないうちに憶えている分だけメモっておきたい。

EE以前はWeb側がApache JServのServletとかNetscape Application Server (NAS)、サーバーサイドはWebLogic のEJB (一時期Tengahって名前だった)が主流ぽいけど、結局なんかよくわからん仕様がゴロゴロ出てきて、MicrosoftもIISでJava動かす荒技(もはや名前すら覚えていない)とかまあ、今のNoSQLみたいな状況であった。移植性? ゼロに決まってるじゃん、という。これはさすがに嫌だった。正直嫌だった。

最初のJava EE、当時はリリース直前に”Java 2 Platform”とかトチ狂った事を言い始めたどこぞのSunという会社がそれの企業版、ということで”Java 2 Platform, Enterprise Edition”つまりJ2EEという、Core 2 Duoみたいな醜い名前で登場した。しかもバージョン1.2。Java 2の2じゃないのかよ、という突っ込みは至る所で誰もが言っていた。このちょい前にJ2EEがProjectナンチャラって名前の頃、呉越同舟の同盟関係だったはずのMicrosoftを訴訟で追い出すというアホな事もしでかして、ついでに100% Pure Javaとかオレンジジュースみたいな宣伝までやってた、今思うと、自分自身の反省も含めて滑稽だなと思う次第である。

(その後MicrosoftはJavaのコピーをC#として出すことになるのだが、まあお互いコピーしまくってるからそれはそれってことで)

さて当時だが、J2EEの実行環境がSunのWebサイト(JavaSoftではもう無くなってた)で1999年の12月だったかに出た。当時としてはえらくサイズがでかかったのでよく憶えている。ダウンロードはしたものの、さてどうやって作ればいいのかさっぱり分からんという悲しい状況であったことは良い想い出である。程なくして、それはWebLogicと同類のものである、と判明するわけであるが、その統一規格であると見切るまでは暫く時間が必要だった。なんせ日本語の情報がほぼゼロだったからである。あったのかもしれんが、少なくともペーペーの私の所には届かなかった。

それからすぐ、今は亡きDBマガジンという雑誌に、たぶん国内初のJ2EE特集記事を書く千載一遇のチャンスが訪れ、その後にJavaOneに參加して生ジョブズをMac OS XのJava Swing対応のプレゼンテーションを見たり、Sunの本社とAppleの本社とをハシゴする等々、なかなかゴージャスな経験をさせてもらいながら、J2EEが実は企業アプリケーションの統一規格であることを体験しながら理解していかせてもらったりしていた。

そこで理解したのは「統一規格、いいじゃん!!」なのである。移植性担保ってかなり重要なのだ。ISO/IEC 12207 Software Lifecycle Processに非機能要件として入ってるでしょ、と。なので、それ以降今に至るまで、私のEEに対する理解は「統一規格」がベースなのである。

ちなみに、であるが、当時からCORBA分散モデルを忠実に移植しただけのEJB Entity Beanはゴミ扱いなので、まともな技術者は誰ひとり使っていなかった。これは事実である。私を含め、みんなオリジナルのDAOを作って使っていた。それを知らない連中が真面目にEntity Beanを使って「裏切られた!!」と吠えまくるのであるが、ご愁傷様、としか言い様がないのである。

その後、やはり今は亡き「JavaWorld」に寄稿しつつ、その間に登場する事になるJ2EE 1.3、1.4とおつきあいすることになるのだが・・・ちなみに私はEntity Bean=ゴミ理論当時からJavaWorldの連載で散々書いていた記憶があるので、贖罪の意識はない。

J2EE 1.3の目玉はJSPがやっとまともに使えるようになった(JSTLが追加された)、とかMessage-Driven Beanが使えるようになった(初期はEvent-Driven Beanとか言っていた)とか、あんまり良い想い出がないというか、1.2とあんまり変わらんのである。

J2EE 1.4は、これまたあんまり変わらんが、JAXPが付いたとかJAX-RPCが付いたとかあるけど、でかいのがゴミのようなJSFが突っ込まれて大ブーイングを喰らった記念すべきバージョンである。ここで分かったような分かってないような連中がやれSpringだ何だと大騒ぎしてグチャグチャになる訳であるのだが、いま思い返せば只の「第二のJ2EE」を作り出しただけであり、今や作り替えるにも難易度が高すぎる壮大なレガシー(≒死に逝く旧システム)そのものになっていることは、見知らぬ後輩のためにも記しておかねばなるまい。

さて、私はここでJ2EEに見切りを付け、さっさと.NET Frameworkのプロモーション等に携わったりと、まあ要するに1.0、1.1、2.0辺りとC#およびVB.NETを駆使していろいろ作っていた。何故なら、J2EEは暫くダメだろうと直感したからである。Javaプログラマーの単価がナイアガラのように急降下したのもこの辺だ。昔はJavaできるってだけで引っ張りだこだったのだが・・・

お陰で食いっぱぐれることもなく今に至れるのであるが、その代償として、この時期のJ2EEが良くわからんのである。SpringもStruts 2も真面目にシステムを作ったことがない。そんなもん使うより、ASP.NETとADO.NETを駆使してエレガントにVisual Studio使った方が100倍マシだと思っていた。今でも思う。

Visual Studioが出てきたので記しておきたいが、JavaのIDE(昔はRADと言っていた)は長らく定番が無く、非常に困り果てた歴史でもある。私自身もViVi -> WinCafe -> JBuilder 1.0 -> Visual J++ -> ForteForJava -> VisualAge for Java -> JBuilder 3.5~6.0 -> Eclipse 1.0~2.0 -> NetBeans(今)という流浪の歴史である。細かいところは忘れた。なんかWebLogicとかOracleのもあったような気がする。今はNetBeansで満足しているため、他に移るつもりは今のところ無い。

対してVisual Studioは選択肢がこれしかないし、出来も恐ろしく良いので考える必要がない。Javaメインだった頃は実に羨ましかった。実際やってみて、納得した。良い。

さて、そろそろJavaに話を戻そう。そして現職になりコンサルティングする立場からコンサルティングを受ける立場になり、そしてJavaが戻ってきた。いや、戻したというのが正しいかもしれない。それは頭が割れそうになるくらい散々考えた末である。

そして戻ってきたときにはJ2EEはいつの間にかJava EEになっていた。5である。1.が抜けた。5だよ5。そしてテストとしていろいろ作ってみた。特にJSF -> EJB -> JPAの流れであれやこれや頑張ったのであるが、結論としては「これは厳しい」である。それまで使い込んできた.NETに比べて、圧倒的な力不足感と、半端ない「考えてなさ」感。JSFはだいぶマトモになった。が、ベースがJSPであることの恐ろしい制約がもうダメだと思った次第である。

そしてその5の末期であった。ダメだと思ったとたん、Java EE 6が出た。GlassFish 3.0も一緒に。

そのときの直感は「やっと標準機能だけで作れるようになったか!!」だ。

長らくEE仕様は1.2から1.3、1.4、5に至るまで、どれひとつとして標準機能だけでは満足にシステムを作れなかった。Web系フレームワークではStrutsが必須であった。他のでも良かったが、みんなStrutsを使っていた。あとはApache Jakarta Commons。今となっては無用な制約でしかなく狂ったような依存関係になる元凶としか見なせない対象だったりもするが、当時は救世主でもあった。

が、EE 6ではJSFのベースがFaceletになり、JAX-WSも付き、EJBにCDIが入り、JPAも良くなった。何より良かったのがNetBeansである。こいつとGlassFish 3とMavenとの連携はまさにVisual Studioに匹敵するか、もしくは部分的に凌駕しているものであった。いや過去形ではなく現在形である。

で、EE 6から本格的に復活した。昔のようにアホみたいに作りまくる生活に戻ったのである。違うのは、余所様のを作るのか、自社システムを作るのか、だけ。大きな違いではある。JavaOneにも10年振りに復帰した。今年も行く予定である。

ここでEE 7の登場である。中身を見ると、JSFの改善が著しい。というか最初からこれを出しておいてよ!! と絶叫しそうなくらい、改善が凄い。案の定文献が無い状況であるが、最初のJ2EE 1.2も同じ状況であったので、毎度の話である。むしろ現地JavaOneで昨年、事前に情報が得られただけ10倍マシである。Batch Frameworkとか謎仕様がてんこ盛りであるが、実際の企業システム構築で使えるようになるまで暫く時間があるため、その間に樣々試そうと思う次第である。

さて、NetBeans 7.3.1と一緒にダウンロードすることにしよう。プロジェクト作成の時には「Mavenプロジェクト > WAR」の一択であるため、そこだけ間違えなければ素敵なEE 7ライフが待っているはずである。

※画像のリンクがGlassFishになってなかったので修正しました。けど、NetBeansをダウンロードしたら一緒にインストールできるので、開発用途としてはまずNetBeansをダウンロードする方が賢いと思いますよ。

 

5 Replies to “祝! Java EE 7リリース”

Leave a Reply