2015年2月25日

[Database] Oracle In-Memory Advisor now available

原文はこちら。
https://blogs.oracle.com/UPGRADE/entry/oracle_in_memory_advisor_now

Oracle In-Memoryはすばらしい機能ですが、よくぶち当たる問題は、こんなトリッキーな質問でしょう。
どの表、パーティションをIn-Memoryカラムストアを利用するようにマークすればいいの?
その答えは、My Oracle Supportからダウンロード可能なIn-Memory Advisorで簡単にわかります。
MOS Note:1965343.1 Oracle In-Memory Advisor
https://support.oracle.com/rs?type=doc&id=1965343.1
このAdvisorでは、In-Memoryに配置すると最大のメリットをもたらすオブジェクトを識別するレポートを、そうした推奨事項を実装するSQL*Plusスクリプトと共に作成します。 AdvisorはOracle Database 11.2.0.3以上で動作し、もちろん推奨事項を実装することができるのはOracle Database 12.1.0.2(およびそれ以後)です。
なお、このIn-Memory AdvisorはDatabase Tuning Packのライセンスの下で利用許諾されるものですので、お見知りおきください。
詳細情報はOTNのページからどうぞ。
Oracle Database In-Memory Advisor
http://www.oracle.com/technetwork/database/manageability/inmemory-advisor-2412222.html
[訳注]
Advisorを使う上でのベストプラクティスをまとめたホワイトペーパーも出ています。
Oracle Database In-Memory Advisor Best Practices
http://www.oracle.com/technetwork/database/manageability/info/twp-in-memory-advisor-bp-2430474.pdf
Advisorのプレリリース版を入手してらっしゃる場合は、破棄いただいて、製品版をご利用ください。

2015年2月24日

[Java, FMW] Sonatype Nexus 2.11.2 supports Oracle Maven Repository

原文はこちら。
https://blogs.oracle.com/WebLogicServer/entry/sonatype_nexus_2_11_2

SonatypeチームがNexus 2.11.2 repository managerのリリースを発表しました。このリリースでは、Oracle Maven Repositoryとの連係が可能になっています。
この新しいNexus 2.11.2リリースでは、Nexus OSSとNexus Proの両方でOracle Maven Repositoryの認証機構をサポートしています。これにより、Nexusで代理リポジトリを設定し、インデックスの閲覧や部品の検索を通じてコンポーネントを発見できるようになります。この設定はNexusとすべてのプロジェクトで一度実施するだけでOKです。開発者とCI(Continuous Integration)サーバがコンポーネントにアクセスし、手作業が必要なくなります。Nexus側からすると、新リリースへのアップグレードの一環で構成を簡単に変更できます。
ぜひSonatypeのブログエントリ"Using the Oracle Maven Repository with Nexus"をお読みください。
Using the Oracle Maven Repository with Nexus
http://www.sonatype.org/nexus/2015/02/19/using-the-oracle-maven-repository-with-nexus/

2015年2月20日

[Database] Oracle REST Data Services EA2 has just shipped!!!!!!

原文はこちら。
https://blogs.oracle.com/newgendbaccess/entry/oracle_rest_data_services_ea2

Oracle REST Data Services 3.0のEarly Adopted Release 2(早期評価版)がOTNからダウンロードできるようになっています。
[訳注]
Oracle REST Data Servicesは、以前Oracle APEX Listenerと呼ばれていました。
Oracle REST Data Services
http://www.oracle.com/technetwork/developer-tools/rest-data-services/overview/index.html
このREST Data Serviceは、将来計画されているより多くの新世代データアクセス機能のための基盤を提供する重要なリリースです。本リリースに含まれる機能を一部ご紹介しましょう。
  • JSON Collection APIをサポートしました。"schema-less"、"schema-later"の開発のための、Oracle Database 12cに格納されているJSONドキュメントのCRUD操作およびクエリ操作が可能です。
  • Oracle NoSQL Databaseをサポートしました。
  • CRUD操作、クエリーフィルタやソート、一貫性のあるページネーションなど、Oracle Databaseのリレーショナル表のためのJSON Collection APIが自動で有効化されています。
  • Oracle REST Data Serviceはシンプルで簡単にインストールできます。APEXのインストールは不要です。

2015年2月19日

[Database, JavaScript] node-oracledb 0.3.1 is on GitHub (Node.js driver for Oracle Database)

原文はこちら。
https://blogs.oracle.com/opal/entry/node_oracledb_0_3_1

開発チームを代表して、node-oracledbに対する新機能追加と不具合の修正をマージし、node-oracledbをアップデートしたことをお知らせします。
Oracle Database driver for Node.js
https://github.com/oracle/node-oracledb
node-oracledb 0.3.1のアップデート
  • Windows版の設定を追加しました。詳細は以下をご覧ください。
    Installing node-oracledb
    Node-oracledb Installation on Windows
    https://github.com/oracle/node-oracledb/blob/master/INSTALL.md#instwin
    pullリクエストしてくれたRinie Kervel(https://github.com/rinie)、コメント、テストして下さった皆様に感謝します。
  • データベース常駐接続プーリング (Database Resident Connection Pooling / DRCP) をサポートしました。詳細は以下をご覧ください。
    node-oracledb: API Documentation for the Oracle Database Node.js Driver
    Database Resident Connection Pooling
    https://github.com/oracle/node-oracledb/blob/master/doc/api.md#drcp
    "Database Resident Connection Pooling enables database resource sharing for applications that run in multiple client processes or run on multiple middle-tier application servers. DRCP reduces the overall number of connections that a database must handle. DRCP is distinct from node-oracledb's local connection pool. The two pools can be used separately, or together."(Database Resident Connection Pooling"
    (データベース常駐接続プーリング)は、複数のクライアントプロセスや、複数の中間層アプリケーション・サーバー上で動作するアプリケーションのために、データベース·リソースの共有を可能にします。DRCPを使うと、データベースが処理する必要のある接続の全体個数を減らすことができます。DRCPは、node-oracledbのローカル接続プールとは区別されます。2個のプールを別々に使用することも、一緒に利用することもできます。)
  • 暗黙の接続リリースの挙動と一致するよう、release()を使った明示的な接続のリリースでロールバックするようにしました。
  • Linuxにインストールした場合以下の順序でOracleライブラリを検索するようにしました。
    • インストール時の環境変数 $OCI_LIB_DIR と $OCI_INC_DIR の箇所
    • 最新版のInstant ClientのRPMがインストールされている箇所
    • $ORACLE_HOME
    • /opt/oracle/instantclient
  • LinuxでRPATH をサポートするようにしました。これにより、LD_LIBRARY_PATH に設定する必要はなくなります。詳細は以下をご覧ください。
  • Installing node-oracledb - Advanced installation on Linux
    https://github.com/oracle/node-oracledb/blob/master/INSTALL.md#linuxadv
  • Instant Clientのディレクトリ探索で、インストーラがで最終的に試す上で利用するディレクトリ名は、 /opt/oracle/instantclient もしくは C:\oracle\instantclient に変わりました。OCI_DIR_LIBやOCI_INC_LIBが設定されておらず、インストーラがライブラリの存在場所を推測する必要がある場合、 このパスが使われる可能性があります。
  • "Oracle 11.2 or later client libraries are required for building"(Oracle 11.2以後のクライアントライブラリがビルドのために必要です)というコンパイルエラーメッセージが追加されました。これは古いOracleクライアントライブラリを使ってビルドしようとした場合に発生します。このタイプのビルドに関する問題を自己診断するために有用です。
  • isAutoCommit プロパティの設定を修正しました。
  • Windowsにおけるプールされた接続を使った場合にクラッシュする問題を修正しました。
  • オブジェクト型をクエリする際にクラッシュする問題を修正しました。
  • terminate()失敗後に接続をリリースするという問題を修正しました(プールはまだ利用できません。これは今後修正される予定です)
  • terminate()では接続をリリースしないということをドキュメントで明確にしました。リソースのリークを防ぎプールの利用を最大化するために、不要なプールされた接続を明示的にrelease()でリリースすることを推奨します。
  • バージョンが0.3.1にアップデートされました。

[SOA/BPM] EDNを流れるメッセージを確認する

EDN(Event Delivery Network)とは、Oracle SOA Suite 11gで導入されたメッセージ伝播のための機構です。11gのEDNのデータストアはデータベース表をデフォルトで利用しています(JMSも利用できます)が、12cからは、WebLogic JMSを使うようになりました。
11gを使っている場合には、EDN-DB Debug Logというアプリケーションを使うことで、EDNを流れるメッセージを確認することができました。
EDN-DB Debug Log
http://{host}:{port}/soa-infra/events/edn-db-log
でも、12cからはWebLogic JMSを使っているため、EDN-DB Debug Logを使うと以下のような表示が出るだけで、使えません。



12cでEDNを流れるメッセージを確認するには、以下のような設定でサーバー診断ログに出力させます。
  1. Enterprise Manager Fusion Middleware Controlに管理者としてログイン
  2. soa-infra > ログ > ログ構成を選択
  3. oracle.integration.platform.blocks.eventで検索し、所望のロギングレベルを設定(下図ではTRACE 32を指定しています)し、[適用]をクリック
この作業に伴うサーバー再起動は不要です。
EDNを流れるメッセージは、診断ログ(<Domain Home>/servers/(サーバー名)/logs/(サーバー名)-diagnostics.log)にずらずらと出力されます。

2015年2月13日

[Java, JavaScript] Project Avatar Update

原文はこちら。
https://blogs.oracle.com/theaquarium/entry/project_avatar_update

Project Avatarは、JavaScriptコミュニティへ参加し彼らから学ぶことを目的として、クライアントサイドのJavaScriptプロジェクトとして3年以上前にスタートしました。クライアントサイドのJavaScriptフレームワークが急速に進化し、リーダーが「パック」から分離し始めるにつれ、弊社のミドルウェアの強みを活用し、サーバーサイドコンポーネントを追加しました。JavaOne 2013でProject Avatarをコミュニティにリリースし、End-to-EndのJavaScriptプログラミングモデルを提供しました。この中で、サーバーサイドコンポーネントはGlassFishやWebLogicのようなJava EE互換コンテナで利用できるようにしました。Avatar.js(Node.js互換ランタイム)はNodeライブラリをGlassFishやWebLogicのようなJava EE互換コンテナで利用できるようにしたものでした。

しかしながら、このアプローチに伴うNode.js互換の問題、パフォーマンスの問題(Java EEやNodeを同一VMに配置するためのチューニング)に見舞われ、導入したプログラミングモデルはJava EEコミュニティやNodeコミュニティに受け入れられませんでした。そのことを念頭に置き、「Avatar 2.0」に取り組み始めました。これは、JPAの上にJavaScriptライブラリを配置してJavaとの相互運用性やJava EE関連の相互運用性を考慮しつつ、Node自身のJVMで動作させ、Node互換に注力したものです。

この取り組みの中でわかり始めたことは、興味深いサービスがRESTful APIを通じて直接機能を公開し始めた、ということです。たとえば、Oracle DatabaseのNode.jsドライバにより、NodeアプリケーションにとってJava EEとのJavaの直接の相互運用性の関心が薄れてしまいました。
Introducing node-oracledb - a Node.js driver for Oracle Database
https://blogs.oracle.com/opal/entry/introducing_node_oracledb_a_node
結果、Avatarを再び再発明するよりは、むしろお蔵入りにして、マーケットの進化を見守ろうと決めました。引き続き業界をトラッキングし、たどった道を再評価していくことにします。

これまでの取り組みの中で、JavaScriptとNode.jsのについて多くのことを学びました。そしてAvatarの取り組みはOracle内で見た目以上に活用されてきました。例えば、Avatarで早期に必要だったWebSocketは、Tyrusとして結実し、今日GlassFishやWebLogicのWebSocket実装となっています。AvatarがNashornから本当に必要としてきたパフォーマンスの改善は、まもなく登場するJDK 8 Update 40を含む、複数回のJDKリリースの中でNashornユーザーに提供されてきました。最後に、Node.jsコミュニティがどれほど重要か、ということをまざまざと認識しました。Avatarはお蔵入りになりますが、Node.jsへの投資を増加しており、、2015年中にOracle Node Cloud Serviceを提供する計画です。このサービスはネイティブのNode.jsで構築されます。
Oracle Node Cloud Service
http://cloud.oracle.com/nodejs
さらに、InfoQやAdam Bienが記載しているように、Javaアプリケーション内でNashornを使うという試みを多数目にしています。
Leveraging Nashorn at Netflix
http://www.infoq.com/news/2015/01/nashorn-at-netflix
Enterprise Nashorn with Java 8
http://www.adam-bien.com/roller/abien/entry/enterprise_nashorn_with_java_8
Project Avatarの取り組みを通じてフィードバックを提供してくださった皆様に感謝いたします。みなさんが思う以上に我々をアシストしてくれました。本当に感謝しています。
AvatarおよびAvatar.jsプロジェクトページは、コードと関連するバイナリと共に、そのまま利用可能の状態にしておきますので、学習したり活用いただければと思います。

2015年2月11日

[Java] Java EE 7 Maintenance Release

原文はこちら。
https://blogs.oracle.com/theaquarium/entry/java_ee_7_maintenance_release

Java EE 7仕様(JSR 342)は2013年5月末に最終化され、それ以後いくつかの小さなエラーが報告されてきました。
JSR 342: JavaTM Platform, Enterprise Edition 7 (Java EE 7) Specification
https://jcp.org/en/jsr/detail?id=342
Java EE 7仕様のメンテナンスリリースがまもなく出ますので、こうした問題も解決されることでしょう(Lindaによる発表は以下のリンクからどうぞ)。
[javaee-spec users] [jsr366-experts] Java EE 7 MR
https://java.net/projects/javaee-spec/lists/users/archive/2015-02/message/5
提示されている変更点や、提示されている変更に関わる仕様のドラフトをチェックいただけます。
Java EE 7 Maintenance Revie - Proposed Changes:
https://java.net/attachments/lists/javaee-spec/users/2015-02/5/JavaEE7-changes
Java™ Platform, Enterprise Edition (Java EE) Specification, v7 
https://java.net/projects/javaee-spec/downloads/download/JavaEE_Platform_Spec_MR_Draft.pdf
こうした提示された訂正は仕様のドキュメント自身にのみ影響するはずで、参照実装やTCK(テクノロジ互換性キット)には影響しないはずです。そんなわけで、このメンテナンスリリースが出て投票されると、仕様のバージョンはJava EE7 Rev A.となるはずです。

2015年2月10日

[Java] Is WebSocket Session really thread safe?

原文はこちら。
https://blogs.oracle.com/PavelBucek/entry/is_websocket_session_really_thread

今日のエントリは、JSR-356(Java API for WebSocket)の一つのシンプルなユースケースに関するものです。
JSR 356: JavaTM API for WebSocket
https://jcp.org/en/jsr/detail?id=356
Mark Thomasが jsr356-expertsメーリングリストで開始した比較的長いスレッドに注目しました。
[jsr356-experts] Clarification required on sending messages concurrently
https://java.net/projects/websocket-spec/lists/jsr356-experts/archive/2015-01/message/0
ここで提起されている問題は、以下のようなコードで単純化できます。
session.getAsyncRemote().sendText(message);
session.getBasicRemote().sendText(message);
最初のメッセージを非同期に送信し、2番目のメッセージを同期的に送信する、これのどこに問題なのかと不思議に思われるかもしれません。(クラスレベルのJavadocの最後の段落にあるように)Sessionオブジェクト自体はスレッドセーフですが、問題はコンテナ自身にあります。もっと正確に言えば、RemoteEndpoint.Basicインターフェイスに問題があるのです。以下はドキュメントの引用です。
Session (WebSocket server API 1.1 API)
https://tyrus.java.net/apidocs-javax.websocket/1.1/javax/websocket/Session.html
RemoteEndpoint.Basic (WebSocket server API 1.1 API)
https://tyrus.java.net/apidocs-javax.websocket/1.1/javax/websocket/RemoteEndpoint.Basic.html
If the websocket connection underlying this RemoteEndpoint is busy sending a message when a call is made to send another one, for example if two threads attempt to call a send method concurrently, or if a developer attempts to send a new message while in the middle of sending an existing one, the send method called while the connection is already busy may throw an IllegalStateException.
(このRemoteEndpointをベースとするWebSocket接続がメッセージを送信でビジー状態にある場合、別のメッセージを送信するよう呼び出しを実行すると、具体的には2個のスレッドが送信メソッドを同時に呼び出そうとしたり、既存のメッセージを送信する途中で開発者が新たなメッセージを送信しようとしたりすると、既に接続がビジーな状態である最中に呼び出された送信メソッドは、IllegalStateExceptionを送出することがあります。) 
IllegalStateException (Java Platform SE 6)
http://docs.oracle.com/javase/6/docs/api/java/lang/IllegalStateException.html?is-external=true
この段落からわかることは、前のメッセージが送信されていない場合、(上記サンプルの)2行目は、IllegalStateExceptionがスローされる可能性がある、ということです。正直に言うと、リファレンス実装では、(これまで)その例外は送出されず、どのサンプルアプリケーションやWebSocketアプリケーションではそのような状態をチェックしていません。とにかく、javadocは、例外を送出する必要がある、とは言っていません。そのため、上記サンプルについては、両メッセージを送信するまで2個目のブロックすることでOKです。

残念ながら、これで終わりというわけではありません。WebSocket APIはパーシャルメッセージの送信が可能であり、PartialメッセージやWholeメッセージをこのコンテキスト内で混在させる場合、少々難儀なことになります。以下の例を考えてみましょう。
session.getBasicRemote().sendText(message, false); // partial msg
session.getBasicRemote().sendBinary(data);
session.getBasicRemote().sendText(message, true); // partial msg
この例では、2番目のメッセージは3行目でのメッセージの前に送るべきではありません。シングルスレッドでこの順番で実行すると問題が発生します。具体的には、2行目のコードがTextメッセージの完了までブロックすると、問題が発生します。実装では何が起こるか想定出来ませんし、一般的に、スレッドを長時間にわたってブロックしたくないので、IllegalStateExceptionをスローすることは比較的よいことのように思えます。

(追記:リファレンス実装であるTyrusは、このシナリオを正しく処理していませんでした。この機能に関連する問題は、TYRUS-393として登録され、修正が次回のリリースバージョンである1.10に含まれる予定です)
Project Tyrus : JSR 356: Java API for WebSocket - Reference Implementation
https://tyrus.java.net/
[TYRUS-393] Incorrect handling of sending whole message during (unfinished) partial message.
https://java.net/jira/browse/TYRUS-393
これは仕様のグレーな部分(起こるかもしれないのであって、必ず発生するとか、発生しないというわけではない)であるため、実装では、好きなほうを選択できます。実際、スレッドのブロックとメッセージを送信するまで待機することが妥当と信じていますし、それが仕様に準拠したアプローチと考えています。Tyrusのために、少々守備的なソリューションを実装しました。具体的には、実装が短時間待機(スレッドをブロック)し、メッセージ送信の条件が許さない場合には、IllegalStateExceptionを送出する、というような具合です。

結論としては、あまり明確ではありませんが、WebSocketのSessionオブジェクトは、確かにスレッドセーフです。しかし、このAPIの一般的なユーザーが驚いたり、混乱を招いたりするかもしれないいくつかの条件と状態があります。とはいえ、WebSocket Sessionを使う際には、ルールを守れば、こうしたことは全て防ぐことができます。例えば、wholeメッセージを同期送信だけしている場合には何も気にする必要はありあせん。非同期だけで送信している場合も同様ではありますが、実装の中でいくつかの矛盾が発生する場合があります。partialメッセージを送信したい、もしくは送信の必要がある場合、問題の解決が難しくなる可能性があります。というのは、WebSocket Sessionが現在の状況をチェックする方法を提供していないため、どこかに状態を保存し、send*メソッドを呼び出す前にチェックする必要があるからです。現時点では、作成されたアプリケーションはRemoteEndpoint.Basic.send* メソッドから送出されるIllegalStateExceptionの処理を追加しておくべき、とアドバイスいたします。特に、別のJSR-356実装上で実行することができることを考えている場合には追加しておきましょう。

[Database] Application Express 5 Early Adopter 3 - A preview of modern database web application development

原文はこちら。
https://blogs.oracle.com/apex/entry/application_express_5_early_adopter

Announcing Application Express 5 Early Adopter 3!

Oracle Application Express 5 Early Adopter 3が発表され、2015年1月31日に利用可能になりました。Early AdopterプログラムはAPEXの”hosted beta"、つまりOracle Application Expressの製品前のバージョンをインターネット上で評価、テスト用に皆様からのフィードバックを受けることができるようにしたものです。たった7日で、1502ものお客様がワークスペースへのサインアップを済ませ、APEX5 EA3を利用されています。皆様の参加をお待ちしています。 http://apexea.oracle.comへ行ってワークスペースのサインアップをするだけで、最新のデータベースWebアプリケーション開発がどのようなものかを知って頂けます。
Application Express 5 Early Adopter 3 Home

Page Designer: The World's Most Advanced Browser-based IDE

Page Designerは開発生産性を大幅に向上することを目指して一新されたIDEで、Application Express内で非常に迅速にページの機能強化やメンテナンスをすることができます。
Application Express 5 Page Designer

Cohesive User Experience

Page Designerを使うと、複数のコンポーネントを変更する際のコンテキストスイッチは不要です。変更するためだけにコンポーネントページにドリルダウンする必要はなくなったのです。全ての変更はPage Designerで実施します。ページを保存する前にここで必要に応じてUndo/Redoをすることができます。

Better Visual Representation

リージョンやアイテムをGrid Layout内に配置する方法を簡単に理解することができます。ページ上のコンポーネントへの変更は、TreeやGrid Layout Page Designer間ですぐに反映されます。さらに、エラーや警告もすぐに表示されます。

Intuitive Drag and Drop

Page Designerでは「ドラッグ&ドロップ」を根本から考え直し、その場でページを開発するための完全に新しい方法を提供します。Grid Layoutペインでは、コンポーネントギャラリーから新しいコンポーネントをドラッグするか、周りの既存のコンポーネントを移動/コピーすることができます。Treeペインでは、一度に複数のコンポーネントをドラッグし、移動/コピーすることができます。

Enhanced Code Editor

Application Expressでk-ドを書くことはかつてないほど簡単になりました。新しいコードエディタでは、インラインエラー、自動補完、構文の強調表示、検索や置換における正規表現のサポート、Undo/Redoのサポートによる補完といった、SQLおよびPL/SQLのバリデーションを提供します。タブやインデント、配色の好みも指定できます。

Universal Theme: a better UI for your apps

Universal Themeは、Application Express 5でゼロから開発された、アプリケーション向けの全く新しいユーザーインターフェースです。これまでよりもシンプルではありながら、必要以上のテンプレートの利用を避け、Theme RollerやTemplate Options、Theme Stylesを使って楽にカスタマイズできる、もっと「使える」テーマです。Universal ThemeはOracleのUI機能強化の集大成であり、開発者が最新のレスポンシブかつ洗練されたアプリケーションをHTMLやCSS、JavaScriptの専門知識がなくても開発できるようにすることを目的としています。
Application Express 5 Universal Theme

Theme Roller

Universal Themeのフラッグシップの機能を使うと、アプリケーションのルック&フィールを簡単にカスタマイズすることができます。スタイル属性の数値を調整すれば、リアルタイムでアプリケーションに適用された変更を確認できます。結果に満足した時点で、Theme Styleとしてアプリケーションに直接変更内容を保存することができます。

Template Options

簡単にボタン、リージョン、リスト、その他のテンプレートベースのコンポーネントの表示方法をカスタマイズできるので、一つのテンプレートも、これらのオプションを使い、異なる様々な方法で表示することができます。Universal Themeを使うと、テンプレートが少ないながらも、開発者は非常に汎用性の高いアプリケーションを構築することができます。

Absolutely Responsive

Universal Themeは初期の段階からレスポンシブであるように設計されてきましたので、様々な画面サイズやフォームファクタでも完璧に動作する、完全にレスポンシブなアプリケーションを構築することができます。Universal Themeには、複雑なフォーム・レイアウトを可能にしたり、フレキシブル・グリッドを利用したりするといった、重要な機能強化が含まれています。

Accessible

Universal Themeでは、Application Expressで開発したアプリケーションのために最も使いやすいUIを提供しています。Theme Rollerを使うと、使いやすいTheme Stylesの構築が可能で、Theme Rollerには組込のWCAG 2.0 カラー・コントラストチェック機能が含まれています。

Additional Features in Application Express 5

Release 5には、様々な追加機能や機能強化などがたくさん含まれています。以下に主だったところを列挙します。

All New Design

Application ExpressのUIを完全に設計し直し、シンプルにして混乱する要因を取り除くことでユーザー・エクスペリエンスを向上することに注力しました。この新しいデザインでは、新たな美しいカラー・パレット、巧妙に作成したアイコン、大幅に改善されたメニューやナビゲーション、より良いアクセシビリティとキーボードのサポート、より直感的なページレイアウトなどなどを使用しています。

User Interface Enhancements

Universal Themeの開発に伴い、また、ThemeとTemplateを取り扱う方法についても様々な機能拡張を追加しました。このリリースでは、Theme Subscriptions、Template Options、Theme Styles、APEXエンジンが出すテンプレートやHTML上の非常にすばらしいコントロールといった機能を備えています。アプリケーションのUIを完全に制御することが以前よりも簡単になっています。

Multiple Interactive Reports

Application Expressで最も要求の高かった機能です。簡単に複数のインタラクティブなレポートを1個のページに作成し、これまでにないようなやり方でデータに対する洞察ができます。また、完全にユーザーインターフェースを刷新して一貫したエクスペリエンスを提供し、エンドユーザーのカスタマイズもモーダル・ダイアログを使ってずっと簡単にできるようになっています。

Modal Dialogs

これからは簡単にモーダル(非モーダル)ページを標準のページプロセスを活用して定義することができます。JavaScriptの利用や、手作業によるページハッキングは不要です。ディスプレイタイプと適切なテンプレートを設定するだけで、Application Expressが残りをよろしくやってくれます。

Better Navigation

静的・動的リストを、アプリケーションのナビゲーション・メニューやナビゲーションバーの情報として利用することができます。ナビゲーション・メニューをページの上部または側面に配置することができますし、ナビゲーションアイテムの入れ子構造、キーボードサポート、より一層のアクセシビリティを有効にして、任意のリストテンプレートに基づいて描画することができます。

More Interactive Report Enhancements

Interactive Reportには、データ表示、レポートの設定、固定列ヘッダーのサポートなどのための全く新しいユーザーインターフェースを備えており、これまで以上に使いやすくなっています。さらに、エンドユーザーが実行時にグループ・レポートに類似したピボットレポートを定義することができます。

All New Calendar

新しいカレンダーコンポーネントには、月、週、日、さらにアジェンダビューを組み込みでサポートしており、カスタマイズも非常に簡単です。カレンダーは、人気のあるFullCalendarライブラリベースで、ドラッグ&ドロップ、時間ベースのイベントをサポートします。しかもレスポンシブです。

Mobile Reporting

リフロー表や列のトグルを使用して、任意のモバイルデバイス上のすべてのデータを表示するレポートを作成できます。リフロー表が各列や非常に小さい画面の複数行の表示をラップします。列トグルを使うと、最も重要な列や、小さな画面上で、必要に応じて非表示にする列を指定することができます。

Static File Upload

ファイルをアップロードし、コンポーネントやプラグイン、テーマとして共有すると、ブラウザがキャッシュすることができるので、相対ファイルURLを使って参照します。これにより、Zipファイルやそのコンテンツをアップロードすると自動的に展開され、相対ファイルの参照はそのまま残ります。ファイルをバンドルしたいですか?ご心配なく。圧縮して単一のダウンロード可能なZipファイルを生成することができます。

2015年2月9日

[FMW, Support] How to Obtain Oracle Fusion Middleware 10g/11g/12c Software Media, Patch Sets, and Other Patches

先日、以下のエントリをご紹介しました。
New MOS Note:1962125.1 - Overview of Database Patch Delivery Methods
https://blogs.oracle.com/UPGRADE/entry/new_mos_note_1962125_1
[Database, Support] New MOS Note:1962125.1 - Overview of Database Patch Delivery Methods
http://orablogs-jp.blogspot.jp/2015/02/new-mos-note19621251-overview-of.html
これはデータベースに関するものでしたが、ミドルウェアに関しても、類似のMOS(My Oracle Support)ドキュメントがあることを中の人から教えてもらいました(中の人、ありがとうございます!)。
How to Obtain Oracle Fusion Middleware 10g/11g/12c Software Media, Patch Sets, and Other Patches (ドキュメントID 433061.1)
https://support.oracle.com/rs?type=doc&id=433061.1
 
 ということで、ミドルウェアのパッチについては、上記MOSドキュメントを参考にしてください。

2015年2月7日

[Virtualization, Linux] Friday Spotlight: Docker!

原文はこちら。
https://blogs.oracle.com/linux/entry/friday_spotlight_docker

昨日のニュースを見逃した方のために、Oracle LinuxイメージがDocker Hub Registryに載ったことを説明するプレスリリースが出ました。
Oracle Linux Now Hosted on the Docker Hub Registry
http://www.oracle.com/us/corporate/press/2415507
もうDockerを使っていたり、Docker初めて見ようと思っているのであれば、Oracle Linuxが非常に堅牢な基盤を提供します。
もうちょっとDockerについてお話すると、昨年11月に「Building the Modern Cloud-Enabled Data Center」と題したのWebcastを開催しました。その中で、Dockerやその他の最先端のトピックについて説明しました。録画がありますので、ご興味ある方はどうぞ。
Building the Modern Cloud-Enabled Data Center with Oracle Linux 7
http://w.on24.com/r.htm?e=877873&s=1&k=771B677E7446BAFCBC53A2B654A93719
また、Oracle Blogsのタグ検索をブックマークできるってご存じでしたか?例えば、Dockerに関する我々のエントリを検索するには以下のURLを使います。
https://blogs.oracle.com/linux/tags/docker
このリンクをクリックしブックマークを付けてください。するとOracle Linux BlogでDockerについて言及しているエントリの全リストがいつでも出てきます。

[Java] Java EE @ JDK.IO 2015

原文はこちら。
https://blogs.oracle.com/theaquarium/entry/java_ee_jdk_io_2014

JDK.IO 2015が2015年1月19日から20日にかけてデンマークのコペンハーゲンIT大学で開催されました。これは'JavaGruppen'つまりデンマークJUGの年次コンファレンスです。セッションでは、コアのJava、Java EE、そしてJava FXなど様々なJavaのトピックを幅広く扱っていました。講演者は同僚のDavid Delabassee、Simon Ritter、Adam Bien、Heinz M. Kabutz、Bert Ertman、Ryan Cuprak、Simon Maple、そしてMarkus Eiseleらです。

Davidが基調講演におけるJava EEのパートとJava EE 8のセッションを担当しました。彼の発表スライドはSlideShareからご覧いただけます。

Java EE 8 - An instant snapshot from David Delabassee

友人でEJB 3 in Actionの共著者であり、Connecticut JUGのリーダーかつJavaOne Rock StarであるRyan Cuprakが非常にすばらしいプレゼンテーションを実施しました。一つ目は、「Hybrid Mobile Development with Apache Cordova and Java EE 7 」というセッションで、JAX-RS、WebSocketやJSON-PのようなAPIを使用して、非常に効果的なモバイル開発のバックエンドとしてJava EEを利用できる様子を説明しました。この内容はJavaOne 2014のチュートリアルで発表されていましたが、すばらしいEnd-to-Endのデモが含まれています。JavaOneのセッション動画は以下からどうぞ。


Ryanはこれとは別に、JavaOne 2014で人気のあったセッション、「50 EJB 3 Best Practices in 50 Minutes」も実施しました。JavaOneではEJB 3 in Actionの別の共著者であるMichael Remijanと一緒に講演していました。JavaOne 2014でのセッション動画は以下からどうぞ。

Ryanは自身のブログでJDK.IOの出張報告をまとめていますので、是非チェックしてください。
JDK IO Trip Report
https://cuprak.wordpress.com/2015/02/04/jdk-io-trip-report/
その他のJava EE関連のセッションは、Markus EiseleによるJava EE7とApache Camelのセッションでした。

[Database, Support] New MOS Note:1962125.1 - Overview of Database Patch Delivery Methods

原文はこちら。
https://blogs.oracle.com/UPGRADE/entry/new_mos_note_1962125_1

ふつうはMOS(My Oracle Support)のNoteをお知らせすることはないのですが、これは利用可能な、データベース用のすべてのパッチ(Patch SetからPSU、SPU、Interim Patch(暫定パッチ)、Bundle Patchなどなど)を整理する上で非常に有用なNoteだと思います。
さらに、テストや定期的な運用時にパッチを適用する場合の推奨事項も含まれています。
このNoteはほとんどのデータベース管理者にとって非常に重要なものです。
Oracle Database - Overview of Database Patch Delivery Methods (ドキュメントID 1962125.1)
https://support.oracle.com/rs?type=doc&id=1962125.1

2015年2月3日

[Java] Batch API Hands-on Lab

原文はこちら。
https://blogs.oracle.com/theaquarium/entry/batch_api_hands_on_lab

去年のJavaOne期間中、JSR 352のHands-on Labを開催しました。JSR 352は新たに追加されたJava EE 7 APIの一つで、正式なAPI名は 'Batch Applications for the Java Platform' ですが、 'Batch API' とよく呼ばれます。
このラボの目的は2つあります。まず、初めての方にBatch APIを紹介し、最も先進的なJSR 352の機能を説明することです。そのため、Hands-on Labは5個の演習に分かれています。
  • Exercice 1では、JSR 352の主要なコンセプト(Step、Job、JSLなど)をご紹介します。 
  • Exercice 2では、最初の演習を改良して、ChunkステップとBatchletステップを組み合わせる複数ステップのジョブを紹介します。
  • Exercice 3では、失敗したジョブを再開する際に利用可能な、チェックポイントとJobOperatorインタフェースを取り扱います。
  • Exercice 4では、リスナーをご紹介します、この機構を使うと、エラーの捕捉など、バッチジョブのライフサイクル内で介入することができます。
  • Exercice 5では、JSR 352の高度な機能であるJob Partitioningのコンセプトをご紹介します。
このHands-on LabはGrassFish 4.1で開発、テスト済みですが、任意のJava EE 7に対応しているアプリケーションサーバーで動作するはずです(JSR 352はfull profileに含まれていることにご注意ください)。このHands-on Labは現在GitHubでホストしていますので、JSR 352を学習する際には、以下のリポジトリを複製し、masterLabドキュメントをチェックしてください。
Batch API (JSR 352) Hands-on Lab
https://github.com/java-ee/BatchLab

[Java] Javaのインストールやアップデート時に広告を出さないようにする

「Javaを更新したり、インストールしたりすると、広告が出てくるのが鬱陶しい」というTweetが、Java CPUリリース後によくあがるので、改めてご紹介します。

以下のエントリでもご紹介していますが、8u11、7u65から、Javaのインストール、更新時にスポンサーからのオファーを表示しない、というオプションが追加されています。
[Java] Releases: Java SE 8 Update 11 and Java SE 7 Update 65
http://orablogs-jp.blogspot.jp/2014/07/releases-java-se-8-update-11-and-java.html
Releases: Java SE 8 Update 11 and Java SE 7 Update 65
https://blogs.oracle.com/java/entry/releases_java_se_8_update
具体的には、コントロール・パネルでJavaを選択し、詳細タブを開きます。一番下までスクロールすると、「Javaのインストールまたは更新時にスポンサのオファーを表示しない」というチェックボックスがあるので、チェックを入れ、[適用]をクリックしてください。他に設定を変更しないなら、[OK]をクリックするとコントロール・パネルを閉じることができます(下図はWindows 7の例)。


Windows 8.1とJava 8の場合はこんな感じです。

この設定をしておくと、以後、Java(JDK、JRE)のインストールやアップデート時に広告が出てこなくなります。

2015年2月2日

[WLS] Updated Developer Zip Distribution for WebLogic Server 12.1.3

原文はこちら。
https://blogs.oracle.com/WebLogicServer/entry/updated_developer_zip_for_weblogic

WebLogic Server開発コミュニティの継続的なサポートで、アップデートされたWebLogic Server 12.1.3 Developer Zipインストーラが先頃リリースされました。この発表ができることをうれしく思っています。
Free Oracle WebLogic Server 12c (12.1.3)  Installers for Development
http://www.oracle.com/technetwork/middleware/weblogic/downloads/wls-for-dev-1703574.html
このWebLogic Server 12.1.3 Developer Zip - Update 1 には、Oracle Supportから提供されている、WebLogic Server Patch Set Update (PSU) 12.1.3.0.2と同じ修正が含まれていますので、この開発者向けZipアップデートを使った開発環境は、genericインストーラにPSUを適用したテスト/UAT/本番環境は同等です。
このアップデートに含まれる修正済みバグはZipインストーラ中のREADMEにまとめられています。また、以下のURLからも確認できます。
WLS Zip Distribution for Oracle WebLogic Server 12.1.3.0
http://download.oracle.com/otn/nt/middleware/12c/wls/1213/README_WIN_UP1.txt