Archive for 9月, 2010

JavaFX の新しいグラフィックエンジン

先日 JavaOne のキーノートで発表された、JavaFX の新しいグラフィックエンジンについてですが、Prism エンジンと呼ばれ、JavaFX 1.3.1 に含まれるようです。

そしてこの Prism エンジンを利用するためには、コマンドライン引数に(-Xtoolkit prism)を指定する必要があります。このオプションは 1.3.1 ではまだ検証目的での使用が推奨されており、デフォルトでは無効になっています。次期 JavaFX のリリース時にはこの Prism エンジンがデフォルトで利用可能になるようです。次期 JavaFX は来年夏頃にリリースする予定です。

JavaFX 1.3.1 での例:
# javafx -Xtoolkit prism -jar MyTest.jar

2010年9月22日 at 10:35 午前

JavaOne 2010 キーノート概要紹介

今日の朝に発表された、Java One Key Note の概要を下記にまとめてみました。

* 11 億のデスクトップで Java が稼働しています。
* 30 億の携帯電話で Java が稼働しています。
* これは、iPhone や Android の数を組み合わせた物を
  比べても 31 倍多い事を意味しています。
* Blue Ray プレーヤの100%で Java が稼働しています。
* 14億のJavaカードが毎年製造されています。

Thomas Kurian の登場

「1996年から参加していますが今年の Java One は
私にとって特別な JavaOne ですなぜなら、Oracle
になって初めての JavaOne だからです。」

3 層のロードマップについて紹介します。
Oracle の Java の今後の方向性について紹介します。

Language
Java VM
API (Java SE/Java EE/JavaFX)

このキーノートではこれらについての発展について紹介して行きたいと思います。

新しいアプリケーションモデルに対する Java の最適化 と新しいハードウェア
* Java 開発者に対する生産性の向上
* JavaVMにモジュール化を統合
* 新しいCPU、サーバクラスマシンにおける大規模メモリ、高速ネットワークインタフェースに最適化
* パフォーマンス、監視、診断機能 等の改善
* 多言語サポート

Project Coins : より簡潔なコードで生産性の向上
Project Coinsのサイト
* ジェネリクスにおける型推論の改善
* try 文を使ったリソースのブロック(自動リソース管理)
参考:自動リソース管理
* switch 文における文字列のサポート

Project Lamba: Closures for Java
Project Lambaのサイト
* インナークラスを使用されている方に簡潔な置き換えが可能
* コレクションにおけるバルクデータ操作の自動並列処理が可能

Project Jigsaw: Java プラットフォームのモジュール化
Project Jigsawのサイト
* エラー傾向があるクラスパスの問題を排除し生産性を向上
* コンポーネントやアプリケーションのパッケージと配布の改善
* NetBook から デスクトップ、サーバまでスケールするモジュール Java VM


マルチコアプロセッサー、巨大メモリ、高速ネットワーク対応
 *Fork/Join フレームワークと他のマルチスレッドの拡張(concurrent API)
 *超巨大ヒープに対するガベージコレクションの少ない停止時間
 *HotSpotから Permanenent 領域の排除
 *New I/O API: ファイルシステムや非同期 I/O の良いOSの使用

多言語をサポートする Java VM
 *動的言語における動的呼び出し(InvokeDynamic)のパフォーマンス改善
 *動的言語においてもマルチコアプロセッサにおける自動スケール
 *超高速な JavaScript エンジン


ここで、JRockit Mission Control のデモが行われました。
JRockit Mission Control の中に含まれる Flight Recorder と呼ばれる機能は、将来的にHotSpot VMでも利用可能になるようです。


オープンソース Java
OpenJDK:

 * 2011 年 と 2012 年に2つの新しい JDK をリリース予定
 * 2011 年に機能リストをコミット
  http://openjdk.java.net/projects/jdk7/features
 * Oracle はオープンソースの Java の実装継続にコミット
 * 外部の貢献者の参加を歓迎


Java クライアントツール:
HTML5とネイティブ・アプリの、最良の経験をJavaから提供

プログラミングモデル: Java の強力さ、JavaFXの簡単さ
Java, JavaScript, HTML 5間にネィティブな互換性を提供
ハイパフォーマンス:2D と 3D の Java グラフィックエンジン
デスクトップやモバイル分野におけるハードウェアの進化を有効に利用するための設計
完全な統合された開発ライフサイクル


プログラミングモデル JavaFX のかんたんさ
 * API, ビジュアルデザイン、標準もしくは複雑な UI コントロール、データバインド
 *オープンソースで提供される標準、もしくは複雑な UI コントロールライブラリ
 *大規模データセットのサポート、国際化対応、アクセシビリティ、拡張 Skinning
 *画像の使用時の柔軟性、組み込み HTML、2D-3D ベクターグラフィック

プログラミングモデル Javaの強力さ
 ジェネリクス、アノテーション、マルチスレッド、コンパイル
 標準の Java IDE , デバッグ、プロファイル

JavaScript と HTML 5 のネィティブの相互運用性
 組み込み HTML
 シームレスなDOMアクセス
 JavaScriptからJavaの Scenegraph を操作


ハイパフォーマンスのグラフィックエンジンの発表
 来年提供予定、開発ビルドは現在ダウンロードサイトから入手可能。
 新しくハードウェアアクセラレートされた2D/3Dのグラフィックパイプライン
 Java と JavaFXの実行環境ににしっかり統合
 かんたんなプログラミング:影、ぼやかし、反射、エフェクト、変換
 現在:3D変換が必要:将来:完全な 3D オブジェクト

最近の グラフィックハードウェアの機能の拡張を利用可能
 Windows 環境における DirectX
 OpenGL ES 2.0のサポート
 
完全で統合された開発ライフサイクル
 NetBeans を使用したビジュアルアセンブリ、編集、コンパイル、プロファイル、デバッグ
 データバインド(REST,JDBC,JSON,XML)
 Productivity: Coin, Closures, Modular Development, Graphics


デモ : 全て Java で作られたJava FX アプリケーション
Vector グラフィックを使用し、タッチスクリーンで操作が可能

NetBeans は 2011年に2バージョンをリリース予定
6ヶ月で 20% 利用者が増加
新機能リストとビルドは下記のURL

JavaFX
Oracle は JavaFX UIコンポーネントやコントロールを
オープンソースで作成/利用できる事についてコミット


新しい Java アプリケーションモデルに対して Java アプリケーションサーバを最適化
Dependency Injection を利用したアプリケーションサーバのモジュール化
軽量な Web Profile を提供し、JSP/Servlet/JSF を使用し、タイマーサービス、MDB 等を利用しないアプリケーションに最適、
JavaOne で GlassFish v3.1 のマイルストーン 5 を利用可能
マイルストーン 5 でクラスタ対応
POJOとEJBのプログラミングで生産性の向上
パフォーマンスと相互運用性の点でJava Webサービスを拡張
スクリプト言語、動的言語とより良い相互運用性


アプリケーションサーバのモジュール化の歴史
 2009年 – 参照実装における HK2 のマイクロカーネルベースの実装
 2010年 – エンタープライズ OSGi の仕様に準拠 ー JPA, JNDI, JDBC,JTA, HTTPサービス
 2010年 – OSGi と JavaEEを融合したハイブリッドプログラミングモデル

軽量 Web プロファイルの提供
 2009年 – JSR 316 Web Profile 提供
 2010年 – クラスタ対応の Web Profile を提供予定

POJOとEJBのプログラミングで生産性の向上
 2009年 – EJB 3.1 Lite, DI, Web Beans, Bean Validation の提供
POJOとEJBのプログラミングで生産性の向上
2010年 – JAX-WS, Reliable Messaging, Secure Conversations,Reliable Secure Protocol
2010年 – WS-I Basic プロファイル 2.0 – .NETアプリケーションとの相互運用性


デモ: GlassFish v3 を使用した POJO (JPA)開発デモ&管理コンソール


2011年に 2つの GlassFish をリリース予定
2011年リリース予定製品のコミットされた機能
 http://glassfish.dev.java.net
2009年1年で800万ダウンロード
外部の貢献者の参加を歓迎


全てのデバイスに対して Java/Webアプリケーションを提供

モバイルデバイスと言語機能の改善
Web 技術の統合
H/W や OS の機能へアクセスする新しいデバイス API
Java Card, Java TV, モバイル向けの軽量で電力を使用しない Java
Javaデバイスのツールやエミュレータ


java mobile.next
 言語、VM、ライブラリ、オプションパッケージと APIの改良

Web 技術の統合(HTML/JavaScriopt/CSS)
 Java ME の実行環境はモバイルサービスアーキテクチャをベース
 Webキットエンジン:JavaScriptエンジン、Java/JavaScriptブリッジ

H/W や OS の機能へアクセスする新しいデバイス API
 グラフィック、接続、IMS、センサー、支払い、電話、位置情報

 電話: ARM7/ARM9チップと制限されたメモリに対して最適化、
 TV : ブルーRay Java, DVB マルチメディア、Tru2way デジタルケーブルに最適化
 Card: パーソナル Identity Verification, National ID & health Care Card
 Java ME ロードマップ:
http://oracle.com/technetwork/java/javame

最後に、
個人的な感想ですが、先日ラリーエリソンの Welcome キーノートで JavaFX グラフィックエンジンについて触れられていたので、もう少しページを割いて細かな情報が得られるかと思っていましたが、ハイライトにしては少し情報がすくなかったように思っております。グラフィックエンジンについてはお試し版がダウンロードサイトから入手できるとスピーチされていたのですが、ダウンロードサイトを見つける事ができず(^_^;)、ここでリンクを紹介する事ができませんでした。すいません。後ほど別途 URL が分かれば、こちらからリンクを貼るようにします。
そして、一つ驚いたは JRockit Flight Recorder の機能が将来 HotSpot でも利用可能になるという事が発表された点です。
また、JDK 7, 8 の今後の動向(Plan A,Plan B)についてですがこのJavaOne で決まったようです。

Plan B に決定した模様
JAVAWORLD: JavaOne 2010: JDK 7 and Java SE 7

2010年9月21日 at 6:49 午後

Java One 2010/Oracle Open World 報道

Oracle からプレスリリース
プレスリリース

各種メディアからも JavaOne/Oracle Open World に関する報道が発表されています。
2010/09/21
Oracle OpenWorld 2010現地レポート ~JavaOneの新たなステージ
Oracle OpenWorld 2010スタート、注目は買収後のSunとFusion Applications
Oracle OpenWorldが開幕、初日から新製品について熱く語るラリー・エリソン氏がいた
IT Media : Oracle Exalogic登場、Facebookの世界中の処理要求をたった2台のフルラック構成で処理できる
日経プレスリリース:米オラクル、ミドルウェア・マシン「Oracle Exalogic Elastic Cloud」を発表
日経プレスリリース:米オラクル、「Oracle Exadata Database machine X2-8」を発表
エリソン氏とHP幹部、基調講演でハード氏には言及せず–Oracle OpenWorldで
Oracle、クラウド戦略推進に向けたハードやソフトを発表
Oracle、「Exalogic Elastic Cloud」発表——エリソンCEOがクラウドを語る
オラクルのエリソンCEO、「1個の巨大なクラウド」を発表
オラクル、複数のアプリケーションをアマゾンの「EC2」対応へ

2010年9月21日 at 4:21 午後

JavaOne 2010 Java EE 関連のセッションスケジュール

JavaOne 2010 の開催が次の日曜日と迫ってきました。参加される方は既にスケジュールを決めていらっしゃるかと思いますが、私もどのようなセッションがあるのか、どのようなセッションがあるのかを行ったつもりになって調べてみました。下記のスケジュールは JavaOne 2010 のセッションの内 Java EE 関連だけをまとめました。

初日:
この日は、レジストレーションがメインですが、Larry 等による Welcome Keynote があります。

2010/09/19(日)
AM 09:00 REGISTRATION 開始 (Moscone) AM 09:00 – PM 9:00
PM 12:00 REGISTRATION 開始 (Hilton) PM 12:00 – PM 9:00
PM 12:30 Oracle Users Forum PM 12:30 – PM 5:00
PM 2:30 GlassFish 2010 Community Event and Party(PM 2:30-PM 4:30)
PM 5:30 Oracle Welcome Keynote(PM 5:30-PM7:30)
* Oracle, Larry Ellison
* Oracle, Safra Catz
* HP, Ann Livermore
PM 7:30 GlassFish 2010 Community Event and Party(PM 7:30 – PM 10:00)

2日目:
この日は丸一日セッション漬けですね。


2010/09/20(月)
AM 10:00 Hyperproductive JavaServer Faces 2.0
JavaServer Faces Antipatterns and Best Practices
OSGi and Java EE: A Hybrid Approach to Enterprise Java Application
AM 11:30 Groovy: To Infinity and Beyond
HK2: Oracle WebLogic Server, Oracle GlassFish Server, and Beyond
Java Persistence API 2.0: An Overview
Key/Value Storage in the Cloud
Taking Java to the Sky: Cloud Computing 2010 Expert Panel
Where Does All the Native Memory Go?
PM 12:30 Beginning with the Java EE 6 Platform
Extracting Real Value from Your Data with Apache Hadoop
PM 1:00 Attractive and Portable Mac OS X Swing Clients for Java EE Applications
Building a Pet Store That Will Survive Cyber Monday
Hands-on with RichFaces
Java Hold ‘em: Implementing an Online Poker Platform Using Java EE and Java SE
Ten Easy Ways to Improve Java EE Performance
What’s New in Grails 1.3?
PM 2:30 JavaServer Faces 2.0 Technology: Implementing Ajax-Infused Web
Maven 3.x: The Evolution of Enterprise Java Build Infrastructures
More Best Practices for Large-Scale Websites: Lessons from eBay
Querying with the New Java Persistence Criteria API
Secure, Asynchronous Web Applications Using Java Servlet 3.0 and Java EE 6
PM 4:00 Application Security Enhancements in Java EE 6
End-to-End Richness: Integrating Java EE Services to Create Engaging RIAs
Extreme Java Productivity: Enterprise Applications in Just Minutes
Java Persistence API (JPA) 2.0 with EclipseLink
Lessons Learned from Java in the Internet Age and What It Means for the Cloud
Resin: A Light-footed Java EE 6 Web Profile Platform
PM 5:45 JavaOne Keynote (PM5:45-PM7:15)
* Oracle, Thomas Kurian
* Intel, Doug Fisher
PM 7:30 JDBC and RowSet Community Discussion
Java on 40,000 Desktops
JavaServer Faces Community Dialogue
The Groovy and Grails BOF, with Live Grails Podcast Recording
The Play Framework: The Revolution in the Java EE World
PM 8:30 Advanced Monitoring and Troubleshooting with VisualVM
Apache Tapestry State of the Union
GlassFish Roadmap and Strategy
Implementing CDI: Goals, Milestones, and Perspectives
Java Servlet and Web Container Community Input
Performance Tips and Tricks: Java EE, Java Persistence API, and JavaServer Faces
PM 9:30 Dependency Injection (DI) Flavors in Spring 3
Security in GlassFish v3 and v3.next

3日目:
この日も丸一日セッション漬けですが、PM 2:30 からの Roberto 達の Technical General Session は必ず出席しなければなりませんね。


2010/09/21(火)
AM 08:00 NoSQL Alternatives: Principles and Patterns for Building Scalable
What’s New in Enterprise JavaBean Technology
AM 09:30 A Peek at the Future: Going Beyond JavaServer Faces 2.0 with RichFaces 4
Creating Lightweight Applications with Nothing but Vanilla Java EE 6
Diagnosing and Fixing Memory Leaks in Web Applications: Tips from the Front Line
Getting More from Your CI Server: Taking Hudson to the Next Level
Java Persistence API: Tips, Patterns, and Best Practices
OSGi Migration Headaches
Pipelining for Performance
The Java EE 6 Programming Model Explained: How to Write Better
WebSockets Versus Comet: What Are the Differences, and Why Should I Care?
AM 11:30 Building Powerful WebSocket, Comet, and RESTful Applications Using Atmosphere
Comet and WebSocket Web Applications: Scale Server-Side, Event-Driven
Dealing with Asynchronicity in Java Technology-Based Web Services
JSR 299 (CDI), Weld, and the Future of Seam
Java Exam Room: Tools and Techniques to Get an Inside Look at Your
Testing Java EE 6 Applications: Tools and Techniques
PM 12:00 Developing OSGi-Enabled Java EE Applications
Using OAuth with RESTful Web Services
PM 1:00 A Lean, RESTful Java Architecture for Building Rich HTML5 Web Applications
Bean Validation: Best Practices for Real Life
Complete Tools Coverage for the Java EE 6 Platform
Hacking Heating Systems with Java EE 6, JavaFX, and Scripting
PM 2:30 JavaOne Technical General Session (PM 2:30 – PM4:00)
* Oracle, Greg Bollella
* Oracle, Roberto Chinnici
* Oracle, Mark Reinhold
PM 6:00 Creating Modular CRUD Desktop Applications
Expression Language: Community Feedback and Future Development
Give Me a Proper Visual JavaServer Faces Editor or Else . . .
Object-Relational Mapping with the New Features of the Java Persistence API 2.0
PM 7:00 Embedded GlassFish
Enterprise JavaBean (EJB) Community Discussion
Framework Pluggability in a Java EE 6 Container
PM 8:00 7 Deadly Sins of Enterprise Java Programming and Deployment in the Multicore Era
Ajax Components on the JavaServer Faces Platform
One Java Project, Two Different Angles
Troubleshooting and Debugging SSL Problems
PM 8:15 Quickly and Efficiently Build CRUD Applications with Rich Client Platform[HOL]
PM 9:00 Chillin’ with ICEfaces
Hot Class Swapping: Avoiding Redeployment During Java EE Development
OSGi at a Large-Scale Enterprise: Lessons from eBay
olap4j: OLAP API for Java Developers

4日目:この日は夕方までセッションを頑張りましょう。夕方から Oracle の感謝イベントが開催されるので、この3日間の疲れを取るため思いっきりはじけましょう。


2010/09/22(水)
AM 10:00 A Lean, RESTful Java Architecture for Building Rich HTML5 Web Applications
Eliminating the Pauses in Your Java Application
JUnit Kung Fu: Getting More Out of Your Unit Tests
Java EE 6 Panel: What Do We Do Now?
Square Peg in a Round Hole: Managing XML Information in Java
Using Contexts and Dependency Injection (CDI) in the Java EE 6 Ecosystem
Using OAuth with RESTful Web Services
AM 11:30 Developing for Mobile Devices: Oracle Application Development Framework and Java
Fine-Grained Authorization for Java Applications
SQL .NET CLR Type Extensibility to Java
PM 12:30 Extracting Real Value from Your Data with Apache Hadoop
Securing Web Services
PM 1:00 Abstract Mashups for Enterprise Java
Top 10 Causes for Java Issues in Production and What to Do When Things Go Wrong
Transactions: Overused or Misunderstood
PM 2:15 Comparing and Contrasting Application Servers and Event Servers
Java Persistence API Futures BOF
PM 4:45 Myths, Misconceptions, and Hidden Gems in Java Platform Security
Scale Java Persistence API Applications with OpenJPA Slice
The Feel of Java EE 6: Interactive Onstage Hacking
The Space Elevator: Moving Big Data Between Your Enterprise and the Cloud
Throwing Complexity over the Wall: Rapid Development for Enterprise Java
PM 7:30 Oracle 感謝イベント (PM 7:30 – AM 0:00) Treasure Island

最終日:
最終日も夕方までセッションが用意されています。クタクタになっていると思いますが最後まで気合いで乗り切りましょう。最後に Wrap Up のイベントも開催されるようなので、終わったらこちらに集まってみましょう。


2010/09/23(木)
AM 09:00 JavaOne Keynote (AM 9:00 – AM 10:30)
* Ray Kurzweil
* Oracle, Richard Bair
* Oracle, Greg Bollella
AM 11:00 Beginning with the Java EE 6 Platform
Secure Identity Propagation Across Tiers and Security Domains
The Cassandra Distributed Database
What’s Cool in Apache MyFaces
PM 12:30 Applets? Yes, Applets: Deep-Dive Best Solution for Rich Internet
Google Web Toolkit, Take 2: Implementing Awesome Rich Internet
Java Transaction API Caching: Consistent, Distributed, and Coherent
PM 2:00 Building Enterprise Web Applications with Spring 3.0 and Spring 3.0 MVC
Building a JavaFX-Based Monitoring App, Using the GlassFish REST
Functional Programming in Java: Lessons Learned by GridGain
Hacker-Proofing Web Applications with Java EE 6
Login Failed, Try Again: 10 Best Practices for Authentication in the Cloud
Simpler Scalability, Fault Tolerance, and Concurrency Through Actors and STM
PM 3:30 Creating Modular Applications with Apache Aries and OSGi
JavaFX and the Enterprise: Spinning the Solution
Making Real-Time Data Come Alive
SomeSQL: Combining NoSQL Technologies with Existing RDBMS Architectures
Static Analysis in Search for Performance Antipatterns
The JSF 2.0 and HTML5 Version of Parleys.com
PM 4:00 It’s a Wrap! – Yerba Buena Gardens (PM 4:00 – PM 6:00) おしまい

2010年9月17日 at 2:27 午後

JavaOne 2010&OOW 開催 (09/19 – 09/23)

JavaOne 2010

9月19日〜23日まで、サンフランシスコで JavaOne が開催されます。今年の JavaOne は Oracle になってはじめての JavaOne になるわけですが、昨年までと違い、Oracle Open World と同時開催になります。
JavaOne は朝早くから夜遅くまでセッションがあり、参加者の皆様にはとてもハードな1週間になるかと思いますが是非、新しい JavaOne を堪能してきてください。

私は大変残念ながら今年も日本で待機ですが、現地で発表された情報等をブログ、Twitter 等を通じて少しでも発信できればと思っております。日本語で Oracle Open World/JavaOne の情報を入手されたい方は下記の Twitter のリストをフォローしてください。社員が開催期間中に関連情報についてつぶやく予定です。

Oracle の社員の OOW/JavaOne レポーターリスト:
http://twitter.com/Oracle_Japan/openworld-reporters

日本からも数多くのお客様からご登録頂いておりますが、参加者の方でブログ等をお持ちの方がいらっしゃいましたら、ブログ の URL を教えていただけないでしょうか。広報より適宜、転載させていただいたりTwitterでつぶやかせていただきたいと思いますので、是非ご連絡いただければ幸いです。

ご連絡は下記のアドレスまで:
Yoshio ドット Terada アット Oracle ドット COM

また、JavaOne 参加者の皆様の中で、現地で日本人と交流を図りたい方は是非、さくらばさんにご連絡ください。現在さくらばさんが 日本から参加されるお客様のリストを下記にまとめて下さっています。

JavaOne 2010 日本からの参加者 リスト:
http://twitter.com/skrb/javaone2010

上記リストに追加して頂き、現地での情報交換に役立てて頂ければと思います。

最後に、
サンフランシスコは結構寒いと思いますので少し暖かめの服をご用意して行かれると良いかと思います。私も、過去用意していかず、あまりにも寒くて現地で服を購入した思い出があります。
それでは、参加される皆様くれぐれもお体に気をつけて行って来てください。

2010年9月16日 at 11:34 午前

HTTP TRACE メソッドの無効化 on GF v3

GlassFish v3.0 の HTTP リスナーの設定はデフォルトで TRACE メソッドが有効になっています。

$ telnet localhost 8080
Trying ::1…
Connected to localhost.
Escape character is ‘^]’.
TRACE / HTTP/1.1
Host: localhost



HTTP/1.1 200 OK
Server: Oracle GlassFish Server 3.0.1
Content-Type: message/http
Content-Length: 35
Date: Tue, 07 Sep 2010 08:45:33 GMT


TRACE / HTTP/1.1
host: localhost

TRACE メソッドを無効化するためには、asadmin の set サブコマンドで trace-enabled オプションを true から false に変更してください。

$ asadmin set configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.trace-enabled=false
configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.trace-enabled=false

コマンド set は正常に実行されました。

設定変更後、再度アクセスすると無効になっている事を確認できます。

$ telnet localhost 8080
Trying ::1…
Connected to localhost.
Escape character is ‘^]’.
TRACE / HTTP/1.1
Host: localhost


HTTP/1.1 405 TRACE method is not allowed
Allow: POST, GET, DELETE, OPTIONS, PUT, HEAD

Content-Length: 0
Date: Tue, 07 Sep 2010 08:50:53 GMT

2010年9月7日 at 5:56 午後

X-Powered-By ヘッダの削除方法 on GF v3

ちょっとしたメモです。
GlassFish v3.0.x で X-Powered-By ヘッダを削除する方法を下記に示します。標準の設定で GlassFish にアクセスすると、下記のように “X-Powered-By” ヘッダが表示されます。

$ telnet localhost 8080
Trying ::1…
Connected to localhost.
Escape character is ‘^]’.
GET / HTTP/1.1
Host: localhost


HTTP/1.1 200 OK
X-Powered-By: Servlet/3.0
Server: Oracle GlassFish Server 3.0.1
Accept-Ranges: bytes
ETag: W/”5147-1282383202000″
Last-Modified: Sat, 21 Aug 2010 09:33:22 GMT
Content-Type: text/html
Content-Length: 5147
Date: Tue, 07 Sep 2010 08:10:51 GMT

これはデフォルトで作成される HTTP リスナーの設定において有効化されているためです。

$ ./asadmin get configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.xpowered-by
configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.xpowered-by=true

コマンド get は正常に実行されました。

これを無効化するためには、下記のように無効化(false)に設定してください。

$ ./asadmin set configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.xpowered-by=false
configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.xpowered-by=false

コマンド set は正常に実行されました。

設定変更後、再度アクセスすると”X-Powered-By” ヘッダが削除されている事を確認できます。

$ telnet localhost 8080
Trying ::1…
Connected to localhost.
Escape character is ‘^]’.
GET / HTTP/1.1
Host: localhost


HTTP/1.1 200 OK
Server: Oracle GlassFish Server 3.0.1
Accept-Ranges: bytes
ETag: W/”5147-1282383202000″
Last-Modified: Sat, 21 Aug 2010 09:33:22 GMT
Content-Type: text/html
Content-Length: 5147
Date: Tue, 07 Sep 2010 08:19:09 GMT

※ Server ヘッダは現時点では削除できませんが、もうすぐでできるようになるらしいです。
https://glassfish.dev.java.net/issues/show_bug.cgi?id=6900

追記:GlassFish v3.0.1では下記のサブコマンドを実施し変更できました。

$ ./asadmin create-jvm-options -Dproduct.name=”My Own Server”
1 オプションを作成しました
コマンド create-jvm-options は正常に実行されました。
$ ./asadmin restart-domain domain1
ドメインは正常に再起動されました
コマンド restart-domain は正常に実行されました。

ドメインを再起動した後、再度アクセスして確認してください。

$ telnet localhost 8080
Trying ::1…
Connected to localhost.
Escape character is ‘^]’.
GET / HTTP/1.1
Host: localhost


HTTP/1.1 200 OK
Server: My Own Server
Accept-Ranges: bytes
ETag: W/”5147-1282383202000″
Last-Modified: Sat, 21 Aug 2010 09:33:22 GMT
Content-Type: text/html
Content-Length: 5147
Date: Thu, 09 Sep 2010 01:58:41 GMT

2010年9月7日 at 5:27 午後

Java EE 6 & GlassFish v3 の概要

先日開催した、ダイセミの発表資料を公開します。

普段は

ここに書いたように、プレゼン発表をする際に原稿をおこすことは殆どないのですが、ダイセミはいつもの人前でのプレゼンと違い、目の前のパソコンに向かって説明を行うので、私としてはとてもやり辛いプレゼン環境です。そこでダイセミ用には原稿を作成しておりました。(以前のJavaSEの時もダイセミ用には原稿を作成しました。)
せっかく文章を作成しており、これを捨てるのももったいないので、原稿をそのままここに掲載します。自分の発表用の元ネタとして作成しているので口語表現でおかしな部分もあるかと思いますが、プレゼンをめくる際に、この原稿を読み進めていただければわかりやすいかと思いますので、どうぞご活用ください。

Page 1
************************************************************
今日は、GlassFishで実感、エンタープライズ Java の進化と題してJava EE 6 と GlassFish v3 の新機能をそれぞれ紹介したいと思います。資料が若干多いため足早に説明をしますが1時間程どうぞ宜しくお願いします。
************************************************************

Page 2
************************************************************
本日のアジェンダは下記のような流れで進めたいと思います。
************************************************************

Page 3,4
************************************************************
はじめに、もう一度 Java EE を見直してみませんか?
************************************************************

Page 5
************************************************************
Java EE の開発にこのようなイメージを持っていませんか?Java EE は XML の設定が困難、設定が膨大、パッケージも面倒、動作させるアプリケーションサーバも重い。。。。。
************************************************************

Page 6
************************************************************
皆様、もし今このようなイメージをお持ちでしたら、そのイメージを是非一新してください。今日、皆様にお伝えしたいメッセージはこのページに凝縮されていいます。Java EE 6 になり Java EE 5 から比べてもさらに簡単開発が進化しました。また、Java EE 6 のアプリケーションの動作環境であるアプリケーションサーバ、GlassFish v3はとても簡単ですし、とても軽量です。もう Tomcat を使う必要はどこにもありません。さらに、今年の年末にリリース予定の GlassFish v3.1 はクラスタ機能を持ち本番環境向けの機能も提供します。
************************************************************

Page 7
************************************************************
さて、それでは実際にそれぞれの概要について説明していきたいと思います。まず、始めに Java EE 6 の概要を紹介します。Java EE 6 は昨年末に正式リリースされました。
************************************************************

Page 8
************************************************************
まず、Java EE 6 のテーマについて紹介します。今回は時間の関係上 JavaEEに含まれる全ての機能/仕様を紹介することはできません。これらの中から重要となるポイントだけをピックアップして紹介して行きたいと思います。

テーマはここに記載するように、拡張性、プロファイル対応、Pruning、より進んだかんたん開発の4点が挙げられます。
************************************************************

Page 9
************************************************************
拡張性についてですが、Servlet 3.0 や JSF 等においては設定ファイルの記載がオプション化され、それぞれ設定ファイルで記載してた内容をプログラミング上でアノテーションを使用して記載する事が
できるようになりました。また仮に web.xml の設定をした場合でもweb.xml の内容が巨大化して可読性が悪くなった場合、各フレームワーク毎に設定ファイルを分け web-fragment.xml を記載し設定ができるようになったため、拡張性が高くなりフレームワーク管理が容易になりました。
************************************************************

Page 10
************************************************************
続いてプロファイルですが、Java EE 6 から新たにプロファイルと呼ばれる概念が導入されました。これは Java EE の全ての機能を提供するのではなく必要な技術を用途に応じて選択し、全ての Java EE の機能のサブセットを提供する事ができるようになりました。例えば、将来的には電話会社向けのプロファイルといった物も提供されるかもしれません。

今回、Java EE 6 のリリース時に最初に提供されるプロファイルはこちらに記載した2点になります。一つは Web プロファイルで、 Web の開発に特化した物、そして Enterprise Platform と呼ばれる、今までと同じJava EE のフルセットを提供するものが用意されています。
************************************************************

Page 11
************************************************************
Web プロファイルについて、含まれる技術をこちらに記載しています。この中に含まれるものは、基本的な Web アプリケーション開発に必要とされる技術だけをピックアップした物です。 この中に EJB Lite と記載していますが、これも EJB の全ての機能ではなく一部の機能だけを含むものです。例えば、EJB Lite にはメッセージドリブンビーン等は含まれません。Java EE の全てではなく Web の開発に特化したサブセットだと認識してください。

このプロファイルの導入メリットは不必要な機能を含まない事により無駄なリソースを消費しなくて済むといったメリット等があります。
************************************************************

Page 12
************************************************************
続いて、Pruning について紹介します。Java EE 6 で初めて仕様の削減を行う事が計画されました。今まで、Java EE は巨大化の一歩をたどって来た歴史がありますが、ここで仕様として古くなった物、使われなくなった API を整理し新しく置き換わった仕様があれば、そちらに移行して頂くようにこのような取り組みを行っています。例えば、JAX-RPC は JAX-WSへ Entity Bean は JPA と便利で扱い易くなった仕様へ移行していただく事を推奨します。

ただし、いきなり使えなくすると既存のアプリケーションに対して非常に大きな影響がでます。ですので、影響を極力すくなくするため、まずは削減候補をオプション化し、さらに次のバージョンで削除するという2段階のプロセスを経て削除するという安全策が講じられております。

現時点で、削減候補の仕様を多用されているお客様は削減候補となった仕様に置き換わる技術への移行をおすすめ致します。
************************************************************

Page 13
************************************************************
続いて Servlet 3.0 について紹介します。Servlet 3.0 は JSR-315 で仕様が制定されましたが、特徴としてここに挙げるようなポイントがあります。中でもマルチパート対応としてファイルがアップロードできる機能が標準仕様に盛り込まれた他、非同期 Servletを実装する事ができるようになったため、Comet等で実現していた Server Push の技術を Servlet で実現できるようになりました。

重要なポイントは、Java SE 5 の言語仕様で追加されたアノテーションベースの宣言的プログラミングモデルを採用し、ジェネリクス等を扱い型の安全性等も強化された点が挙げられます。
************************************************************

Page 14
************************************************************
Servlet 3.0 で指定可能なアノテーションをこのページに記載します。プログラム上でアノテーションを記載した場合でも設定を上書きしたい場合は、web.xml に記載する事で上書きができます。
************************************************************

Page 15
************************************************************
このページでは実際の Servlet 3.0 のサンプルコードを記載しています。この例の赤文字の部分に記載したように、Servlet 2.5 までは web.xml に記載していた内容をプログラム上で記述する事ができるようになっています。
************************************************************

Page 16
************************************************************
続いて、EJB 3.1 について紹介します。EJB 3.1 は JSR-318 で制定されました。

特徴は、こちらに示すようなポイントが挙げられます。EJB 3.1 の個々の特徴に関する詳細は最後に紹介する参考 URLの私のブログで参照して頂ければと思います。
************************************************************

Page 17
************************************************************
ここでは、EJB 3.1 の内便利になった機能を紹介します。その1つはパッケージングが簡略化された事です。今まで EJB は ear ファイルにまとめたり、web 関連モジュールは war にまとめたりとパッケージングするのがとても面倒でした。
************************************************************

Page 18
************************************************************
EJB 3.1 からはパッケージングがとても簡単になり、EJB クラスも単一の war ファイルへ含める事が可能になりました。もちろん今までのようにパッケージングして頂いても問題はございません。また、配備記述子もオプション化されたため、開発者にとっての負担が大幅に軽減されています。
************************************************************

Page 19
************************************************************
また、EJB 3.1 から EJB 3.1 Lite と呼ばれるサブセットを提供しWeb Profile で利用できるようになっています。ここに記載されているようにLite に含まれる機能だけで十分な場合は、Web Profile 版を利用する事ができます。一方、MDBやタイマーサービス等 Full に含まれる機能を利用したい場合は、Enterprise Platform 版を利用してください。

このようにニーズに応じて不要な物を含ませない事ができるようになったのは、Java EE 6 の特徴の一つです。
************************************************************

Page 20
************************************************************
続いて、Bean Validation について紹介します。この仕様は、JSFとJPAに統合されており、ManagedBeanやEntityクラス内で利用することができます。JSFとの統合では、たとえば、コンポーネントに対するバリデーションの結果、メッセージをJSFコンポーネント内に表示させることも可能です。

これらのバリデーションもアノテーションを使用して簡単に記述する事ができます。また、すでに提供されているバリデーション以外にも、カスタムバリデーターを作成することもできます。
たとえば、Emailアドレスの記載内容をチェックするカスタムバリデータを独自に作成することができます。
************************************************************

Page 20
************************************************************
続いて、JPA 2.0 について紹介します。Java Persistence API 通称 JPA はJava EE 5 では EJB 内に含まれていましたが、JPA 2.0 からは Java SE 内からも利用ができるように、仕様が独立しました。JPA 2.0 で提供される機能は基本的には JPA 1.0 プラスα、なのですが、これは実際に JPA 1.0 を使用しているお客様からのフィードバックの元に追加された便利な機能を含んでいます。例えば Entity クラスの作成方法によってより柔軟なデータベーステーブルのモデリングができるようになった他、SQL 分ライクな JPQL についても新しい構文が追加されております。
その他便利な機能が多く含まれますので、こちらも別途私のブログに詳細に記述したプレゼンを用意していますので、ご参照ください。
************************************************************

Page 21
************************************************************
今日は、JPA 2.0 で追加された新機能の内 Criteria API をご紹介します。JPA 1.0 では JPQL という SQL 分ライクな文字列を記載して データベースのクエリーを実行するしか方法はありませんでしたが、Criteria API はJPQL の代わりにプログラミング上でクエリを記載する事ができるようになりました。

文字列で記載する場合、クエリ文字列の記載ミス等があった場合、プログラミング中にはそのミスには気付かず、実行時に初めてランタイムエラーが発生しミスに気付きます。

開発時において、もしくは運用時も実行しなければエラーに気付かないのは非常に危険です。このようなランタイムエラーを極力さける事ができるのがCriteria API と Metamodel API の併用です。全てのデータベースに対するクエリーを Java プログラムだけで記載できるため、コンパイル時もしくは、統合開発環境が開発時にエラーを教えてくれます。そこで、ランタイムエラーが発生する前にミスに気付く事ができとても便利です。
************************************************************

Page 23
************************************************************
次は JSF2.0です。
JSF2.0の特徴ですが、大きなところで、Faceletsが採用され点があげられます。このため、JSPに代わりXHTMLによるビューの記述ができるようになりました。またこれにより、テンプレートの作成も簡単にできるようになりました。

また、かんたん開発の一環として、faces-config.xmlがオプション化されました。ManegedBeanをアノテーション化したり、JSFの各ページ間のナビゲーションを改良し、ボタンやリンク名からXHTMLファイル名をマッピングするようになりました。

その他、リソースフォルダを標準化したり、Ajax対応/ブックマーク可能なURLなどの機能が追加されています。
************************************************************

Page 24
************************************************************
最後にDIについて紹介します。従来のDIに追加して、CDIという機能が追加されました。これは、CDI: Context and Dependency Injection for Java EE の略で、当初はJSR299でWebBeansという名称で仕様作成されていました。CDIでは、Java EE 5よりもより汎用的にDIを利用することができるようになっています。

新たなアノテーションとして、@Injectで注入するフィールドを定義します。また、独自のインジェクションポイントを自由に定義することも可能です。

CDIでは、EJB SssionBeanやJSFのManagedBean、CDIコンテナがモジュール内で見つけたBeanクラスをInject対象とすることができます。このCDI機能は、起動時のクラスロードによる負荷があるため、デフォルトでは無効となっております。有効かするためには beans.xmlというファイルを定義し有効化されます。beans.xmlは空のファイルでもかまいません。

以上で、足早に、Java EE6 の新機能について紹介してきましたが、いずれの機能もよりかんたん開発をめざして改良が施されておりますので、Java EE は理解するのも難しい、コーディングするのも難しい、パッケージングするのも大変等といった過去の悪しきイメージは取り除いていただき、今一度このかんたんになった Java EE 6 を是非試して頂ければと思います。
************************************************************

Page 25, 26
************************************************************
続いて、GlassFish v3 について概要を紹介しますGlassFish v3 は Java EE 6 の参照実装で世界で初めてJava EE 6 の仕様に完全に準拠したサーバとして提供しております。

このアプリケーションサーバは、非常に軽量で起動もとても高速です。また、Java EE 6 のプロファイルに対応し、Web Profile 版、Enterprise Platform 版のそれぞれを提供しています。

過去のバージョンに比べ、アーキテクチャも刷新され、OSGi のモジュールサブシステムが新たに導入されました。

簡単な操作という観点では、インストールも zip 版を提供しているのでunzip するだけですぐ使える環境を用意することもできます。

また、あらたに JRockit Java VM を正式サポートするようになりました。
************************************************************

Page 27
************************************************************
起動時間が高速という事なのですが、これは実際にインストールして試して頂きたいのですが、私が普段使用している Mac OS/Xでは約4秒程でアプリケーションサーバが起動します。非常に軽量なコンテナで、アプリケーションサーバは重いというイメージを払拭するサーバです。

開発時にはアプリケーションサーバを頻繁に再起動する場合がありますが、このアプリケーションサーバは非常に高速で起動/再起動ができますので開発時の待ち時間を大幅に減少する事ができます。また運用時においても再起動による待ち時間を大幅に減少する事ができます。
************************************************************

Page 28
************************************************************
かんたん開発では、今世の中で有名な統合開発環境はサポートしており、統合開発環境と連携して開発がとても楽になります。
************************************************************

Page 29
************************************************************
また、これは GlassFish が持つ機能なのですが、アプリケーションの再配備の時に以前のセッションを保持したまま再配備ができる機能を提供していますので、アプリケーション開発においては非常に便利です。例えばログインをするようなアプリケーションを構築している場合、ある一部を修正して再配備するだけで、もう一度ログインから行わなければなりませんでしたがセッションを持続するおかげで再ログインする必要がなくなります。
************************************************************

Page 30
************************************************************
また、かんたんな管理機能として Web ブラウザからアクセスできる GUI の 管理画面を用意していますので、直感的に理解しやすいインタフェースを利用して簡単に管理を行う事ができます。その他、v3 から RESTful インタフェースを利用した管理もできるようになっています。
************************************************************

Page 31
************************************************************
つづいて、GlassFish は非同期 I/O に対応したサーバとして実装されております。

今までの Web Server/Application Server はマルチスレッドの同期I/O(Blocking I/O)として実装された物が主流でした。

同期 I/O 型のサーバの処理内容を左の絵を使って説明します。仮にサーバがスレッドプール内に3つのスレッドを保持している状態で、同時に5個のリクエストが来た事を想定してください。この時各処理はリクエスト毎にブロックされているため、残り2つのリクエストはキューに溜まったままになり、他のスレッドの処理が終わらないと処理する事ができません。これを右側の非同期 I/O のサーバを使った場合、各処理をブロックしないで処理ができるので少ないスレッドで数多くのリクエストを
さばく事ができるようになります。

リクエスト数が少ない場合は、マルチスレッド型のサーバの方がパフォーマンスがよいですが、リクエスト数が多くなればなる程、非同期 I/O の方がパフォーマンスがよくなります。
************************************************************

Page 32
************************************************************
続いて、GlassFish のアーキテクチャについて紹介します。今日は、詳細を説明する事はできませんが、OSGi のモジュールサブシステム上でアプリケーションサーバが動作している事をご理解ください。

このOSGi モジュールサブシステム導入のメリットは、アプリケーションサーバを再起動する必要がなく、追加モジュールをアプリケーションサーバに追加できたりもしくは不要になった機能を停止/削除する事ができるようになる点です。

また、OSGi の導入により GlassFish 自身を利用者の皆様のご自身でご自由に拡張できるようになったのも一つのポイントです。

GlassFish では自由に拡張できるように、管理機能を拡張したい開発者のためにAPI を公開していますので、拡張可能なアプリケーションサーバといえます。
************************************************************

Page 33
************************************************************
次に 組み込み可能コンテナについて紹介します。GlassFish の組み込み可能コンテナの機能を使って
GlassFish の持つ機能を、他の Java アプリケーションから利用できるようになりました。

例えば、GlassFish をインストールしたり設定せずに、GlassFish のライブラリをコピーするだけで、自分が独自に作成した Javaアプリケーション内でGlassFish の Web サーバ機能を使ったり、内部的にアプリケーションをデプロイして GlassFish のドメイン管理機能を使わずに限定したサービスだけを提供する事もできます。

また、開発時に有効なのは、EJB のテストが非常に楽になる点です。今ままで EJB の単体テストを行う際には、作成した EJB を一度アプリケーションサーバにデプロイした後、リモートからアクセスする等してテストを行っていたかと思います。
しかし、組み込みコンテナを使うと、JUnit のテストコード中でコンテナを起動させ同一 JavaVM のプロセス内で EJB のテストを行う事ができるようになりEJB の単体テストが大幅に楽になります。
************************************************************

Page 34
************************************************************
JUnitのテストコードのサンプルを記載します。赤文字で記載したように、プログラム中で EJB コンテナを起動し、JNDI のルックアップだけでテストができるようになりとても便利です。

以上で GlassFish v3.0 の概要説明は終わりです。
************************************************************

Page 35
************************************************************
最後に GlassFish の今後について若干触れておきたいと思います。
************************************************************

Page 36
************************************************************
今後についてですが、
まず、GlassFish v3.1 というものが今年の年末にリリースされる予定です。これは、複数台のマシンで稼働/管理ができるクラスタ機能を持つものでまた高可用性機能も提供する予定です。また Coherence にも対応する予定です。

次に、来年以降 v3.2 で v3.1 に対する改良版を提供する予定です。このバージョンでは次期 Java EE の 7 のアーリアクセス機能も提供する予定です。

最後に、GlassFish v4 では Java EE 7 に対応した物をリリースする予定です
************************************************************

Page 37
************************************************************
GlassFish v3.1 ではクラスタ対応がメインの機能ですが、その他、HTML5のWebSocket 対応等も含まれます。
************************************************************

Page 38
************************************************************
次に、GlassFish v3.1のクラスタ機能を紹介したいのですが、その前に既存の v2.1 のクラスタ機能についてかんたんに紹介します。v2.1 では分散されたマシン上にノードエージェントと呼ばれるエージェントプロセスを必ず導入する必要がありました。このノードエージェント経由でサービスの起動/停止等のライフサイクルの管理を行っていました。
************************************************************

Page 39
************************************************************
一方、GlassFish v3.1ではノードエージェントの代わりに 各マシン上で SSHD のデーモンプロセスを起動し SSH 経由でサービスの起動/停止等を行うように変更されました。これにより以前にくらべ軽量に命令を実行させる事ができるようになります。
************************************************************

Page 40
************************************************************
最後に、ざっと GlassFish の特徴について紹介します。
後ほど、私のブログで本資料を公開しますので、詳細は後ほどご確認ください。
************************************************************

Page 41
************************************************************
参考情報は下記の通りです。
私のブログの URL はここに記載している yoshio3.com になります。
************************************************************

Page 41
************************************************************
まとめます。
Java EE 6 でさらに簡単開発がすすみました。XML による設定ファイルの編集はすくなくなりました。また、組み込みコンテナを使って EJB の単体テストも簡単になります。また、GlasssFIsh はとても軽量です。インストールもとても簡単です。Tomcat をまだ使っている方は是非 GlassFish を試してみてください。

今後でてくる GlassFish ではクラスタ機能も提供する予定です。

以上で本日の私からの発表は以上です。
どうもご清聴ありがとうございました。
************************************************************

2010年9月1日 at 4:12 午後 1件のコメント


Java Champion & Evangelist

Translate

ご注意

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

カレンダー

2010年9月
 12345
6789101112
13141516171819
20212223242526
27282930  

カテゴリー

clustermap

ブログ統計情報

  • 1,288,447 hits

Feeds

アーカイブ