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
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 で決まったようです。
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」対応へ
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) おしまい |
JavaOne 2010&OOW 開催 (09/19 – 09/23)
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
上記リストに追加して頂き、現地での情報交換に役立てて頂ければと思います。
最後に、
サンフランシスコは結構寒いと思いますので少し暖かめの服をご用意して行かれると良いかと思います。私も、過去用意していかず、あまりにも寒くて現地で服を購入した思い出があります。
それでは、参加される皆様くれぐれもお体に気をつけて行って来てください。
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 |
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 |
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 ではクラスタ機能も提供する予定です。
以上で本日の私からの発表は以上です。
どうもご清聴ありがとうございました。
************************************************************