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

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

Node.js driver for Oracle Database 0.4.2がリリースされました。
Oracle Database Node.js driver
https://github.com/oracle/node-oracledb
  • Node-oracledbは公式にnpmjs.comリポジトリに載りました。この結果、GitHubから手作業で複製したりダウンロードしたりする必要がなくなり、インストールが簡単になっています。
    oracledb - Oracle Database driver by Oracle Corp
    https://www.npmjs.com/package/oracledb
    インストール手順
    https://github.com/oracle/node-oracledb/blob/master/INSTALL.md
    Tim Branyenがこのあたりの設定や手配をしてくれました。どうもありがとうございます。
    Tim Branyen
    https://github.com/tbranyen
  • メタデータのサポートが追加されました。execute() コールバックのresultオブジェクトでカラム名を提供しています。詳細情報はドキュメントのサンプルをご覧ください。
    Query Column Metadata
     https://github.com/oracle/node-oracledb/blob/master/doc/api.md#querymeta
  • Node 0.10の旧バージョンを使おうとしている方がいらっしゃることがわかりましたので、システム要件の下限を少々引き上げました。これはNode.jsの0.10版の最新パッチセットを利用することを強制するものではありませんが、セキュリティ脆弱性の修正に対し最新版に追随すべきでしょう。
  • Node 0.12でビルドしたいと考えてらっしゃるのであれば、Richard Nataiが作成してくれたコミュニティ・パッチが出ていますのでご利用ください。これを使うとnode-oracledbをio.jsでも利用できるようになります。
    Richard Natai
    https://github.com/Bigous
    Build with NaN #43
    https://github.com/oracle/node-oracledb/pull/43
  • その他の小規模の変更として、Windowsへのインストールのためのドキュメントを改良しました。
    Windows install documentation
もちろん、その他の機能について今なお作業を引き続き実施しています。

[WLS, FMW] Oracle WebLogic Server Now Running on Docker Containers

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

Oracle WebLogic ServerのDockerコンテナでの動作保証を発表できることに興奮しています。動作保証と共に、Oracle WebLogic Serverのイメージを作成するためのDockerfilesとサポート・スクリプトをGitHubにリリースしています。
WebLogic on Docker
https://github.com/oracle/docker/tree/master/OracleWebLogic
これらのイメージは既存のOracle Linuxイメージの拡張として構築されています。
Oracle Linux Repository
https://registry.hub.docker.com/_/oraclelinux/
Oracle WebLogic Server Dockerイメージを使ったり、自身用のイメージを作成することができます。使い始めたり作成したりするにあたって、サンプルとしてDockerfilesやスクリプトをGitHubにUpしてあります。

Dockerはユーザーが分散アプリケーションをビルド、パッケージ、リリースおよび実行できるプラットフォームです。Dockerユーザーは自身が作成したアプリケーションや依存性のあるライブラリやファイルをDockerイメージにまとめます。DockerイメージはLinux環境間で配布可能な移植性のあるアーティファクトです。配布されたイメージは、コンテナをインスタンス化するために利用することができます。このコンテナでは、同じホストOS上の別のコンテナで動作する他のアプリケーションとは分離された状態で、アプリケーションが動作可能です。
Docker
https://www.docker.com/ 
下表は種々のWebLogic Serverのバージョンで動作保証済みの構成を示したものです。Dockerイメージを作成するにあたって、Oracle WebLogic Server、JDK、Linux、Dockerのこうした組み合わせを使うことができます。
 Oracle WebLogic Server JDK Version Host OS Kernel Docker Version
 12.1.3  7/8  Oracle Lunux 6 UL 5+  Unbreakable Enterprise Kernel Release 3 (3.8.13)+  1.3.3+
 12.1.3  7/8  Oracle Linux 7 UL 0+  Unbreakable Enterprise Kernel Release 3 (3.8.13)+
or
Red Hat  Compatible Kernel (3.10)+
 1.3.3+
 12.1.3  7/8  Red Hat Enterprise
Linux 7+
 Red Hat  Enterprise Linux Kernel (3.10)+  1.3.3+
現在のWebLogic Serverがサポートしている最新の構成情報は、Certificationのページをご覧下さい。
Supported Virtualization and Partitioning Technologies for Oracle Fusion Middleware
http://www.oracle.com/technetwork/middleware/ias/oracleas-supported-virtualization-089265.html
提供したDockerfileとスクリプトを使うと、1個のホストOSやVM上で動作する、開発、本番モードを含め、クラスタ構成、非クラスタ構成のOracle WebLogic Serverドメイン構成を作成することができます。構成したドメインで動作する各サーバはDockerコンテナで動作し、必要に応じて他のサーバと通信することもできます。これらのDockerfilesやスクリプトの使い方を説明しているドキュメントについては、OTNのホワイトペーパーをご覧下さい。
Oracle WebLogic Server on Docker Containers
http://www.oracle.com/technetwork/middleware/weblogic/overview/weblogic-server-docker-containers-2491959.pdf
他の構成や他の構築方法も可能ですが、これらのリソースがWebLogic Server on Dockerを始めるにあたって役にたつことを願っています。是非フィードバックを頂ければと思います。

[Java] JMS 2.0 Revision A

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

JMS 2.0 errataがJCP executive commiteeの投票で承認されました。オリジナルのJMS 2.0仕様にあったエラーを修正するために、このシンプルなメンテナンス・リリースが必要でした。その結果、‘JMS 2.0 Revision A’ができあがり承認されました。このRevision AではJMS仕様の次バージョン、つまりJMS 2.1に焦点を移しています。
リソースをご紹介しておきます。

[Solaris, Virtualization] Oracle VM Server for SPARC 3.2 Released

原文はこちら。
https://blogs.oracle.com/virtualization/entry/oracle_vm_server_for_sparc1

最新の Oracle VM Server for SPARC 3.2 のリリースを発表できうれしく思います。
Oracle VM Server for SPARC
http://www.oracle.com/jp/technologies/virtualization/oracle-vm-server-for-sparc/overview/index.html(日本語)
http://www.oracle.com/us/technologies/virtualization/oracle-vm-server-for-sparc/overview/index.html(英語)
このアップデートは Oracle Solaris 11.2 SRU8.4 以降に統合されています。 Oracle Solaris 11.2 Support Repository Updates (SRU) Indexを参照してください。
Oracle Solaris 11.2 Support Repository Updates (SRU) Index (ドキュメントID 1672221.1)
https://support.oracle.com/rs?type=doc&id=1672221.1
新リリースでは以下の機能導入、機能改善がなされました。

  • マルチパス仮想ディスクI/O(mpgroup)の機能向上
    • アクティブI/Oパスの表示、設定が可能になりました
  • ドメインの可観測性の向上
    • ドメイン間の依存性を表示
  • ネットワーク可観測性、QoSとセキュリティ管理、PVLAN の機能強化
  • 物理I/Oに対するI/O レジリエンシ (IOR)
  • Dynamic Bus (動的にPCIバスをドメインに割り当て)
  • ライブマイグレーションの性能向上ならびにセキュリティ強化
  • ゲストの追加(ホスト環境ととのやりとりのためのVM API)
  • SPARC パフォーマンス・カウンタへのゲストアクセス
Oracle VM Server for SPARCに関するその他のリソースをご紹介しておきます。

[Linux] Unbreakable Enterprise Kernel Release 3 Quarterly Update 5 Now Available

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

Oracle Linux 6およびOracle Linux 7用Unbreakable Enterprise Kernel Release 3 Quarterly Update 5 (UEKR3U5)のリリースを発表できうれしく思っています。これは、UEK Release 3 (Version 3.8.13-68)向けの5回めの4半期ごとのアップデートリリースであり、ドライバの更新やバグやセキュリティ問題の集積パッチを含むものです。
トピックをいくつかご紹介しましょう。
  • turbostatツールがKernelに取り込まれました。これを使うと、プロセッサのトポロジーや温度や周波数といった統計情報を取得することができます。
  • bondingドライバをアップデートしました。これによりリンク・アグリゲーション速度(Link Aggregation Speed)やDuplexモードのような有用なデータを表示するethtoolコマンドを有効化できます。
  • インストール時のカーネルモジュールの署名でSHA-512ハッシュアルゴリズムが利用可能になりました。
  • NFS共有ディスク上にあるスワップファイルを利用できるようになりました(ただしテクノロジー・プレビューの扱いです)。
  • Xen EFIのサポートが追加されました。
  • 主要なパートナーのストレージデバイス、ネットワーク・カードなどのデバイス・ドライバをアップデートしました
    • Broadcom
    • Cisco
    • Emulex
    • HP
    • Intel
    • Mellanox
    • Microsoft
詳細は、リリースノートをご覧ください。
Oracle® Linux Release Notes for Unbreakable Enterprise Kernel Release 3 Quarterly Update 5
https://docs.oracle.com/cd/E52668_01/E60671/html/index.html
ソースコードはパブリックgitリポジトリにございます。
linux-uek3-3.8 repository
https://oss.oracle.com/git/?p=linux-uek3-3.8.git;a=summary

[WLS, Database, FMW] WLS JDBC Driver Patching

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

Oracleドライバのjarパッチの取り扱いが複雑なので整理してみましょう。このエントリでは、詳細情報へのリンクを一箇所にまとめてみました。いくつかまだ利用できないパッチがありますが、それらはTBA(今後利用可能)と下表に明記してあります。これらのファイルが利用可能になった段階で、このページ(注:原文のページです)を更新する予定です。
WebLogic Server 10.3.6、12.1.1、12.1.2ではDatabase 11.2.0.3のjarファイルが同梱されていますが、このjarファイルは標準のjarファイル(つまりDatabaseに同梱されているもの)とは異なり、WebLogic Serverをサポートするよう追加のバグ修正や機能拡張がなされています。つまり、11.2.0.3のパッチをコピーしたり、標準リリースのjarファイルを使ったりするだけでは、11.2.0.4へアップグレードすることができなません。必要に応じて11.2.0.3パッチを提供するサポートは必要ですが難しいでしょう。11.2.0.4の機能に加え、同梱されている11.2.0.3のデータベースjarファイルへの全ての機能拡張やパッチを含む特別な11.2.0.4のパッチにアップグレードすることをお勧めします。WebLogic Sererは12.1.2でOracle Universal Installerを使い始め、異なるパッチ形式が必要になっているため、さらに複雑になっています。
WebLogic Server 10.3.6、12.1.1、12.1.2、および12.1.3では、Oracle Database 12cのクライアントJARファイルの実行をサポートします。WebLogic Server 10.3.6から12.1.2までは、jarファイルを手でインストールする必要があり、このアップグレードを自動化するインストーラやパッチはありません。パッチを入手するためには、Database 12.1.0.2のjarファイルで実行している必要があります。WebLogic Serverのパッチは、Database 12.1.0.1のJARファイル用には作成されません。WebLogic Server 12.1.3ではDatabase 12.1.0.2ドライバのjarファイルのプレリリースバージョンを同梱していますが、これらのファイルの製品版にアップグレードすることができるようになるパッチが提供される予定です。このアップグレード後、標準のDatabase Oracle patchファイルがWebLogic Server 12.1.3(およびDataase 12.2.0.2 jarファイルへ手動アップグレードしたWebLogic Server 12.1.2)で期待通り動作するでしょう。

インストール済みのOracle Database用JDBCドライバへのパッチ適用
WebLogic Serverのバージョン インストールされるJDBCドライバ DatabaseのJarファイルへのパッチ適用方式 ドキュメント
10.3.6 11.2.0.3.0 +  AS 11.1.1.6.0 (WLS 10.3.6) 11.2.0.4用の
WLSパッチ
My Oracle Supportドキュメント(1970437.1)
How To Upgrade the Oracle JDBC Drivers Bundled with WebLogic Server 10.3.6-12.1.2 To the JDBC Driver for Oracle Database 11g Release 2
https://support.oracle.com/rs?type=doc&id=1970437.1
12.1.1 11.2.0.3.0 +  AS 12.1.1.0.0 (WLS 12.1.1) 11.2.0.4用の
WLSパッチ
My Oracle Supportドキュメント(1970437.1)
How To Upgrade the Oracle JDBC Drivers Bundled with WebLogic Server 10.3.6-12.1.2 To the JDBC Driver for Oracle Database 11g Release 2
https://support.oracle.com/rs?type=doc&id=1970437.1 
12.1.2 11.2.0.3.0 + AS 12.1.2.0.0 (WLS 12.1.2) 11.2.0.4 opatch 19477203に関するパッチ(#18557114)
12.1.3 12.1.0.2プレリリースバージョン ○出荷されている12.1.0.2に対応するためには12.1.0.2 opatchを利用
○その他のバグ修正については、標準のopatchを利用
TBA

Database 12c Driverを使う場合
WebLogic Serverのバージョン 12.1.0.2のインストール形式 データベースのJarパッチ方法 インストールに関するドキュメント
パッチ適用のドキュメント
10.3.6 12.1.0.2を手動インストール 12.1.0.2 WLS patch My Oracle Supportドキュメント(1564509.1)
WebLogic Server 12.1.1 and 10.3.6 Support for Oracle 12c Database
https://support.oracle.com/rs?type=doc&id=1564509.1
○パッチ適用のドキュメントはTBA
12.1.1 12.1.0.2を手動インストール 12.1.0.2 WLS patch My Oracle Supportドキュメント(1564509.1)
WebLogic Server 12.1.1 and 10.3.6 Support for Oracle 12c Database
https://support.oracle.com/rs?type=doc&id=1564509.1
○パッチ適用のドキュメントはTBA
12.1.2 12.1.0.2を手動インストール 12.1.0.2 opatch  (日本語)
Oracle® Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの管理 12c (12.1.2)
Oracle 12cデータベースの使用
http://docs.oracle.com/cd/E50629_01/wls/JDBCA/ds_12cdriver.htm#i1060539
(英語)
Oracle® Fusion Middleware Administering JDBC Data Sources for Oracle WebLogic Server 12c (12.1.2)
Using an Oracle 12c Database
https://docs.oracle.com/middleware/1212/wls/JDBCA/ds_12cdriver.htm#JDBCA272
○標準のパッチ適用方式
12.1.3 ○12.1.0.2プレリリースバージョンインストール済み
○製品版12.1.0.2へアップグレードするためのパッチ適用
12.1.0.2 opatch (日本語)
Oracle® Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの管理 12c (12.1.3)
Oracle 12cデータベースの使用
http://docs.oracle.com/cd/E57014_01/wls/JDBCA/ds_12cdriver.htm#i1060539

(英語)
Oracle® Fusion Middleware Administering JDBC Data Sources for Oracle WebLogic Server 12c (12.1.3)
Using an Oracle 12c Database
https://docs.oracle.com/middleware/1213/wls/JDBCA/ds_12cdriver.htm#JDBCA272
○パッチ作成方式はTBA
○標準のパッチ適用方式
関連するトピックとして、サードパーティ製ドライバJarファイルの更新について以下のMy Oracle Supportドキュメントで取り扱っています。
How To Upgrade the Third-Party JDBC Drivers Bundled With WebLogic Server 10.3.6 and 12.1.x (ドキュメントID 1969871.1)
https://support.oracle.com/rs?type=doc&id=1969871.1 
これには、DataDirectやMySQLドライバといった、同梱されているドライバが含まれます。jarファイルをバックアップして削除し、新しいファイルをインストールします。jarファイル名が変わっているのであれば、クラスパスを変更します。

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

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

Node.js driver for Oracle Databaseの今回のアップデートは小規模なものですが、いくつかご紹介します。
Node.js driver for Oracle Database
https://github.com/oracle/node-oracledb
  • 外部認証のサポートを追加しました
    Support external authorization #15
    https://github.com/oracle/node-oracledb/issues/15
  • isAutoCommit フラグはクエリ実行と一緒に使えるようになりました。これはSELECT文が後続する複数のDML文を実行する際に有用です。これを使って、明示的なcommit()の呼び出しを追加するデータベースへのラウンドトリップをしないようにすることができます。
  • Hannes Prirschlがpackage.jsonのAIXでのビルドをサポートするようプルリクエストしてくれました!
    Hannes Prirschl (GitHub)
    https://github.com/schmafu
  • 範囲外のプロパティを利用した場合のエラーメッセージを改善しました。
  • Greg Huang, BuiltInParris, mello151やこうした変更を推進した皆様が数多くのAPIドキュメントをアップデートしてくれました!
    Greg Huang (GitHub)
    https://github.com/zorrofox
    BuiltInParris (GitHub)
    https://github.com/BuiltInParris
    mello151 (GitHub)
    https://github.com/mello151
  • 不具合の修正:接続がまだ閉じられていないことが理由で接続プールのterminate()が失敗する場合、後続するrelease()を使ってそうした接続を閉じたときに出ていた"ORA-24550: Signal Received"というエラーが出ないようにしました。
  • krishnanm86がコードのリファクタリングのプルリクエストをしてくれました!
    krishnanm86 (GitHub)
    https://github.com/krishnanm86
    Source code refactor. Abstracted redundant functionalities #28
    https://github.com/oracle/node-oracledb/pull/28
みなさまが心待ちにされているもっと大きな機能(LOBSやRETURNING INTOなど)は現在作業に取り組んでいるところですので、しばしお待ちを。

[Java, JavaScript] Improving Nashorn startup time using code caching

原文はこちら。
https://blogs.oracle.com/nashorn/entry/improving_nashorn_startup_time_using

Nashornはウォームアップが済めば、通常Rhinoよりも速いのですが、その起動時ならびにウォームアップの挙動はRhinoに比べて些か悪いことがあります。これには様々な理由がありますが、これにはinvokedynamic callsitesを実行時にブートする必要があるだけでなく、JDK 8やNashorn自身のinvokedynamic実装が効率的でないことも理由としてあります。

JVM側とNashornの両面で改善の努力をすすめていますが、起動時のオーバーヘッドを削減するため、キャッシュを実装し、コンパイル済みのJavaScriptコードを再利用する機能をNashornに追加しました。これらの機能は、8u20から追加されはじめ、先頃リリースされた8u40リリースで強化されています。

このエントリでは、JDK 8u20でスクリプトのロードのスピードアップのためのいくつかの方法をご紹介します。サンプルスクリプトとしてlodashライブラリを使用します。lodashを含め、この記事で使用するサンプルコードは、こちらからダウンロードできます。
lodash
https://lodash.com/

Sharing compiled scripts between Threads


JDK 8リリース当初、NashornがJavaのバイトコードにコンパイルしたJavaScriptコードはシングルスレッドでかつ単一のJavaScript環境でのみ利用することができました。これはつまり、同じスクリプトを複数のJavaScript環境で実行するためには、その都度最初からコンパイルする必要があった、ということです。

JDK 8u20から、コンパイル済みのスクリプトクラスを複数のグローバルオブジェクト、複数のスレッドで同時に使うことができるようになりました。単一のScriptEngineを複数のバインディングやスレッドで利用することでこの機能を利用できます。

以下のコードは、新たなスコープ・バインディングでスクリプトを実行します。スクリプトエンジンとスクリプトのURLを引数として取得し、スクリプトを(NashornスクリプトエンジンAPIのBindingとして表される)新たなグローバルオブジェクトで実行します。
private Object evaluateInNewScope(ScriptEngine engine, URL url) throws Exception {
   Bindings b = engine.createBindings();
   ScriptContext context = new SimpleScriptContext();
   context.setBindings(b, ScriptContext.ENGINE_SCOPE);
   return engine.eval(new URLReader(url), context);
}
クラスキャッシュのサンプルコードを実行して動作を確認できます。このクラスは複数のJavaScriptスコープでunderscore.jsというJavaScriptライブラリをロードし、実行します。初期のJDK8とJDK 8u20以後の両方でdemoを実行すると、後者の環境でのスクリプト実行のほうがずっと高速であることがわかります。

この機能は素敵なことに、マルチスレッド環境でも利用できます。マルチスレッドでのクラスキャッシュのサンプルコードを実行して確認できます。異なるJavaScriptスコープバインディングを使うだけでなく、異なるスレッドでスクリプトを実行しています。再度言いますが、初期のJDK 8と比べてJDK 8u20以後で実行するほうがずっと高速です。

-ccs--class-cache-size オプションを使って、内部クラスキャッシュのサイズを設定できます。デフォルト値は50で、これはScriptEngineがおよそ50個のコンパイル済みスクリプトクラスをキャッシュする、という意味です。もっと多くのスクリプトを使う場合には、この設定値を大きくする必要があります。

Persisting compiled classes to disk

内部クラスキャッシュのおかげでNashornエンジン内で同じスクリプトを繰り返し利用する回数を減らすことができますが、スクリプトの初期コンパイルに関連するオーバーヘッドがまだかなり存在します。それゆえ、後の実行でスクリプトの再コンパイルをしなくてすむよう、JDK 8u20ではコンパイル済みのNashornクラスをディスクに格納する機能が導入されました。

-pcc もしくは --persistent-code-cacheオプションを使って、永続クラスキャッシュ(Persistent class caching)を有効化することができます。このオプションはNashornコマンドラインツール実行時にjjsに渡すか、もしくはNashornScriptEngineFactorygetScriptEngine メソッドに以下のように渡すことができます。
ScriptEngine engine = new NashornScriptEngineFactory().getScriptEngine("-pcc");
デフォルトでは、Nashornクラスは現在のワーキング・ディレクトリのnashorn_code_cacheというディレクトリに格納されます。この場所はnashorn.persistent.code.cacheというシステムプロパティを使ってオーバーライドすることができます。注意頂きたいのは、このディレクトリ内のファイルは純粋なJavaクラスではない、ということです。それは、ディスクからコンパイルされたスクリプトを復元するために、クラスのバイトコードに加えて、様々なメタデータを格納する必要があるためです。

永続クラスキャッシュのサンプルコードを使ってテストすることができます。このクラスはlodashライブラリを永続コードキャッシュを使って実行します。コンパイル済みクラスをディスクから読み出すことによる改善が50%弱で、いささか期待外れと感じる方がいらっしゃるかもしれません。

この理由は、コンパイル済みスクリプトの最初の実行の大部分が実際のところコンパイルのオーバーヘッドではなく、コンパイル済みクラスのロードおよびinvokedynamic callsiteの起動であるためです。繰り返し同じスクリプトをNashornで実行し、できる限りオーバーヘッドを少なくしたいというのであれば、これは有用な選択肢と言えるでしょう。

Persisting optimistic type info


JDK 8u40では、Optimistic Typeという新機能も導入されています。このOptimistic Typesは8u40ではデフォルトでは無効になっており、明示的に-ot もしくは --optimistic-types オプションを使って有効化する必要があります。
-ot=true
--optimistic-types=true
Optimistic TypesはJavaScriptプログラムのデータ型を仮定するというもので、この仮定が間違っている場合には、実行中に再コンパイルします。この機能により、JavaScriptプログラムの最終的な速度はかなり向上しますが、起動およびウォームアップのパフォーマンスに追加の負担がかかります。それゆえ、キャッシュとバイトコードの再利用がより一層有用になるのです。

幸運にも、Optimistic Typeと前述の永続コードキャッシュを組み合わせて利用できます。関数の再コンパイルにより、その関数の以前のバージョンは、永続コードキャッシュで上書きされますので、永続キャッシュをその後の実行で使用する場合、関数の「正しい」バージョンがすぐにロードされるようになります。これにより、実行中の再コンパイルの必要性が減り、Optimistic Typeがない場合に比べてより一層メリットを得られます。

しかし、多くのアプリケーションにとって過剰である場合があるため、コンパイル済みクラス全体をディスクに永続化しなくても、このソリューションが改善される可能性があります。本当に保存が必要なのは、コンパイルされたスクリプト内のcallsitesの型情報だけだからです。

JDK 8u40では、スクリプトの型情報だけをディスクに保存し、その後の同一スクリプトの実行で再利用できる機能も導入しています。起動時間の改善という点では、先ほどのコンパイル済みクラス全体を永続化する場合に類似していますが、型情報だけを保存しているため、結果としてディスクの使用量が減っています。

型情報のキャッシュとOptimistic Typeの組み合わせをサンプルコードで実際に確認することができます。Optimistic Type情報はシステムディレクトリに格納されます。このシステムディレクトリはプラットフォーム依存です。この機能およびその他の様相は様々なシステムプロパティを使って調整できます。詳しくは、NashornのDeveloper Readmeファイルをご覧下さい。
DEVELOPER_README
http://hg.openjdk.java.net/jdk8u/jdk8u-dev/nashorn/file/tip/docs/DEVELOPER_README

まとめ


JDK 8u20と8u40で、Nashornのスタートアップならびにウォームアップの性能を改善するための様々な新機能が導入されています。

これらの機能だけでNashornの起動とウォームアップの問題がすべて解決するとは思っていませんが、NashornおよびJDK 8での体験が改善することを期待しています。引き続き様々なレベルでパフォーマンス向上の取り組みを続けています。

これらの機能に関する質問がありましたら、お気軽にnashorn-devメーリングリストにどうぞ。

[Linux, Support] Announcing General Availability of Oracle Linux 7.1

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

Oracle Linux 7の最初のアップデートリリースであるOracle Linux 7 Update 1のリリースを発表できることをうれしく思っています。すべてのパッケージは現在ULN(Unbreakable Linux Network)やPublic Yumからダウンロードできます。ISOイメージはOracle Software Delivery Cloudからまもなく無料でダウンロードできるようになります。
Unbreakable Linux Network
https://linux.oracle.com/
Public Yum Repository
http://public-yum.oracle.com/repo/OracleLinux/OL7/1/
Oracle Software Delivery Cloud
https://edelivery.oracle.com/linux
Oracle Linux 7 Update 1に含まれるカーネルパッケージは以下の通りです。
  • Unbreakable Enterprise Kernel (UEK) Release 3 (kernel-uek-3.8.13-55.1.6.el7uek) (x86-64用)
  • Red Hat互換Kernel (kernel-3.10.0-229.el7) (x86-64用)
Oracle Linux 7 Update 1では以下のような最新の機能やイノベーションを提供しています。
  • UEK Release 3でDockerもしくはLXCを使うLinuxコンテナをサポート
  • DTraceとUEK Release 3で包括的なダイナミックトレース
  • UEK Release 3でのBtrfsの本番環境利用をサポート
  • 最新の3rdパーティー製ハードウェアのサポート
Oracle Linux 7 Update 1の新機能や変更点に関する詳細情報は以下のドキュメントライブラリにあるリリースノートをご覧ください。
Oracle Linux 7 Product Documentation Library
http://docs.oracle.com/cd/E52668_01/index.html
Oracle Linuxのダウンロード、利用、配布は無料で可能です。さらにすべてのアップデートやErrataも無料でご利用いただけます。
Free Updates and Errata for Oracle Linux
https://blogs.oracle.com/linux/entry/free_updates_and_errata_for
サポートに関しては、どのシステムに対しサポートサブスクリプションを締結するかを決めてください。
Oracle Linux Support
http://www.oracle.com/us/technologies/linux/support/overview/index.html
こうした内容ゆえに、Oracle Linuxは貴社の開発、検証、本番環境として理想的な選択肢なのです。

Oracle Linux Premier Support契約をお持ちのお客様であれば、Oracle OpenStack for Oracle Linuxへのサポートも受けることができ、ダウンタイムなしでカーネルのアップデートを可能にするOracle Kspliceも無償で利用できます。
Oracle OpenStack for Oracle Linux Now Generally Available (Press Release)
http://www.oracle.com/us/corporate/press/2298602
Oracle Kspliceは完全にサポートされ、2009年から本番環境システムへのライブカーネルアップデートを提供してきました。すでに100万件以上のパッチをミッションクリティカルシステムに対し提供していますが、1度の再起動もしていません。Kspliceの詳細は以下のリンクからどうぞ。
Oracle Ksplice
http://ksplice.oracle.com/
Oracle Linuxの詳細情報は、以下のページからどうぞ。
Oracle Linux OS and Support
http://www.oracle.com/linux

[BPM, Cloud] Sneak Preview of Oracle Process Cloud Service

原文はこちら。
https://blogs.oracle.com/bpm/entry/sneak_preview_of_oracle_process

秘密が明らかになりました。我々はPaaSとしてのBPMに取り組んできました。既にOracle Process Cloud Serviceのページをご覧になっているかもしれません。
Oracle Process Cloud Service
https://cloud.oracle.com/process
BPM愛好家のように、たぶんサービスに触りたくて、すぐ簡単にビジネスプロセスを自動化できる方法を知りたくてうずうずしていらっしゃるかもしれません。BPM PaaSソリューションでは、メンテナンスや基盤は全てOracleが面倒を見ますので、真のITとビジネスの分離を実現します。ついに、ビジネスプロセスのエンドツーエンドのライフサイクル管理のための本格的なクラウドBPMソリューションが登場です。市場化までの時間短縮、TCO(総所有コスト)の低減、あなたの投資に対する迅速な効果に変換するため、これでBPMに全力で取り組むことができます。
詳細を知りたいということであれば、”Rapid Business Process Automation in the Cloud”(クラウドで迅速なビジネスプロセスの自動化)と題したOracle Process Cloud Serviceの動画をご覧いただけます。
Rapid Business Process Automation in the Cloud
http://event.on24.com/r.htm?e=908809&s=1&k=0135CBBBF90FEBE1B262E44CA059F275&partnerref=Cloud_Platform_Online_Forum_MW_Busines_Process_Individual%20
これはCloud Online Forumの1セッションで、Oracle Process Cloud Serviceのプレビューを含んでいます。動画はすぐにご覧いただけます。是非、動画をご覧になり、Oracle Process Cloud Serviceの立ち上げにご注目ください。

[Java,Security] Java EE Security API (JSR 375) Update

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

少々時間がかかってしまいましたが、JSR 375のExpert Groupが構成されました。
JSR 375: JavaTM EE Security API
https://jcp.org/en/jsr/detail?id=375
Expert GroupはAlex Kosowski(Oracle)をリーダーとして以下の面々(企業の代表や個人)から構成されています。
Adam Bien David Blevins (Tomitribe)
Rudy De Busscher Ivar Grimstad
Les Hazlewood (Stormpath, Inc.) Will Hopkins (Oracle)
Werner Keil Matt Konda (Jemurai)
Darran Lofthouse (Red Hat) Jean-Louis Monteiro (Tomitribe)
Pedro Igor Silva (Red Hat) Arjan Tijms (ZEEF) 
現段階では、IBMはまだ参加が確定されていませんが、おそらく速やかに決まると思われます。
Expert Groupが形成されたことで、技術的な議論を実施できるようになりました。議論はJSR 375ユーザーメーリングリストから確認できます、また、JSR 375 Issue Trackerも議論を追跡するのによいツールです。
JSR 375 user mailing list
https://java.net/projects/javaee-security-spec/lists/users/archive/2015-03
JSR 375 Issue Tracker
https://java.net/jira/browse/JAVAEE_SECURITY_SPEC/?selectedTab=com.atlassian.jira.jira-projects-plugin:issues-panel
近日開催の2個のコンファレンスで説明が予定されているトピックをお知らせしておきましょう。David BlevinsとJean-Louis Monteiro(共にTomitribe0は共にExpert Groupのメンバーですが、ドイツで開催されるJavaLandというコンファレンスで以下のタイトルのセッションで講演します。
Java EE Security: Let's Make Something Useful
https://www.doag.org/konferenz/konferenzplaner/konferenzplaner_details.php?locS=0&id=483801&vid=491386
さらに、JSR 375のSpec LeadであるAlex Kosowskiは、Devoxx Franceにて、JSR 375に関するセッションで講演します。
MMY-4664 Finally, Security API JSR 375 ∞ Devoxx
http://cfp.devoxx.fr/2015/talk/MMY-4664/Finally,_Security_API_JSR_375
これらのコンファレンスに参加されることがあれば、スケジュールにこれらのセッション追加することをお忘れなく。

[Cloud, Coherence] Announcing Coherence for the Java Cloud Service

原文はこちら。
https://blogs.oracle.com/the-cloud-front/entry/announcing_coherence_for_the_java

Oracle CoherenceがJava Cloud Service(JCS)の機能としてご利用できるようになりました。JCS内のCoherenceセットアップのためのオプション設定をすることで、JCSご利用のお客様はいますぐCoherenceをJCS上でご利用いただけます。

柔軟性はソリューションの主要・重要な箇所です。Coherenceデータ層の初期容量を選択することもできますし、

Advancedオプションを使って、Coherenceで利用したいVMの個数や、VM毎の管理対象Coherenceサーバの個数、各管理対象サーバのヒープサイズなど、ありとあらゆる設定を実施することもできます。

WebLogic Management Frameworkを背後で使っており、管理対象Coherenceサーバを通じて、アプリケーションを開発、デプロイ、管理・監視することができます。

同じクラウドのツール群がWebLogicとCoherenceを作成するため、弊社のクラウドで両コンポーネントを一緒に使った場合、サービス間が完全かつシームレスに統合されています。JCSの標準と同じく、自動ローリング方式でCoherenceにパッチを適用することができます。バックアップやリストアは完全にその他のスタックとの間で調整されます。

Common reasons for using Coherence:
  • 負荷を下げ、共有クラウドサービスやデータベースを保護する
  • クラウドアプリケーションにリアルタイムデータを配信する
  • クラウドのデータグリッド層で透過性および高可用性を提供する
Java Cloud ServiceでWebLogic12.1.3+環境を実行しているときには、Coherenceのすべてのクラウド機能にアクセスすることができます。Java Cloud Service Enterprise Edition 11gの場合、Coherenceを一緒に使うためにはCoherenceのクラスタを手作業で作成することができます。

今後、数多くのCoherenceに関連するデータグリッドやキャッシングのサービスを展開する予定にしています。詳細をお楽しみに。

For more information:

[Java] JDK 8u40 Released!

原文はこちら。
https://blogs.oracle.com/thejavatutorials/entry/jdk_8u40_released

JDK 8u40がリリースされ、ダウンロードできるようになりました。詳細はリリースノートをご覧下さい。
Java SE Downloads
http://www.oracle.com/technetwork/java/javase/downloads/index.html
JDK 8u40 Update Release Notes
http://www.oracle.com/technetwork/java/javase/8u40-relnotes-2389089.html

Java Tutorial Updates

Java Tutorialがアップデートされ、Javaパッケージングツールを使った自己完結型アプリケーションを生成する方法を説明するデプロイメントの枠で新たな内容が追加されています。自己完結型アプリケーションとは実行に必要なJREが含まれているJavaアプリケーションのことです。これらのアプリケーションをユーザのローカルドライブにインストールし、ネイティブアプリケーションと同様の方法で立ち上げます。詳しくは以下のページをご覧下さい。
The Java™ Tutorials
Lesson: Deploying Self-Contained Applications
http://docs.oracle.com/javase/tutorial/deployment/selfContainedApps/index.html

JDK Tools Enhancements

JDK 8u40では多くの機能強化が図られています。詳細は以下のページからどうぞ。
Tools Enhancements in JDK 8
http://docs.oracle.com/javase/8/docs/technotes/tools/enhancements-8.html

JavaFX Enhancements

JDK 8u40から、JavaFXコントロールが機能強化され、Assistiveテクノロジーをサポート、つまりJavaFXコントロールがアクセシビリティ機能を持つようになりました。さらに、パブリックAPIが提供され、開発者が自信でアクセシビリティ機能を持つコントロールを作成することができるようになっています。
アクセシビリティ機能のサポートはWindows、Mac OS Xで提供しており、以下の機能を含みます。
  • スクリーンリーダによるJavaFXコントロールの読取りサポート
  • JavaFXコントロールがキーボードを使ってトラバースできる
  • 特別な高コントラストモードをサポートし、コントロールがユーザにより認知しやすく
JDK 8u40には、新たなJavaFX UIコントロールも含まれています。スピン・コントロール(Spinner Control)、フォーマット済みテキストのサポート、アラート・ダイアログの標準セットなどです。

Spinner Control

Spinner は1行のテキストフィールドで、ユーザが、並べられたものから一つの数値もしくはオブジェクトを選択できるようにする単一行のテキストフィールドです。詳細については、javafx.scene.control.SpinnerクラスのJavaDocを参照してください。
Spinner (JavaFX 8)
http://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/Spinner.html

Formatted Text

新しい TextFormatter クラスは、(例えば、TextField や TextAreaといった)  TextInputControl のサブクラスに対しテキストを整形機能を提供します。詳細については、javafx.scene.control.TextFormatterクラスのJavaDocを参照してください。
TextFormatter (JavaFX 8)
http://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/TextFormatter.html

Dialogs

Dialog クラスを使うと、アプリケーション固有のカスタムダイアログを作成することができます。さらに、 Alert クラスは Dialog の拡張で、数多くの事前ビルド済みのダイアログ・タイプのサポートを提供しており、これを使うと、簡単にユーザーに対して応答を要求する返すダイアログを表示することができます。詳細については、以下のAPIのJavaDocを参照してください。
Dialog (JavaFX 8)
http://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/Dialog.html
Alert (JavaFX 8)
http://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/Alert.html
TextInputDialog (JavaFX 8)
http://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/TextInputDialog.html
ChoiceDialog (JavaFX 8)
http://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/ChoiceDialog.html

Commercial Features

Application Class Data Sharing (AppCDS)

Application Class Data Sharing (AppCDS、アプリケーションクラスデータ共有)は、CDSを拡張したもので、これを使うと、標準拡張ディレクトリと共有アーカイブのアプリケーション・クラスパスからクラスを配置することができます。これは、商用機能であり、実験的なものではありません(javaツールのドキュメントの記載とは異なります)。Java起動ツールのページで、 -XX:+UseAppCDS オプションの項を参照してください。
Java Platform, Standard Edition Tools Reference
http://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html

Cooperative Memory Management

JDK 8u40より、 "memory pressure"の記法がJDKに追加されました。Memory pressureとは、システムの全メモリ利用量(RAM)を表記するプロパティです。memory pressureが高いほど、早期にシステムのメモリが枯渇します。
増加したmemory pressureへの反応として、JDKはメモリ利用量を削減しようとします。これは主としてJavaヒープサイズを削減することにより実施します。このJDKがメモリ使用量を削減するというアクションは、結果としてパフォーマンスを低下させる可能性がありますが、これは意図的にそうしています。
0(pressureなし)から10 (ほとんどメモリがない)までの基準を使い、JMX MXBeanを通じてアプリケーションがpressureレベルを指定します。この機能を有効にするには、jdk.management.cmm.SystemResourcePressureMXBean を登録する必要があります。その設定後、memory pressureは"MemoryPressure"属性を使って設定します。
'none'、'low'、'medium'、'high'のうち一つの引数を取る新たなコマンドラインフラグ -XX:MemoryRestriction もご利用いただけます。このフラグを使うと、初期のpressureをJDKで設定することができ、MXBeanを登録していない場合にも有効に作用します。
Cooperative Memory ManagementではG1 GC(-XX:+UseG1GC)が必要です。この機能は -XX:+ExplicitGCInvokesConcurrent と互換性はありません。

New Commercial Flags

商用ライセンスをお持ちの方であれば、新たに2個のVMオプションをご利用いただけます。
  • -XX:+ResourceManagement
  • -XX:ResourceManagementSampleInterval=value (milliseconds)
詳細は java ツールのページを参照してください。
Java Platform, Standard Edition Tools Reference
http://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html

New MSI Installer Documentation

Microsoft Windows Installer (MSI) Enterprise JRE Installer Guideがご利用いただけるようになりました。
Java Platform, Standard Edition: MSI Enterprise JRE Installer Guide for Windows
http://docs.oracle.com/javacomponents/msi-jre8/install-guide
このMSI Enterprise JRE Installerは本番環境での利用にあたっては商用ライセンスが必要です。商用機能と商用機能有効化の方法を知りたい方は、以下のページを参照してください。
Oracle Java SE Advanced & Suite Products
http://www.oracle.com/technetwork/java/javaseproducts

Java Flight Recorder(JFR) Enhancements

Java Flight Recorderを実行時に有効化することができるようになりました。詳細は、Java Flight Recorder Runtime Guideを参照してください。
Java Platform, Standard Edition Java Flight Recorder Runtime Guide
http://docs.oracle.com/javacomponents/jmc-5-5/jfr-runtime-guide/index.html
Java Flight Recorderは、本番環境での利用に際し、商用ライセンスが必要です。商用機能と商用機能有効化の方法を知りたい方は、以下のページを参照してください。
Oracle Java SE Advanced & Suite Products
http://www.oracle.com/technetwork/java/javaseproducts

[SOA/BPM] SOA/BPM 12cで利用できるドメイン構成

久々に、過去に頂いたSOA/BPM Suite 12cに関する質問をご紹介します。

Q) SOA/BPM 12cではドメイン構成がいくつかあるようだけど、その違いって何?
A) 以下の通り4種類の構成が可能です。MDSやWebLogic Serverの動作環境がそれぞれ異なります。

Oracle SOA/BPM Suiteで利用できるドメイン構成にはいろいろあります。詳細はドキュメントをご覧頂くとして、以下にまとめてみました。
Oracle® Fusion Middleware SOA SuiteおよびBusiness Process Management SuiteのQuick Start for Developersのインストール 12c (12.1.3)
ドメインの構成の理解
http://docs.oracle.com/cd/E57014_01/core/SOAQS/usecases.htm#SOAQS433
Oracle® Fusion Middleware Installing SOA Suite and Business Process Management Suite Quick Start for Developers
Understanding Domain Configurations
http://docs.oracle.com/middleware/1213/core/SOAQS/usecases.htm#CHDGGGHB
Oracle® Fusion Middleware Oracle SOA SuiteおよびBusiness Process Managementのインストールと構成 12c (12.1.3)
Oracle SOA Suiteドメインの構成
http://docs.oracle.com/cd/E57014_01/core/INSOA/configure_soa.htm#INSOA375
Oracle® Fusion Middleware Installing and Configuring Oracle SOA Suite and Business Process Management
Configuring the Oracle SOA Suite Domain
http://docs.oracle.com/middleware/1213/core/INSOA/configure_soa.htm#CDECHBDE
種類Default DomainStandalone DomainCompact DomainFull Domain
説明JDeveloperに統合済みのWebLogic Server管理サーバでSOA/BPMが動作(11gにおける開発者モードでのドメイン構成)管理サーバでSOA/BPMが動作(11gにおける開発者モードでのドメイン構成)管理サーバとSOA/OSB/BAMなどの管理対象サーバが分離した完全インストール版
インストール方法Quick Start インストーラQuick Start インストーラQuick Start インストーラFMW 12c Infrastructure + FMW 12c SOA/BPM Suite
用途ローカル開発、デバッグ、デモや評価目的ローカル開発、デバッグ用途。特に、JDeveloperではなくOSBコンソールを利用したい開発者向けJava DBで利用できないSOAコンポーネントを使ったローカル開発用途 (ESS, MFT, B2B, Heathcare, BAM, ACM API)開発全ステージ(共同開発)、統合、テスト、本番運用用途
リポジトリ事前構成済みJava DB事前構成済みJava DBOracle Database
ただし、MDSとOWSMリポジトリはファイルベース
Oracle Database

Compact Domainでは以下の点に注意が必要です。

  • Dehydration Store
    • Oracle Databaseを使用
  • MDS
    • ファイルベース(DBベースのMDSではありません)

ファイルベースMDSの場合、SOA Composerでの編集機能をサポートしておらず、Business RulesやDomain Value Maps(ドメイン値マップ)は実行時に変更できません。つまり、新規デプロイするタイミング以外で値を変更することができません。

なお、ファイルベースのMDSは通常、以下の場所に配置されます。
<Domain_Home>/store/gmds

[Java] Jersey, from Android to Mainframe

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

いつも通り、Jerseyチームは次々と新リリースを出しています。2月にはJersey 2.16とJersey 1.19をリリースしました。
Jersey 2.16
リリースノート:https://jersey.java.net/release-notes/2.16.html
変更履歴:https://github.com/jersey/jersey/releases/tag/2.16
Jersey 1.19
ブログ:http://blog.dejavu.sk/2015/02/13/jersey-1-19-is-released/
変更履歴:https://github.com/jersey/jersey-1.x/releases/tag/1.19

Jerseyには、大規模かつアクティブなコミュニティがあります。例えば、Jerseyにはz/OSで使用した際のバグがありました(誰がz/OSでJerseyを使わないって?)。コミュニティメンバーがこの特定の問題と修正案を提起し、この修正が2.16で統合されました。
[GRIZZLY-1726] When running grizzly http server on z/OS, incoming JAX-RS based REST request URIs are incorrectly converted from UTF-8 to EBCDIC default charset and thus lead to HTTP 404
https://java.net/jira/browse/GRIZZLY-1726
Jersey 2.16では、AndroidでJerseyクライアントスタックの実行に関連する問題も解決しています。Androidのサポートはメインプロジェクトではありませんが、Jersey 2.16では明確に初期の成功を示しています。
Jersey 2.x Client on Android
https://blogs.oracle.com/japod/entry/jersey_2_x_client_on

とはいえ、やらなくてはならないことがもっとあります。Jerseyチームが実際のユースケースに関する具体的なフィードバックと、コミュニティへの貢献を求めています。

そんなわけで、2.16を使うと、ついにAndroidのスマートフォンでJerseyクライアントを実行し、z/OS上で実行されているJerseyサーバに接続することができます!

Jerseyコミュニティがすでに大規模でアクティブだから参加できない、なんてことはありません。貢献はいつでも歓迎します。Jerseyに貢献する様々な方法はこちらを確認してください。
Jersey - Report Issues
https://jersey.java.net/contribute.html