なにが「超入門」かというとおいらにとって超入門。
まずはJavEE7なアプリを起動させることを今回の目標にする。
サンプルは過去の例を見ても大げさすぎて、でかすぎて把握しにくいので無視で。
適当にフィーリングで行き当たりばったりでいい。JavaEEとはそういう感じのゆるい誰でもお気楽極楽に触れるものですよ。肩ひじ張るようなものではない。
しかし、「NetBeansタグ」すげー久々だのう。
ダウンロード
ダウンロードはここから。
https://netbeans.org/downloads/
JavaEEをえらぶ。このへん。
インストール
ダブルクリックでインストーラ起動。適当に押していけばOK。Glassfish 4もついてくるのでチェックを外さないように。
別途ダウンロードする必要もないのでインストーラ版がおすすめ。ダウンロードもIDE上で完成するので別にいいけど。
とにかくすぐに確認ができるのでNetBeansを常用はするつもりはないけどどんなものか知りたい人はこちらで。
起動
インストールしたアイコンをダブルクリックで立ち上げよう。
起動時に旧バージョンのNetBeansがあると設定を引き継ぐが、その場合、Glassfish4が追加されていないため、お手軽に試したい場合は設定を引き継がないほうがいいかも。
たぶんNetBeans 7.3.1のバグ。速攻でバグを踏むのもお約束。
プロジェクト作成
プロジェクトを作成する。
アイコンは右上のこのへんにあるのでクリック。
ウィザードが立ち上がったら以下の順序でクリック。
- 「カテゴリ」に「Java Web」
- 「プロジェクト」に「Webアプリケーション」
- 「次」ボタン
パスとプロジェクト名を入力して「次」ボタンクリック。
Glassfish 4 とJavaEE 7が設定されているのを確認して 「次」をクリック。
フレームワークは特別何も設定しないでよい。あとでも設定できるため。「終了」をクリック。
これでプロジェクトの新規作成はおわり。
実行
上にある緑色の再生ボタンをクリック。
ブラウザが自動で立ち上がり、表示する。
NetBeansを立ち上げてから8クリックだけで新規作成からGlassfish4上でのJavaEE稼働の確認までできたわけだ。
EE7なの?
たしかにログはGlassfishが立ち上がっていることはわかるが、表示しているのがHTMLでぜんぜんEE7って感じがしない。
実はGlassfish 3とかTomcatじゃないの?といわれても仕方がないレベル。
というわけで、index.htmlを消して以下のようにJSPを書いてみる。
うん、ちゃんとラムダ式も補完きくね。
ちなみに「<c:」とうつとtaglib設定してくれるんでまぁ楽。
<body>合計=<c:out value="${[4,3,1,2].stream().sum()}" /></body>
ブラウザのリロード。JSPの変更程度はもちろん再デプロイは必要ない。
JavaEE 7ではJavaSE 8より一足お先にラムダがかけるw
ここでネタに走ってStrutsでラムダを書く・・・とおもったけど、みんなやってると思うのでやめておく。
プロジェクトを右クリックして「プロパティ」を選んで、フレームワーク>追加>Strutsとやるとライブラリも設定ファイルも全部初期設定してくれるんで、やりたい人はそこから始めるとよいだろう。
いまいち定数を合計しても面白くないのでBeansを作ってそれをアクセスしてみるか。
package bean; publicclass HogeArray { privateint[] array = {2,1,4,3,5}; publicint[] getArray() { return array; } }
とつくっておいて
<%@ taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core" %><%@pagecontentType="text/html" pageEncoding="UTF-8"%><jsp:useBean id="hoge"scope="page"class="bean.HogeArray"/><!DOCTYPE html><html><head><metahttp-equiv="Content-Type"content="text/html; charset=UTF-8"><title>JSP Page</title></head><body>合計=<c:out value="${hoge.array.stream().sum()}" /></body></html>
これでJavaコードから配列をもらってEL側で合計されているのがわかる。
もちろんソートもできる。
<body>合計=<c:out value="${hoge.array.stream().sum()}" /><hr><c:forEach items="${hoge.array.stream().sorted().iterator()}" var="row"><div><c:out value="${row}"/></div></c:forEach></body>
実行
ちゃんとソートもされてるね。
ラムダの例。フィルタで奇数のものだけ処理してる。
<body>合計=<c:out value="${hoge.array.stream().filter((num)->num%2==1).sum()}" /><hr><c:forEach items="${hoge.array.stream().filter((num)->num%2==1).sorted().iterator()}" var="row"><div><c:out value="${row}"/></div></c:forEach></body>
まずはいろいろと遊んでみるといいかもですね。