Archive for 10月, 2012

GlassFIsh v3.1.2.2でJSF 2.2を試す方法

現在、GlassFish の最新バージョンは Java EE 6 に準拠した GlassFish v3.1.2.2 です (2012 年 10 月 20 日時点)。

来年の春頃に Java EE 7 が正式にリリースされますが、Java EE 7 に含まれる JSF 2.2 の新機能をいち早く試したい方は GlassFish v3.1.2.2 の環境に対して、下記の手順に従っていただく事で環境を構築する事ができます。

※ ただし、ここでご紹介する内容はあくまでも Java EE 7 の正式リリース前に、事前検証を目的としてのみご使用ください。本番環境への適用は決してなさらないでください。

1. まず始めに、下記のサイトにアクセスしてください。
https://maven.java.net/

2. サイトにアクセスすると下記の画面が表示されます。
 検索フィールドに下記の文字列を入力して検索を実行してください。
 org.glassfish:javax.faces:2.2.0-SNAPSHOT


3. 検索を実行すると下記の結果が得られます。
 ここで、javax.faces-2.2.0-SNAPSHOT.jarを選択し、下右画面のタブよりArtifact Information を選択します。

4. タブを選択すると下記の画面が表示されます。
 ここで、Download ボタンを押下してください。


5. ボタンを押下すると JSF 2.2 の SNAPSHOT が入手できます。

 ダウンロードファイル:javax.faces-2.2.0-20121018.092111-181.jar

6. ダウンロードが完了すると、GlassFish v3.1.2.2 に含まれる JSF 2.1 を JSF 2.2 に置き換えます。

# pwd (GlassFish のモジュールの配置場所)
$GF_INSTALL/glassfish-3.1.2.2/glassfish/modules ($GF_INSTALL はインストールした場所)
# mv javax.faces.jar .. (JSF 2.1 のバックアップ)
# mv ~/Downloads/javax.faces-2.2.0-20121018.092111-181.jar ./javax.faces.jar (JSF 2.2 に置き換え)

7. GlassFish を再起動してください。
 起動時の server.log ログを確認すると正しく更新されている場合、下記のようにMojarra 2.2.0 (-SNAPSHOT 20121018-0139)という文字列が表示されているかと思います。
情報: Grizzly Framework 1.9.50 started in: 1ms – bound to [0.0.0.0:8181]
情報: Initiating Jersey application, version ‘Jersey: 1.11.1 03/31/2012 06:49 PM’
情報: REST00001: Listening to REST requests at context: /management/domain
情報: The Admin Console is already installed, but not yet loaded.
情報: The Admin Console is starting. Please wait.
情報: JMX005: JMXStartupService had Started JMXConnector on JMXService URL service:jmx:rmi://192.168.11.5:8686/jndi/rmi://192.168.11.5:8686/jmxrmi
情報: ?????? ” ? Mojarra 2.2.0 (-SNAPSHOT 20121018-0139) ???????

8. 実際に JSF 2.2 のコードが動くか確認してみましょう。
Maven プロジェクトの場合、pom.xml に下記の2項目を追加してください。

    <repositories>
        <repository>   
            <id>jvnet-nexus-snapshots</id>   
            <name>jvnet-nexus-snapshots</name>   
            <url>https://maven.java.net/content/repositories/snapshots/</url> 
        </repository>
    </repositories>
    <dependencies>
  ............
        <dependency>   
            <groupId>org.glassfish</groupId>   
            <artifactId>javax.faces</artifactId>   
            <version>2.2.0-SNAPSHOT</version>   
            <scope>provided</scope> 
        </dependency> 
    </dependencies>

9. CDI を利用する場合、WEB-INF 配下に bean.xml ファイルを作成します。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
</beans>

10. JSF 2.2 対応のページを作成 (ファイルアップロード用のタグ:<h:inputFile>)

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        <h:form prependId="false" enctype="multipart/form-data">
            <h:inputFile id="fileUpload" value="#{test.upfile}"/>
            <h:commandButton value="upload" action="#{test.doUpload}"/>
        </h:form>
    </h:body>
</html>

11. CDI のバッキング Bean の作成

import java.io.IOException;
import javax.inject.Named;
import javax.enterprise.context.RequestScoped;
import javax.servlet.http.Part;

@Named(value = "test")
@RequestScoped
public class TestManagedBean {

    private Part upfile;

    public Part getUpfile() {
        return upfile;
    }

    public void setUpfile(Part upfile) {
        this.upfile = upfile;
    }

    public TestManagedBean() {
    }

    public String doUpload() {
        try {
            String fileName = getFilename(upfile);
            upfile.write(fileName);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        return "";
    }

    private String getFilename(Part part) {
        for (String cd : part.getHeader("Content-Disposition").split(";")) {
            if (cd.trim().startsWith("filename")) {
                return cd.substring(cd.indexOf('=') + 1).trim().replace("\"", "");
            }
        }
        return null;
    }
}

アプリケーションを実行すると、指定したファイルがサーバ側で保存されている事を確認できます。

これで、JSF 2.2 の検証環境ができましたので、JSF 2.2 の新機能を試したい方は上記の方法に従って検証してみてください。まだ開発が進行中の物ですので、機能不足や信頼性に掛けますが、実際にコードを書きながら試す事ができるようになるため有用かと思います。

2012年10月20日 at 2:24 AM

Welcome to JavaOne 2012 by Japanese

今年の JavaOne 2012 San Francisco の基調講演で流されたビデオの日本語翻訳のキャプション付きを公開致します。

英語の歌詞はこちら
****************************************************************
Interweb our thoughts together
with a language that’s better than ever
we connect like 321
everyone is having fun
playing games
chat all day
calculate your future dates
viewing things in 3 dimensions
is their something I didn’t mention?
(auto tune) this software speaks to us all!!!
you’re coding with you’re coding with you’re coding with java
sip of coffee, keep you up
this syntax will not trip you up,
java!
Matching up with everyone
compatible like moon and sun
get your dose of vitamin
C + + + +
plug it in and see it swirl
everyone around the world
communicating, executing,
beautifying, multiplying,
(auto tune) this software speaks to us all!!!
you’re coding with you’re coding with you’re coding with java
sip of coffee, keep you up
this syntax will not trip you up,
java!
****************************************************************

関西弁バージョンも作ってみました。

Special Thanks to Reiko Saito-san.

2012年10月17日 at 6:07 PM

年末までの Java 関連イベントについて

年末までに私が参加予定の Java 関連イベントにつきまして下記にご案内致します。

特に各地方(東京も含む)で開催する JavaOne 報告会では、ラッキーな方に本場アメリカから持ち帰ってきたお土産を差し上げるイベント等も企画しております。是非この機会に最新の Java の動向を入手してください。

東京では、11/09, 11/10 に連日で Java に関する大きなイベントを開催する予定です。11/09 と 11/10 はそれぞれ別の内容が提供されますので、ご都合のつく方は是非両日ともご参加ください。

10/31 Oracle Days Tokyo 2012 (ウェスティンホテル東京)
11/3 JavaOne 報告会@岡山 (岡山県立図書館)
11/9 JavaOne 報告会@東京(グリー)
11/10 JJUG CCC@東京(ベルサール三田)
11/21 JavaOne 報告会@名古屋 (オラクル中部支社)
11/17 JavaOne 報告会@札幌
11/24 JavaOne 報告会@沖縄 (琉球大学)
11/29 JJUG ナイトセミナー@東京 (日本オラクル)
12/01 JavaOne 報告会@大阪
12/07 JavaOne 報告会@福岡 (オラクル福岡支社)
12/08 オープンソースカンファレンス福岡
12/13 GlassFish 勉強会&忘年会@東京
01/26 JavaOne 報告会@富山

2012年10月16日 at 11:12 PM

JavaOne 2012 テクノロジー・キーノート (Day 0)

ストラテジー・キーノートの後、休憩をはさんで、テクノロジーキーノートが開催された。テクノロジー・キーノートに先立ち登壇したのは、Java のチーフ・アーキテクトである Mark Reinhold だ。今年のテクノロジー・キーノートは、Java SE, JavaFX, Java ME ..と個々の技術を紹介する形式ではなくそれぞれ関連する技術をストーリーを持って関連する人を壇上に招きいれながら Mark が司会を務める形で進行していった。

Mark はまず、JavaFX 開発チームの Richard Bair と Jasper Potts を壇上に招き、JavaFX で作成した 今年の JavaOne のスケジュール・ビルダのデモを行った。デモは、Windows 環境で行われた後、Mac OS X様の JVM、Linux(Ubuntu)環境でも同じアプリケーションが動作するデモを行った。

また、Jasper Potts によって新しく NetBeans と統合された SceneBuilder を使って JavaFX のログイン画面をその場で作ってみせた。ここで、JavaFX の強化ポイントとしてコンボボックスが追加された事も紹介し、Swing との相互運用性、パッケージ化についても紹介した。
また、Richard は JavaFX は設計当初から、メインの UI のスレッドとバックエンドのスレッドを分割し、マルチコア CPU を最大限に利用できるようにしている点についても紹介した。しかしながら、現在マルチコアを最大限に生かすためのコードを JavaFX で実装した場合、大量のコードを記載しなければならない点をソースコードを表示して示した。

ここで、Richard , Jasper に代わって壇上に上がったのが、Brian Goetz だ。Brian が壇上に上がった後、如何にして現在の冗長的なコードを簡単に記述でき、さらに並列処理用のライブラリを使用して簡単に記述できるようになったかを紹介した。

Brian は開発者に楽していただくためには、簡単なライブラリを提供する事だが、時として言語自身も拡張しなければならない。Java の GUI のイベント処理等を実装する際には、インナークラスを使用してイベントの実装を行うが、Project Lambda の成果物を使用して、インナークラスの実装をLambda 式に置き換える事ができる。また、コレクションにおけるバルク操作の記載方法も書き換える事ができると例を示しながら紹介した。現在は Java SE 5 に導入された拡張 for 分を使用して記載する事が多いが、forEach メソッドを使用してループ処理を記載する事ができる。このような書き方は全てのコレクションに対して利用可能である事も加えて紹介した。またパラレル処理を行う際にも parallel メソッドを追加するだけで簡単に行う事ができる点なども紹介した。

こうして、Lambda 式を導入する事で JavaFX で現在大量に記載しなければならないコード行数を短くまた簡単にパラレル処理できるようになるという点で Lambda 式の利点について紹介して締めくくった。

Mark は Brian に代わり再び、Richard, Jasper を壇上に招き、JavaFX のアプリケーションがデスクトップアプリケーションだけではなく、組み込みのデバイスでも利用可能な事を、先ほどのスケジュール・ビルダのアプリケーションを組み込み機器にインストールしてデモを行った。

また、Java SE 9 に先送りになった、Project Jigsaw のモジュール化についても、Java ME と交えながら紹介した。モジュール化を導入するにあたって、デバイスの機器で用意されているメモリの要領に従って、必要なライブラリをまとめ提供する事ができるようになる事を紹介した後、実際に jmod コマンドを使用し現在 OpenJDK で開発が進められている Jigsaw におけるモジュールの利用方法についてデモを交えて紹介した。


最後に、Mark は Java SE 8, Java SE 9 以降に含まれる機能の予定の一覧を示し、これらの機能は全て OpenJDK で実装され、JCP によって承認された仕様である事を伝えた。


Java SE,JavaFX, Java ME の紹介の後、Mark と代わって壇上に登壇したのは、Java EE のエバンジェリストである Arun Gupta だ。

彼はプレゼンに先立ち、Java EE の過去、現在、未来について示し Java EE 7 の改訂された内容についても紹介した。

Java EE 7 は、開発生産性の向上と HTML 5 への対応が大きなテーマで、開発生産性においては、冗長的なボイラープレートコードを削減する事や、今までよりも豊富な機能などを提供する事を紹介した。また HTML 5 対応としては WebSokcet, JOSN 等といった技術を Java EE 内に取り込み簡単に開発ができるようにする事を紹介した。

また、具体的に改善された点として、RESTful Web Services 2.0 のクライアント用の API の追加、JSON, JMS における変更点などをコードを示しながら紹介した。


また、WebSocket 1.0 についてもアノテーションを追加する事で簡単に開発ができるようになった点も紹介した他、
Bean Validation 1.1 で、メソッドの引数や戻り値に対する評価が可能になる点も紹介した。


その他、JPA, EJB における改良点も簡単に紹介した後、多くの Java EE 関連の仕様が Early Public Draft の状況でいつでも参照ができるようになっている。また GlassFish v4 は Java EE 7 の参照実装ですでに、WebSocket や JSON、JMS 等の実装を組み込んでいるため、今からダウンロードして試していただく事ができる点を紹介した。

次に、Arun は Project Avatar の進捗について紹介した、Project Avatar は昨年の JavaOne 2011 で発表された技術だが、Avatar の現状がどのように進んでいるのかを”Angry Bids”というアプリケーションのデモを交えながら紹介した。Project Avatar で実装したアプリケーションは軽量なサーバ上で稼働する事が可能で、HTML 5/JavaScript クライアントとJava EE を簡単に連携する事ができるようになっている事を紹介した。


最後に、Arun は Project Easel と呼ばれる NetBeans のプロジェクトについて紹介した。恐らく今週末にリリースされる NetBeans 7.3 β版に含まれる機能で、新しくプロジェクトの種類に HTML 5 対応が追加された事を紹介した。実際にデモで確認した所、JQuery や CSS を使用して JavaScript のコードの実装がとても楽になっている事が確認でした。NetBeans 上で HTML 5, CSS, JavaScript のコードの開発を行いそれが如何に Google Chrome のブラウザで表示されるか、とても分かりやすくなっていた。今後 JavaScript の開発においても NetBeans は有力な選択肢としてなりそうだ。



2012年10月3日 at 2:41 PM

JavaOne 2012 ストラテジー・キーノート (Day 0)

今年の JavaOne は過去の JavaOne と違い、多くの開発者の皆様により多くセッションを受講して頂きたいとの主催者側の計らいにより、初日にストラテジー・キーノートとテクニカル・キーノートを同時に Masonic Auditorium というホールで開催した。


キーノートは、Hassan Risvi の登壇から始まった、Hassan は今年の JavaOne のテーマである “MAKE THE FUTURE JAVA” を紹介した。

* プラットフォームの完全性
* 近代化とイノベーション
* 開発生産性
* オープンで透明性のある進化
* コミュニティ活動への参加
* 品質とセキュリティ

次に Java の現状と今後の戦略とビジョンとして、それぞれ Java SE, JavaFX/Client, Java EE, Java ME, Java Card, NetBeansについて語った。
そして、今年1年間の Java の活動に対し下記の3点についての自己評価を行った。

* 技術革新
* コミュニティへの参加
* オラクルのリーダ・シップ

* 技術確認においては
Java SE :
Mac OS X と Linux ARM のサポート
300 以上の拡張によって 7 つのアップデートを提供

JavaFX :
JavaFX 2.2 を Windows, Mac OS X, Linux 環境に提供
JavaFX 1.0 SceneBuilder を Windows, Mac OS X 環境に提供
JavaFX のオープンソース化、コミュニティに対する新しい機会を提供

JavaME/Embedded :
Java Embedded Suite を提供開始、組み込み分野におけるミドルウェアの提供
Java ME Embedded を提供開始、マイクロコントローラで稼働する Java 用として
CY2013(カレンダー・イヤー) で Java ME/SE 同調
Java ME 8 用の JSR の提出を JCP で準備中

Java EE :
GlassFish の2つのバージョンを提供開始
Java EE 7 仕様の再校正を実施
Java EE 7 と共に HTML 5 アプリケーションの簡易化


コミュニティ分野において
OpenJDK :

新しいプロジェクトを開始(Penrose, OpenJFX, PwerPC/AIX ポーティング、Sumatra GPUのサポート)ガバナンスの更新:Andrew Haley の選任と Doug Lea の再任 OpenJDK に対する新たな 68 名の貢献者の追加:CBOE, SUSE, Taobao を含む多数の熟練した貢献者

JCP :
JCP.next : 今まで以上の透明性、2つの EC の統合、JSPA の改訂
JSR プログラム開始の適用(ロンドン Java コミュニティ、SouJava による)
2011 年の JavaOne から 21 の JSR を開始

JUG:
25% 増加(世界中の JUG 157->197)
20+ 新規 JUG の追加(年間)
36% 増加 JUG への訪問 (50->68)


オラクルのリーダシップ
継続的な投資:
Oracle の投資の継続と増加
世界中で 4カ国の JavaOne を開催し 5000 名以上の参加

コミュニティの支援活動:
Java マガジンの提供開始:1年間で12万人の購読
17% の増加:Java Developers Days (46->54)
エバンジェリスト活動 50万人以上の開発者と接触

評価:
17% 増加:java.net 登録者の増加(70万人→82万人)
8% 増加:NetBeans の活発な利用者数 (110万人->122万人)

Hassan に続いて登壇した、Java SE の開発 VP であるGeorge SaaB は過去 10 年間と比較して JDK 7 の登場で様々な環境で Java が利用可能になった事を紹介し OpenJDK の活動についても紹介した。彼は、今回、新たに Project Nashorn をOpenJDK プロジェクトに組み込みOpenJDK の元で JavaScript のエンジンを開発する事を発表した。

Nashorn は、新たな JavaScript のエンジンで、Java SE 7 で組み込まれた、新しいバイトコード命令 InvokeDynamic の利点を生かして作られ、JavaVM 上で稼働するハイパフォーマンスな
JavaScript エンジンとして知られている。現在、すでに、IBM, Redhat, Twitter 等が Project Nashorn のOpenJDK での開発に対してサポートする事を表明している。

続いて、Nandini Ramani は JavaFX が現在全てのメジャーなプラットフォームで利用可能になっている事を紹介し、NetBeans 7.2 で SceneBuilder を統合しより開発がしやすくなって点を紹介した。
また、JavaFX が現在 Java SE 7 にバンドルされており今すぐ利用可能な点を紹介すると共に、今回の JavaOne に併せて、Linux ARM 環境で JavaFX が利用可能になった事を発表した。

今後 JavaFX で 3D も取り扱えるようになり、今年の年末までには完全に JavaFX をオープンソースかする事も発表した。

続いて、Java ME に関するアップデートも行った。今回の JavaOne に併せて2つの新しい組み込み用途の製品の提供開始を発表した。一つは、Java ME Embedded 3.2 でもう一つは Java Embedded Suite 7.0 である。この中で、GlassFish for Embedded も組み込まれ、デバイスの管理を行うために、最適化さいれた GlassFish を組み込み、デバイスの管理に JAX-RS などの技術を利用できるようになるという画期的な物であった。エンタープライズの分野で培われた技術が組み込みデバイスにまで応用されるようになったのはとても興味深い。

Nandini に代わって、Cameron Purdy が登壇した。Cameron は、Java EE がフォーカスする点と今後の方向性について紹介した。


* 標準化:エンタープライズアプリケーションの開発のため
* 生産性:エンタープライズの開発者のため
* 移植性:ベンダー/クラウド環境に非依存
* 拡張性:イノベーションの取り込み
* モジュール化:モジュール化対応のサポート

最新の GlassFish (v4.0) をダウンロードする事によって、Java EE 7 SDK のアーリ・アクセス版が利用可能になった事を発表した。また、HTML5 対応が含まれている事も発表した。

Cameron Purdy は Java EE 7 の提供は 2013 年の 4 月に行われる点も発表した。

さらに、Java EE 7 の計画変更に対する市場からのフィードバックも紹介し、Apache, redhat 等が今回の延期に対して同意し、エンタープライズ分野におけるクラウドの標準化を行うためには、
もう少し時間が必要である事を紹介した。

また、Java EE に対する標準化はまだ行われていないが、JPA の参照実装である EclipseLink において NoSQL を扱う事ができるようになっており、MongoDB や Oracle NoSQL を現在サポートしている点、また近い将来に Cassandra 等ほかの NoSQL に対してもサポートする点を紹介した。

最後に、まとめとして、Java EE の過去、現在、将来についてまとめた。Java EE 7 のテーマは、”Simplicity(簡易化)と HTML5 対応” で既存技術に対するメジャーな更新、新しい仕様の組み込み、さらには HTML 5 対応の機能を組こんで提供する事を発表した。

Java EE の採用事例として、ナイキの Nicole Otto を壇上に招き入れた。彼女はナイキにおける Java EE の採用とどういった分野で使われているのかを説明し、データのトラッキングの分野で採用されている点、パフォーマンスの向上の点等を紹介した。

最後に、Cameron は Java EE 8 とその先と題して、Java EE 8 においてクラウド環境におけるプログラミングモデルの標準化を提供し、クラウドのアーキテクチャ、SaaS アプリケーションにおけるマルチテナンシー、JSR の追加等を紹介した。
また、Java SE 9 で組み込まれる Project Jigsaw のモジュール化にも将来的に対応していく事を紹介した。

2012年10月2日 at 11:30 PM

JavaOne 2012 Community Event (Day 0)

日付が代わり、9月30日(日)より JavaOne 本格的に始まった。

今年の JavaOne の会場は基本的に、ヒルトンホテル、ホテル日航、Parc 55 の 3カ所で開催されているが、Day 0 はモスコーンセンターで開催され、午前、午後を通じ Java のコミュニティ関連のイベント
(OpenJDK, NetBeans, GlassFish 等)が行われた。

GlassFish のイベントにおいても最新のロードマップが公開され2013 年の 4月頃を目処に Java EE 7 の SDK を提供開始し、その後、数ヶ月をおいて製品版でリリースする事が発表された。また、GlassFish のコミュニティセッションでは、GlassFish の製品マネージャ、Mike , John, また、開発 VP の Cameron, Ajay といった日本でもなじみのある顔ぶれが壇上にならび、GlassFish コミュニティの参加者からの質問に対して如何なる質問にも答えていった。

* 今日の夜の基調講演のホットな話題を教えて!!
* WebLogic と GlassFish のすみわけなど良くある質問
* Project Avatar に関する詳細

などかなりホットなディスカッションが行われた。



また、このイベントに参加した人だけがもらえる GlassFIsh の新しい T シャツも参加者に配られた。

2012年10月2日 at 11:18 PM

JavaOne 2012 Geek Bike Ride (Day -1)

JavaOne は開発者コミュニティの祭典である事から、Java の開発者を喜ばせる数多くの催し物が開催されている。JavaOne の本番開催に先駆けて 9月29日(土)に “Geek Bike Ride” というイベントがあった。世界中から JavaOne の為に集まった開発者の中で希望者が集まり、フィッシャーマンズ・ワーフからゴールデンゲート・ブリッジを自転車で渡り、Saulsalito という場所までサイクリングして
帰ってくるというイベントだった。



参加者には OTN のはからいによって Duke の絵があしらわれた T シャツが配られ全員がその Tシャツを着てサイクリングを楽しみまた交流を行った。土曜日は快晴ではなかったが、39 名のライダーと1名のスケートボーダが参加し Java Geek な人たちとの交流を楽しんだ。


2012年10月2日 at 11:10 PM


Java Champion & Evangelist

ご注意

このエントリは個人の見解であり、所属する会社の公式見解ではありません

カレンダー

2012年10月
« 8月   11月 »
1234567
891011121314
15161718192021
22232425262728
293031  

カテゴリー

Twitter

clustermap

ブログ統計情報

  • 979,791 hits

Feeds