[SOA/BPM] SOA Suite 12c: Topology Suggestions

原文はこちら。
https://blogs.oracle.com/SOA/entry/soa_suite_12c_topology_suggestions

このエントリでは、よく使われ、サポート対象のSOA Suite 12cのトポロジーに関する提案と選択肢をご紹介します。Enterprise Deployment Guide(EDG)トポロジーだけはOracleが徹底的にテストをしてはいますが。
  • トポロジーを決める上で考慮すべきことは、アップグレードは常にドメイン単位である、ということです。ドメインにデプロイされたすべての製品が同じリリースタイミングで公開する必要があり、同時にすべての製品をアップグレードすべきです。
  • 2個の異なる製品を同一ドメインに配置する理由として、管理の集中化は一つの要素ではありますが、それが唯一の理由であってはいけません。管理の集中化に対するソリューションとして、Enterprise Manager Cloud Controlを利用できるからです。
  • 通常、Service BusとSOA SuiteはEnd-to-Endのアーキテクチャにおいて異なる層にあり、そのため異なるドメインに配置します。これはService Busが、複数のSOAドメインや他のサービスへのエンタープライズ規模でのルーティングに利用される場合は正しいのですが、Service Busが主としてドメイン内のSOA SuiteコンポジットへのMediationやルーティングを提供するために使われている場合、同一ドメインに存在する場合があります。しかしながら、最適なパフォーマンスやスケーラビリティのために、通常は別のクラスタに配置します。12cではService BusとSOA Suiteを同一クラスタに配置し始動することができます。この構成を採用するにあたって可能性のある唯一の理由は、メモリ使用量を削減するというものですが、一般的ではありません。
  • Oracle Enterprise Repository(OER)やUDDIなどガバナンス製品は、SOA SuiteやService Busドメインに含めず、別ドメインに配置すべきです。OERはUDDIと異なるドメインに配置すべきです。UDDIは3rdパーティ製品であり、同一ドメインに配置するとアップグレード時に問題が発生する可能性があります。
  • ユーザーが拡張可能なサーバーグループをクラスタ内のサーバに適切に割り当てることにより、複数の製品を同一クラスタに配置することができます。
    1. SOA Suiteの場合、サーバーグループとしてSOA-MGD-SVRSもしくはSOA-MGD-SVRS-ONLYを使います。
    2. Service Busの場合、サーバーグループとしてOSB-MGD-SVRS-COMBINEDもしくはOSB-MGD-SVRS-ONLYを使います。
    3. BAMの場合、サーバーグループとしてBAM12-MGD-SVRSもしくはBAM12-MGD-SVRS-ONLYを使います。
    4. MFTの場合、サーバーグループとしてMFT-MGD-SVRSもしくはMFT-MGD-SVRS-ONLYを使います。
    5. ESSの場合、サーバーグループとしてESS-MGD-SVRSを使います。
  • BAMをSOA Suiteの外部で使う場合、通常はSOA Suiteとは別のドメインにしますが、SOA Suiteインスタンスとともに利用することが主な場合は、SOA Suiteと同一ドメインの異なるクラスタにBAMを配置すべきです。BAM 12cでは、SOA SuiteとBAMの統合が緊密になっており、同一ドメインに配置することが最良です。BAMとSOA Suiteを同じクラスタに共存させるべきではありません。それはHA構成時にはBAMが自動サービス移行するのに対し、SOA Suiteはサーバー全体の移行を使うためです。
  • Oracle Web Services Manager Policy Manager(OWSM PM)はドメインの一つのクラスタにのみデプロイしなければなりません。しかし、SOA Suite、OSB、BAM、MFTテンプレートはデフォルトで各コンポーネント自身のクラスタにOWSM PMをOWSM PMに配置することを前提としています。
    1. このような異なるクラスタを持つドメインの場合、OWSM PMをEDGにあるようにOWSM PM自身のクラスタに配置してください。JRFと2個のOWSM PMに関係するサーバーグループをこのクラスタに指定できます。
    2. サーバーグループとしてデフォルトのSOA-MGD-SVRSを指定した場合、OWSM PMは自動的にSOAクラスタに配置されます。しかし、OWSM PMがすでに別のクラスタに存在する場合、サーバーグループとしてSOA-MGD-SVRS-ONLYを指定し、SOA SuiteをSOAクラスタに配置してください。
    3. サーバーグループとしてデフォルトのBAM12-MGD-SVRSを指定した場合、OWSM PMは自動的にBAMクラスタに配置されます。しかし、OWSM PMがすでに別クラスタに存在する場合、サーバーグループとしてBAM12-MGD-SVRS-ONLYを指定し、BAMをBAMクラスタに配置してください。
    4. サーバーグループとしてデフォルトのOSB-MGD-SVRS-COMBINEDを指定すると、OWSM PMは自動的にService Busクラスタに配置されます。しかしOWSM PMがすでに別のクラスタに存在する場合、サーバーグループとしてOSB-MGD-SVRS-ONLYを指定し、Service BusをService Busクラスタに配置してください。
    5. サーバーグループとしてデフォルトのMFT-MGD-SVRSを指定すると、OWSM PMは自動的にMFTクラスタに配置されます。しかしOWSM PMがすでに別のクラスタに存在する場合、サーバーグループとしてMFT-MGD-SVRS-ONLYを指定し、MFTをMFTクラスタに配置してください。 
    6. ESSはOWSM PMがドメイン上に存在する必要がありますが、ESS自体はOWSM PMをターゲットにしていません。
  • ESSの配置にあたっては以下のガイドラインに従ってください。
    1. Service Busのみのドメインの場合、ESSは通常Service Busクラスタに配置します。
    2. SOA Suiteのみのドメインの場合、ESSは通常SOA Suiteクラスタに配置します。
    3. SOA SuiteとService Busとも異なるクラスタに存在する場合、ベストプラクティスはESSをESS自身のクラスタに配置することです。
    4. MFTは常にMFTクラスタにESSのプライベート・コピーを有しています。これは、SOA SuiteとService Busで利用するために追加でデプロイされるESSとは無関係です。
    5. ESSは現在スタンドアロン・スケジューラとしての位置づけではなく、SOA SuiteやService Busのためのスケジューラとしての位置づけであり、同じドメインに配置すべきです。
  • MFTは通常SOA SuiteやService Busとは別のドメインに配置しますが、同一ドメインの異なるクラスタに配置することができます。
  • ベストプラクティスは、Healthcare IntegrationやB2B用の別のドメイン、SOA SuiteとB2B用の別のドメインを利用することです。これはB2BとHealthcare Integrationのドキュメントに記載があります。

[Applications] Siebel theme demo with Alta UI styling

原文はこちら。
https://blogs.oracle.com/SiebelOpenUI/entry/siebel_theme_demo_with_alta

Siebel Open UIはCRMアプリケーションの新しいユーザー体験を作成するための能力や柔軟性を提供します。Open UIを使うと、CRMアプリケーションも簡単にコーポレートブランディングに整合することができます。Siebelチームの同僚と一緒に、新しいテーマをシンプルな手順でSiebelアプリケーションに簡単に追加できる様子をご紹介する動画を作成しました。
この例では、先日Oracleのクラウドおよびモバイルアプリケーション製品群向けに発表された、新しいクールなOracle Alta UIスタイルをSiebelに適用することにしました。
Alta UI Gallery & Patterns
http://www.oracle.com/webfolder/ux/middleware/alta/gallery/homePages/browser.html
Siebel CRMはOracle Sales Cloudと統合されており、もしかすると両アプリケーションに対しAlta UIスタイルを使って、よりシームレスなユーザー体験を作成したいと思われるかもしれません。
以下の動画をご覧いただくとともに、正確な手順をご紹介しましょう。



ここから、Siebelテーマ、ここでは新しいAlta UIテーマを展開する正しい手順をご紹介します。
  1. カスタムcssを作成する(通常Web開発者が好みのスタイルを作成するために実施する)。
  2. カスタムcssファイルを PUBLIC/<Language>/FILES/custom フォルダにコピー
  3. Manifest Filesビューにて該当するファイルパス(大文字・小文字を区別、ファイルフォルダで始まる)を使ってカスタムcssファイルを登録する。
  4. カスタムテーマをユーザー・プリファレンスで選択し、Manifest ExpressionsビューでカスタムExpressionを登録する(既存のManifest Expressionテーマのレコードをコピーし、それを編集するのが最も簡単)。
  5. マニフェスト管理ビューでアプリケーションテーマに対しカスタムPLATFORM DEPENDENTエントリを登録する(既存のテーマ・レコードをコピーしそれを編集するのが一番簡単)。
    1. Object Expression List Appletで新しいカスタム式を関連付ける
    2. File List Appletでベース(Aurora)のcssファイルを関連付ける
    3. File List Appletで新しいカスタムcssファイルを関連付ける(順序が重要です。順序1、ベース、拡張子、そして順序2)
  6. カスタムテーマ用に新しいLOV(List Of Values)エントリを作成する(既存のテーマのLOVレコードをコピーし、適切なLICエントリを用いて編集するのが一番簡単)。LOVキャッシュをクリアする。
  7. ログオフしてマニフェストシステムのキャッシュをクリアし、再度ログインする
  8. [User Preferences]>[Behavior]へ移動する
  9. カスタムテーマを選択し、設定を保存する
  10. F5を押してページを再読み込みする
新しいテーマをご自身で試してみたいという場合には、Siebel Alta UIテーマをこちらからダウンロードできます。

[FMW, MFT] Customizing Oracle MFT File Rename Java Callout

原文はこちら。
https://blogs.oracle.com/SOA/entry/customizing_oracle_mft_file_rename

Review and Use Case

それでは、このCustomizing MFTシリーズの前回の概要エントリをすべて理解されたことかと思うので、カスタムアクション(コールアウト)というコンポーネントを完全に理解し、Oracle MFTドキュメントの「Processing Transfers with Custom Callouts」の章にある、改行文字の変換サンプルをビルドされ、MFTエンジン内部でファイル名を変更するしくみを実装するという、別の現実世界のシナリオを作成する準備が整っているはずです。
Customizing Oracle MFT with Java Overview
https://blogs.oracle.com/SOA/entry/customizing_oracle_mft
http://orablogs-jp.blogspot.jp/2014/12/customizing-oracle-mft-with-java.html
Oracle® Fusion Middleware Using Oracle Managed File Transfer
Processing Transfers with Custom Callouts
Understanding Custom Callouts
https://docs.oracle.com/middleware/1213/mft/MFTUG/mftug_exts.htm#MFTUG4266
内部と言っているのは、ファイルをファイルシステムに書き出す、もしくはリモートFTPサーバに書き出し、配信後にファイル名を変更するユースケースと区別するためです。このユースケースは、ソースから流入するファイルの名前にタイムスタンプのような余分な文字が含まれている場合に、標準のJavaの正規表現を使って取り除くというものです。つまり、order20151011.xmlをorder.xmlに変更したり、customer12345.csvをcustomer.csvと変更します。

Components

XML Config File

ご存じのように、コールアウト・アクションにはそれぞれインターフェースを定義するXMLの設定ファイルが必要です。以下はこのサンプルの設定ファイルで、アクション名、ライブラリ名、ヘルプテキスト、デザイナで設定されるパラメータなどを定めています。このサンプルをターゲット前処理で使います。2個のパラメータ(SourceExpとReplaceWith)を使います。コールアウト設定ファイルの構成方法の詳細は前回のエントリで説明していますので、理解が不明瞭であれば再読してください。先へ進むため、とりあえずファイルを以下のリンクからダウンロードするか、お気に入りのテキストエディタに以下のXMLをコピー&ペーストして、RenameRegesp.xmlという名前で保存し、そのファイルをRenameRegespというフォルダを新規作成し保存してください。
RenameRegexp.xml
https://blogs.oracle.com/SOA/resource/mftblog/RenameRegexp.xml
<?xml version="1.0" encoding="UTF-8"?>
  <mft:Callouts xmlns:mft="http://xmlns.oracle.com/mft"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.oracle.com/mft callout.xsd ">
    <mft:Callout description="Rename Regexp" 
      helpText="File Rename with Regular Expressions"
      groupName="Target-pre" timeout="300"
      implementationClass="com.oracle.callout.sample.RenameRegexp"
      libraryName="RenameRegexp.jar" name="RenameRegexp">
    <mft:Parameter description="SourceExp" mandatory="true"
      helpText="Source Regular Expression Pattern" 
      name="SourceExp" parameterType="string"/>
    <mft:Parameter description="ReplaceWith" mandatory="true"
      helpText="ReplaceWith Regular Expression Pattern"
      name="ReplaceWith" parameterType="string"/>
   </mft:Callout>
</mft:Callouts>

Java Source Code

ご存じのように、ソース、ターゲットの前処理、後処理コールアウト用の様々なAPIがあります。この例ではターゲット前処理インターフェースを説明しています。これは以前の改行文字変換であったような、ファイルの内容を変更するものではありません。このトピックを確認したい場合には、以下のドキュメントをご覧ください。
Oracle® Fusion Middleware Using Oracle Managed File Transfer
Processing Transfers with Custom Callouts
Java Code Requirements and Tips
https://docs.oracle.com/middleware/1213/mft/MFTUG/mftug_exts.htm#MFTUG4270
このJavaクラスは、実行時にデザイナ転送アーティファクトで設定される正規表現を置換するため、2個の文字列を受け取ります。このサンプルで使われる、ファイル名変更のためのこの新しい興味深いコードは、PluginContext.getTransformedInputFileNameとPluginOutput.setNewFileNameというメソッドです。正規表現の置換は、昔からあって信頼できるString.replaceAllを使い、1行のコードで実装しています。以下がコードスニペットです。
PluginOutput out = new PluginOutput();
oldfname = pluginContext.getTransformedInputFileName() ;
newfname = getNewname(oldfname, SourceExp, ReplaceWith);
if (newfname != null && newfname.length() > 0) { 
    out.setNewFileName(newfname);
}
...
public String getNewname(String oldfname, String srcexp, String repexp) {
        return oldfname.replaceAll(srcexp, repexp);
}
RenameRegexp.javaファイルをダウンロードし、RenameRegexpフォルダ内にcom/oracle/callout/sampleという子ディレクトリを新規作成し、その中に配置してください。
RenameRegexp.java
https://blogs.oracle.com/SOA/resource/mftblog/RenameRegexp.java

Compile, Package and Install

この章では以下の環境変数が設定済みであるとします。
  • $MW_HOME :MFTがインストールされている場所
  • $JAVA_HOME : JDK7がインストールされている場所

Compile

コマンドプロンプトから以下のコマンドを実行します。
$JAVA_HOME/bin/javac -classpath $MW_HOME/mft/modules/oracle.mft_12.1.3.0/core-12.1.1.0.jar com/oracle/callout/sample/RenameRegexp.java

Package

JDKのjarコマンドを使い、javaのjarファイルを以下のように作成します。
$JAVA_HOME/bin/jar cvf RenameRegexp.jar com/oracle/callout/sample/RenameRegexp.class

Install

これは2段階で実施します。まず、jarファイルをMFTサーバのcalloutsフォルダに配置し、続いて設定XMLファイルをインポートします。以下のようにコピーコマンドを使います。ドメイン名は皆さんの環境に合わせて変更してください。
cp RenameRegexp.jar $MW_HOME/user_projects/domains/<Domain_Name>/mft/callouts/
[注意]このコールアウトを使うファイル転送のMFTエクスポートファイルがある場合、これをインポートし、以下のWESTのステップをスキップできます。

続いて、WLSTコマンドを使い、RenameRegesp.xmlファイルをインポートします。
$MW_HOME/mft/common/bin/wlst.sh
WebLogic Serverに対し、ホスト名、ポート番号、管理者の資格証明を使い接続します。
connect("weblogic", "<PASSWORD>, "t3://<host>:<port>")
WLSTのCreateCalloutコマンドで、ファイルの場所を指定します。
  createCallouts('/home/oracle/mft/callouts/RenameRegexp/RenameRegexp.xml')
listCallouts() コマンドを使って正しく設定できたことを確認します。
listCallouts()
exit() コマンドでWLSTを終了します。
exit()

Deploy a Transfer and Test

この章では、Javaの正規表現に関する知識が必要です。この実装はJavaのString.replaceAllメソッドを使用しています。外部ツールを使い、事前に作成された正規表現をテストしておくことをおすすめします。様々なツールが利用可能ですが、MFTデザイナに設定する前に正規表現をテストするためのオンラインツールとして、www.regexplanet.comはなかなかよいと思います。
RegexPlanet - Online Regular Expression (Regex) Testing and Cookbook for: Go, Haskell, Java, JavaScript, .Net, Perl, PHP, Python, Ruby, Tcl & XRegExp
http://www.regexplanet.com/
この例では、以下のパラメータ値を使ってファイルorder20151011.xmlをorder.xmlへと変換するとしましょう。
  SourceExpr:  ([A-z])\d+(.*)
  ReplaceWith: $1$2

Design and Deploy

この時点で、RenameRegexpコールアウト・アクションは転送ターゲット前処理UIに現れており、任意の転送で利用する準備が整っています。デザイナに移動し、"Rename Transfer"という転送を作成します。この転送は、"Rename FTP Source"と"Rename FTP Target"という、ソースとターゲットで構成されています。FTP埋込みソースは"/rename/in"を使い、FTPリモートターゲットは"/rename/out"を使います。転送は以下のようなスクリーンショットになっているはずです。

下のスクリーンショットのように、以下のパラメータを使って、転送の前処理アクションを構成する必要があります。

  SourceExpr:  ([A-z])\d+(.*)
  ReplaceWith: $1$2

保存し、他のOracle MFT転送のようにこの転送をデプロイします。

Test

任意のFTPクライアントを使ってMFT埋込みFTPサーバに接続し、"order20151011.xml"というファイルを"/rename/in"フォルダにコピーします。完了すると、MFT監視コンソールに移動し、以下のような転送レポートを確認します。

おめでとうございます!これで非常に便利かつ設定可能で再利用可能な名前変更のためのカスタム・コールアウトを実装しました。このカスタム・コールアウトは任意の転送ターゲット前処理アクションで利用できますが、たった76行のコードでできています。この転送の完全なエクスポートファイルはこちらからダウンロードいただけます。

[FMW, MFT] Customizing Oracle MFT with Java Overview

原文はこちら。
https://blogs.oracle.com/SOA/entry/customizing_oracle_mft

Overview

Oracle MFTは、標準でよく使われるほとんどの機能を提供するよう設計されましたが、十分ではない場合には、ちょっとしたカスタマイズ可能なコードスニペットを使って簡単に拡張できるようになっています。自分で試したいということであれば、Oracle MFTのドキュメントの「Processing Transfers with Custom Callouts」という章に、カスタマイズを始めるにあたって必要なものがすべて用意してあります。
Oracle® Fusion Middleware Using Oracle Managed File Transfer
Processing Transfers with Custom Callouts
Understanding Custom Callouts
https://docs.oracle.com/middleware/1213/mft/MFTUG/mftug_exts.htm#MFTUG4266

このトピックに関する詳細情報が必要であれば、このままお読みください。簡単に言うと、すべてのカスタム・コールアウトは完全に再利用可能であり、パラメータ化されるため、すべての開発投資は概して1回のコストですみます。

Terminology

カスタム・コールアウトには多くのユースケースや種類があります。コールアウトができること、そしてコールアウトを呼び出すタイミングならびに方法を含めご紹介しますが、まずは少々背景と用語についてご紹介します。コールアウトは一般的な用語で、MFTデザイナーページでMFT転送の設定時に使用できるカスタムJavaコードを説明するためために使用される用語です。圧縮・展開、暗号化・復号化のような[アクション]が標準で利用可能であり、カスタム・コールアウトも同様に、[処理アクションの追加]ボタンをクリックすることで添付できます。

ここから先、この記事ではアクションという用語を使いますが、これは標準提供されるアクションとカスタム・コールアウトの両方に適用します。

Types

アクションには一般的に2種類あります。一つはペイロードを変更する必要があるものと、他方はそうでないもの、というものです。ドキュメント内の「改行変換」の例では、ファイルを変更して改行文字をDOSとUnix間で変更する方法を説明しています。このようなアクションは、コンテンツの変更を必要とするため、出力ストリームを提供するPluginOutputを返すメソッドを実装する必要があります。
public PluginOutput process(PluginContext context, InputStream input,
            OutputStream out, Map<String, String> calloutParams) {
ファイルコンテンツの変更が不要なアクションの場合、以下のように、出力ストリームにアクセスしないPuginOutputを返すメソッドで異なるバージョンを実装します。
public PluginOutput process(PluginContext context, InputStream input,
            Map<String, String> calloutParams) {

Invocation Order

アクションは転送の以下のポイントで呼び出されます。それぞれのポイントでのアクションのメリットについて以下でご紹介します。
  1. Source
  2. Pre-Target(前処理)
  3. Post Target(後処理)

Source(ソース)

ソース・アクションをソースアーティファクトページに添付し、そのチャネルですべての流入してくるファイルに対して紐付けられています。チャネルに対する要件が常にPGP暗号化ファイルのみであれば、これはソース側の処理にアクションを追加するよい理由にります。しかしながら、異なるファイルタイプがこのチャネルやフォルダに配信されるのであれば、異なるフォルダを使うか、もしくはターゲットアクションを利用すべきでしょう。

Pre-Target(前処理)

転送フローページでターゲット・アクションを構成しますが、これは任意のソースアクションが完了した後に実行されます。上記の例のように、複数のファイルタイプで単一のフォルダを共有するような場合、fan-outシナリオを別のターゲットで実装して、同じソースを異なる転送でコンテント・フィルタを使って再利用し、異なるファイルタイプを別のターゲットへルーティングすることができます。この例では、一つの転送にはターゲット復号化アクションがあるのに対し、他の転送にはアクションがないため、ファイルを別のターゲットにそのままルーティングします。これは処理済みのファイルを後続の処理のために最終のターゲットに送信しつつ、元のファイルのアーカイブを維持する一方法です。

Post Target(後処理)

前処理と同様に、後処理を転送内で構成します。ターゲットに対するファイル転送が成功した場合に、後処理アクションが呼び出されます。そのため、後処理アクションは通常ファイルの中身に手を入れません。通知は、複数のファイルにzipファイルを展開するのと同様に、後処理アクションに適しています。

Summary

アクションやカスタム・コールアウトには多数のユースケースがあります。圧縮、暗号化、通知、ファイルペイロードの改行文字変換、検証などといった内容に関し、これから取り上げていきます。この概要で、Oracle MFTドキュメントのProcessing Transfers with Custom Calloutsという章にしっかり記載されている、81行の最初のEnd-to-Endのサンプルをなんとかやっていく準備が整ったはずです。

[FMW, BPM] BPM 12cのPAMに関すること

昨日に続いて、BPM 12cについてよく頂戴する質問への回答をご紹介します。

Q1) Process Asset Manager (PAM) って何?
A1) Process ComposerとJDeveloperで作成したアセットを管理するための中央リポジトリです。

PAMとは、 12cで新たに導入されたコンポーネントで、11gまではMDS(Metadata Services)と呼ばれたものに近いものですが、かなり違いがあります。

MDS
(11g)
MDS
(12c)
PAM
データを保持する場所 データベース
(*_MDS)
データベース
(*_MDS)
ファイルシステム
設計時の情報を保持できるか ×
バージョン管理の可否 ×
バージョン管理の方法 スナップショット ×Subversion
BPMプロジェクト以外の成果物(ADF Formなど)も管理できるか × ×
クラスタ構成が可能か ×
MDSは12cでも存在するのですが、12cでは設計情報は持たず、ランタイム情報の共有のために利用するようになりました。とはいえ、Process ComposerやJDeveloperで作成した開発成果物を保持するための領域が必要なので、12cでPAMが導入されました。

(こっそり)リリース直前に名前がBAC(Business Asset Catalog)からPAMに変わったため、ExceptionやPackage名には、PAMではなく、まだBACが使われている箇所が多く見られます。今後整理されることでしょう。

PAMのアーキテクチャ概略は以下のようになっています。BPM Studio(=JDeveloper)からもComposerからもアクセスできるようになっていますが、背後にいるのはSubversionなので、NetBeansやEclipse、Visual Studioであっても、Subversionクライアントの機能があれば、直接Subversionにアクセスできます。



Q2) 開発環境で、物理ノード(マシン)を複数使うクラスタ構成にしたんだけど、PAMってファイルシステムに情報を保持するんだよねぇ。その場合、どうやればクラスタ構成に対応させればいいの?
A2) デフォルトのリポジトリ保持場所の変更が必要です。全てのクラスタメンバからアクセスできるファイルシステムにリポジトリを作成する必要があります。

A1で記載したように、Subversionのリポジトリはファイルシステム上に作成します。そのため、クラスタ構成を採っている環境では、PAMのリポジトリをクラスタメンバ全てからアクセスできる場所に作成する必要があります。

# 開発環境でそこまでやるか、という話はさておき...

具体的には、デフォルトのPAMのリポジトリの在処は
<Domain_Home>/bpm/bac/<server名>/repositories
です。Pathからもわかる通り、サーバ毎に作成されてしまうため、たとえ単一ノード内に複数サーバでクラスタを構成したとしても、リポジトリが複数作成されてしまいます。これを回避するためには、BACNodeとBacConfigurationManagerというMBeanの設定を変更する必要があります。

変更するには
  1. Enterprise Manager Fusion Middleware Controlに管理者としてログイン
  2. WebLogicドメイン>ドメイン名を右クリック>システムMBeanブラウザへ遷移
  3. 検索(双眼鏡アイコン)ボタンを押し、MBean名として上述のMBeanを指定
まず、BacConfigurationManager。

クラスタ構成の場合、Active-Active、Active-Passiveの選択ができます。
必要であれば、Protocol(プレーンもしくはSSH)も変更できます(デフォルトはプレーン)。

続いてBACNode。

この中のRepositoryPath(リポジトリのパス)を、クラスタメンバからアクセスできる場所に設定してください。その他、必要があればAddresses(PAMへアクセスするためのホスト名もしくはIPアドレス)、AdminAddresses(管理用のアドレス)、AdminPort(管理用のポート)、Port(PAMへ接続するためのポート番号)を指定してください。

注意
PAMはSOA Suiteでは利用できません(BPM Suiteのライセンスが必要です)。
BacConfigurationManager、BACNodeに対し変更を加えた場合、設定を反映させるためにはサーバ再起動が必要です。

[Java, JavaScript] Node.js and io.js on Java

原文はこちら。
https://blogs.oracle.com/java-platform-group/entry/node_js_and_io_js

Nashorn(ドイツ語でRhino) JavaScriptエンジンはJDK 8の数多ある機能改善のうちの一つであり、Rhinoとして知られる以前のJavaScriptエンジンに変わるもので、より高速に動作します。また、別の注目すべき機能があります。それは多くのNode.jsやio.jsアプリケーションをJVM上で実行することができる、というものです。これらのアプリケーションは最適化されたJavaライブラリを呼び出したり、JMXを使って監視能力を自動的に受け取ったりすることができます。
まもなく登場するJDK 8 update 40では、Nashorn/JavaScriptのパフォーマンスがOptimistic Typingにより、より一層向上するはずです。
Nashorn Architecture and Performance Improvements in the Upcoming JDK 8u40 Release
https://blogs.oracle.com/nashorn/entry/nashorn_performance_work_in_the
http://orablogs-jp.blogspot.jp/2014/12/nashorn-architecture-and-performance.html

Java Virtual Machine - More than just Java

Java Platformは、異なるタイプのアプリケーションを実行する方法を提供しています。たとえアプリケーションがJavaプログラミング言語で書かれていないとしてもです。その結果、開発者はJVMの最適化機能や安定性を活用できるとともに、システム管理者はデプロイメントの管理・監視が向上します。
JVMで動作する他の言語の例として、JavaScript(Nashorn)、Ruby(JRuby)、Python(Jython)、Scala、Groovyなど、様々なものがあります。

Project Avatar – A JavaScript services layer on the JVM

Avatar.jsはNodeプログラミングモデル、APIやモジュール・エコシステムをJavaプラットフォームにもたらすプロジェクトです。
Avatar.js
https://avatar-js.java.net/
JavaScriptで記述されていますが、これらのアプリケーションはJavaプラットフォームの拡張性、管理性、ツールや拡張可能なJavaライブラリやミドルウェアのコレクションを活用することができます。Avatar.jsバイナリをダウンロードすると、開発者はアプリケーションを実行できます。例えば、Tim Caswellの記事である "Hello Node!" には、hello-console.js と hello-http.js という基本的なサンプルが含まれており、これを使ってAvatar(訳注:厳密にはAvatar.jsです)のテストのために利用することができます。
Hello Node!
http://howtonode.org/hello-node
「Nashorn, The Hidden Weapon of JDK 8」というプレゼンテーションが2014年12月のSilicon Valley Java User Groupの会合で発表されました。このスライドではNetflixでのNashornとAvatarの利用に関して説明しています。さらに別のNashornのデモを紹介しています。
Nashorn, The Hidden Weapon of JDK8
http://www.meetup.com/sv-jug/events/218752724/
Nashorn @ Netflix
https://docs.google.com/file/d/0B1_6_iTSwCcjVlc0d1JQLTFTUUU/edit
nashorn at netflix (スライドとデモコード)
https://drive.google.com/folderview?id=0B1_6_iTSwCcjcFRUTjRQRWV2bkk&usp=drive_web#

Avoid rewrites and re-use libraries

サーバーサイドJavaScriptアプリケーションをJVMで実行する主要なメリットに、Javaライブラリへアクセスできる、というものがあります。開発者は主要なライブラリ、SQLやNoSQLドライバ、Hadoopクライアント、エンコーディングライブラリなどの機能を書き直す必要はありません。以前の「Nashorn, the rhino in the room」というエントリで別のサンプルがありますが、これはNode.jsに固有のものではありません。
Nashorn, the rhino in the room
https://blogs.oracle.com/java-platform-group/entry/nashorn_the_rhino_in_the
Niko Köbler(@dasniko)がAvatar 2.0とそのModel Store APIに関する2部構成の記事を出しています。このモデルストアAPIを使用することで、開発者はより簡単に、SQLやNoSQLと対話することができ、そして多くの既存の最適化されたものから便益を享受することができます。

Monitoring Applications on the JVM

すべてのJavaプロセスをJMXと呼ばれるメカニズムで監視することができます。システム管理者はリモートの認証済みJMX接続を有効にして、こうした実行中のアプリケーションを外部から監視するのではなく、内部から監視することができます。JMX監視(ローカル、リモートとも)に関する詳細情報は、以前のエントリからどうぞ。
Deep Monitoring with JMX
https://blogs.oracle.com/java-platform-group/entry/deep_monitoring_with_jmx

Monitoring applications with Mission Control / Flight Recorder

Java Flight Recorderを使うとJVMアプリケーションを本番環境で効果的に監視することができます。標準的な(NetBeansプロファイラのような)開発プロファイラとは異なり、Flight Recorderは性能への影響が軽微でほぼ無視できます。
Mission Controlのダッシュボード・ビューには、CPUやメモリリソースの基本情報が表示されます。開発者はThreadタブを使ってシステムのスループットや、アプリケーションが特定のリソースでブロックしているかどうかをより詳細に把握できます。
Mission Controlを立ち上げるには、jmcコマンドを実行し、Avatarアプリケーションに接続します。以下のスクリーンショットは、com.oracle.avatar.Serverとして識別されているNode.jsアプリケーションをMission Controlで監視している様子です。

Node.jsアプリケーションをJavaScriptで記述していますが、Flight RecorderはCPUのスパイクのようなイベントに関するトリガーベースの記録も可能です。システム管理者や開発者が記録を見返して、何がそのイベントの原因だったのかを知ることができます。
詳細情報は、Mission Controlの製品情報ページやユーザーガイドからどうぞ。
Java Mission Control
http://www.oracle.com/technetwork/java/javaseproducts/mission-control/java-mission-control-1998576.html
Java Mission Control (JMC) and Java Flight Recorder (JFR)
http://docs.oracle.com/javacomponents/jmc.htm

Additional ways of running Node.js on the JVM

Avatar.jsはNode.jsアプリケーションをJVMで実行するための方法の一つです。
Oracle Java上で動作させる場合、どちらのプロジェクトも上述のようにFlight Recorder/Mission Controlで監視することができます。この監視をOracle JVM自身が直接提供しているため、コードの変更や追加の監視パッケージの適用は不要です。

[FMW, BPM] ADF FormをBPM Process ComposerのPlayerで使ってみたり、タスクを取り下げてみたり

JPOUG Advent Calendar 2014 の12月21日分のエントリです。昨日は @mutatsu さんのエントリでした。
本当はNashornについて書きたいところですが、そこは耐え難きを耐え、Oracle Business Process Management Suite(以下、Oracle BPM)について今年よくお尋ねいただいた質問とその回答をご紹介します。なお、「Oracle BPMって何?」という方はこちらをどうぞ。
Oracle Business Process Management Suite
http://www.oracle.com/technetwork/jp/middleware/bpm/overview/index.html

Q1) BPM Process Composerで利用可能なProcess Player機能って、ADF Formでも使えるの?
A1) はい、使えます。
まず、Process Composerとは、Web画面でプロセスの設計・開発ができるツールです。
Process Composer (画面は12cの例)
そのComposerに含まれているProcess Playerとは、作成したプロセスが想定通りに動作するかを入力フォームや作業するロールを含めて確認するための機能です。簡単に言えばテストのための機能です。
Process Playerの実行例
Process Composerでは、Web Formと呼ばれる画面を使って、簡単に入力フォームを作成できますし、
Web Formの例
もっと凝った、リッチな画面が必要であれば、ADF Formと呼ばれるADF(Application Development Framework、アプリケーション開発のためのOracleが提供しているフレームワーク)を使った画面をJDeveloperで開発し、プロセスの入力・表示画面として利用することができます。
ADF Formの例
で、Web Formを使うか、ADF Formを使うかは、Composerのヒューマンタスク機能で設定するのですが、下図の通り、その設定内容がわかりづらいために、上記質問をいただいた、というわけです。
Web Formの場合
ADF Formの場合
では、本題。ADF Formをタスクフォームウィザードを使って、BPMプロセスと一緒にJDeveloperからデプロイした場合、プレゼンテーションの設定は、「何もする必要がない」というのがが答えです。実際にProcess Playerを実行すると...

という感じで、正しくADF Formが表示されます。
ただし、何も設定しないで動作させるためには、以下の前提条件を満たしていることが必要です。

  • PAM(Process Asset Manager)にBPMプロジェクトをチェックインしており、Process Composerからプロジェクトにアクセスできること
  • BPMエンジンの稼働するサーバ(たいていの場合はSOAサーバ)にADF Formがデプロイされていること

APIを使って画面を作成している場合や、外部JNDI経由でADF Formを作成している場合には、ADF Formの設定をProcess Composerで実施する必要があります。

Q2) ワークフローの取下げ(ワークフローの起票をなかったことにする)ってできるの?できるタイミングは?
A2)取下げはプロセスが完了していないかぎり、任意のタイミングで可能です。
ヒューマンタスクの定義で、「取下げ」はタスク作成者、タスク所有者、管理者が実施できるようになっています。

例えば、先ほどのプロセスで、James Cooper(jcooper)というアカウントの人が起票した経費精算レポートのタスクを、すでに上長であるJohn Stein(jstein)が取得しているとします。James CooperとしてBPM Workspaceにログインし、その状況を確認してみましょう。

右下のペインに[アクション]がありますが、これを開くと、[取下げ]が選択できます。

これを選択すると、当該インスタンスは終了します。タスク履歴上は取下げ済になっています。


BPMについてはいろいろお伝えしたいことがありますが、今回はこのあたりで。
明日は吉川和宏さんのエントリです。お楽しみに。
Happy holidays!

[Java, JavaScript] Nashorn Architecture and Performance Improvements in the Upcoming JDK 8u40 Release

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

[訳注]
原文はMarcus Lagergren (動的言語のパフォーマンス・アーキテクト)からのメール形式になっていますが、訳文では少々編集しています。

ここしばらくブログ投稿をご無沙汰して申し訳ありませんでした。ちょうどコードフリーズしたOpenJDK 8u40について、そしてNashornにどのような機能拡張を施したのかをこのタイミングで説明するのがよいと考えました。

8u40ではNashornコードジェネレータを書き換え、Optimistic type systemが搭載されています。

JavaScript、もっとはっきり言うと、任意の動的言語は、パフォーマンスの高いコードを簡単に生成するためのコンパイル時の情報を提供しません。これが、8u40のために、Nashorn Type Systemを再設計し、より良い、高速なコードを生成するようにした理由です。Nashornコンパイラの出力である、Javaバイトコードは、意図的に強く型付けされていますが、JavaScriptはそうではありません。ここに動的言語のASTを最適なバイトコードへ変換する重大な問題があります。Attila Szegedi、Hannes Wallnöfer、と共に、昨年来、この問題を解決するために膨大な時間を研究や実装に費やしてきました。

背景
伝統的に、JavaでJavaScriptランタイムを実装する際、数字と言われるものをJavaでdoubleとして表現でき、それ以外のものは全てObjectとして表現できます。これには、数字、int型、long型や、その他の静的に証明可能ではないプリミティブ型が含まれています。言うまでもなく、このアプローチは、内部で多くのボクシングをもたらすため、JVM上での動的言語の実行速度の面でかなりのボトルネックになります。JVMは、Javaのようなバイトコードの最適化が得意ですが、これは、Javaのようなバイトコードではありません。
Type transitions in the optimistic type system
Nashornは実際に大規模な静的型解析を実施するため、生成されたコードは、上記の保守的なシナリオに比べてはるかに優れたものになる、というのが、もう一つの8u40の新しい点です。とはいえ、まだ全ての型で証明できているわけではないため、そこでOptimistic Type Systemが出てきます。今回のOptimistic Type Systemは、任意の静的に証明できない型がintという、全てのデータ型でもっとも制限の厳しいデータ型と仮定します。実行時にこの仮定が間違っていることが判明した場合には、例えばObject型やdouble型であることがわかったフィールドをメモリやスコープからロードします。また、オーバーフローする32ビットの加算を実施する場合には、実行中のコードをより保守的なバージョンで置き換えます。つまり実行中に再生成します。Nashornは実行時のコード置換を容易にするためのsimple continuationをサポートしています。これは将来、例えば、仮想的なインタプリタ層とコンパイル済みバイトコード間で行き来するといった、様々な用途に使われる可能性がある機能です。

また、将来のこうした変更に対する保護のため、リンク時にCallsiteに渡した引数によって、バイトコードがどのように見えるのかを詳細に調べ、推測しています。
Octane benchmark scores, normalized on JDK 8. 
これにより、(静的な場合には)生成されたバイトコードが実行速度において最適なJava型を含むようになっています。このコスト(全てにはコストがかかります)は、コード生成に時間を要する、というところに現れます。具体的には、わずかにウォームアップでマイナスの影響があります。ウォームアップはJDK9における主要なR&D分野であり、この件を解決でき、またワークロードを改善し、HotSpotによりうまくコンパイルさせて、もっと最適化されたサイクルにすることができる、と自信をもっています。

NashornをJVMの動的言語のための一般的なプラットフォーム/ランタイムとする取り組みで、Optimistic Type SystemはNashornに対しコード生成を指示しているどんなASTともうまく統合されています。将来のJavaのリリースのためにこれらの計画をもっと固め、最終的にNashornが「JVM上の動的言語のためのLLVM」のようなものになることを願っています。楽観的な型付けの問題がすべての動的言語に戻ってきます。このことを証明するために、当社の優れた論文学生であるAndreas Gabrielssonが、TypeScriptをNashornで実行するために必要なほとんど全てのものを実装することに成功しました。これを書いている時点で、唯一の大規模な機能のモジュールが不足しています。中間レベルのコンパイラ層でJavaScriptを生成せずに、NashornはTypeScriptからバイトコードに直接到達します。これは非常に素晴らしいことであり、Nashornが既に拡張性が高いことを示しています。類似の環境でRubyやGroovyが実行されていることについて考えてきました。Nashorn TypeScriptはまだオープンソース化されていませんが、まもなくそうなることを期待しています。

optimistic typeを使って8u40のNashornを実行するには、 以下の引数を使う必要があります。
--optimistic-types=true
まだウォームアップの問題に対する解決策を入れる時間がなかった(それはすべてのものに影響するわけではないですが、問題が残っていることで迷惑を掛ける可能性があります)ため、Optimistic Type SystemはまだNashornのデフォルト設定・動作とはなっていません。これは過度に保守的のように思われるかもしれませんが、不必要に皆さんのウォームアップを壊したくなかったためにそのようにしました。

以前のリリースに比べると、Octane benchmarks suiteのようなもので、数桁のオーダーでの性能向上をお知らせできます。また、Avatarプロジェクト向けのREST、HTTPベンチマークにおけるネイティブまたはネイティブに近いパフォーマンスを報告することができます。このことについてかなり好感を持っています。いくつかのケースでは、Nashorn上のJavaScriptアプリケーションは、SpiderMonkeyやV8のようなネイティブランタイム上で実行した同じアプリケーションと同じくらい速く動作します。言うまでもなく、自分たちの仕事をかなり誇りに思っています。

しかも・・・
JDK 8u40のNashornは生成されたコードと、推測された型情報を実行時にディスクへキャッシュします。
これは、長いウォームアップを伴う大きめアプリケーションにおける最初のイテレーションだけが問題になることを意味します。同じコードを連続実行する場合には非常に素早く安定し、等しく良好なパフォーマンスで実行されるでしょう。


是非お試し頂き、気付いたことをお知らせください。何かご質問があれば、ドキュメントを読み、メーリングリスト nashorn-dev [at] openjdk.java.net に参加してお知らせください。TwitterでNashornチームをフォローすることもできます。
  • Jim Laskey: @wickund 
  • Sundararajan Athijegannathan: @sundararajan_a
  • Marcus Lagergren: @lagergren
  • Attila Szegedi: @asz
  • Hannes Wallnöfer: @hannesw 

近い将来、より多くのエントリをUpすることになるはずですので、ご期待下さい。ブログ執筆活動を休止していることに対し、申し訳なく思っております。

追伸
多言語ランタイムとしてのJVMや、そうした多言語ランタイムを促進するフレームワークとしてのNashornに関する情報に関心がある場合には、以下のプレゼンテーションが知的好奇心を満たすかもしれませんのでご紹介しておきましょう。

[Java] USB Device Access for Java SE and OSGi

原文はこちら。
https://blogs.oracle.com/jtc/entry/simplifying_usb_access_for_java

JavaOne 2014でのハンズオン「Java SE Embedded Internet of Things Hands-on-Lab」を作成するにあたっての課題の一つが、JavaとOSGiを使った、USB温度センサーとの通信でした。
Java SE Embedded Internet of Things Hands-on Lab [HOL2097]
https://oracleus.activeevents.com/2014/connect/sessionDetail.ww?SESSION_ID=2097
残念ながら、USB通信APIは(2014年のハロウィン時期の段階で)Java SE標準には含まれておりません。そのため、この問題はどうすればJava/USB通信を確立できるのか、そしてさらに、どうやればOSGiフレームワークで動作するのか、ということに相当します。
今回は、この接続のベースとしてjavahidapiを選択しました。
JavaHIDAPI - Java API for working with Human Interface USB Devices (HID)
http://code.google.com/p/javahidapi/
HID API for Linux, Mac OS X, and WindowsのJava/JNIラッパーとしてのこのAPIの魅力は、このAPIを使うと、各プラットフォームの各デバイス用カスタムドライバが不要になる、という点にあります。
HID API for Linux, Mac OS X, and Windows
http://www.signal11.us/oss/hidapi/
OSGiフレームワーク内で操作するために(今回の場合、Apache Felix 4.4)、javahidapiのオープンソースコードを少々修正・機能拡張しました。その結果、最終的にOSGiバンドルを標準のOSGiフレームワークに適用し、HIDデバイスのUSB通信をサポートすることができます。このバンドルにはネイティブコンポーネントを含みまた、単純化のために、別のjarファイルをサポート対象のアーキテクチャ用にそれぞれ用意することにしました。OSGi愛好家向けに、Linux/armhf(Raspberry Pi向け)アーキテクチャ用の生成された MANIFEST.MF がどのようなものかご覧いただきましょう。
Manifest-Version: 1.0
Bnd-LastModified: 1414694971263
Build-Jdk: 1.7.0_51
Built-By: jtconnor
Bundle-Activator: com.codeminders.hidapi.Activator
Bundle-ManifestVersion: 2
Bundle-Name: hidapi OSGi Bundle for Linux/armhf
Bundle-NativeCode: native/linux/armv6l/libhidapi-jni-32.so; osname=Linux; processor=armv6l
Bundle-SymbolicName: com.codeminders.com.codeminders.hidapi-armhf
Bundle-Version: 1.0.0
Created-By: Apache Maven Bundle Plugin
Export-Package: com.codeminders.hidapi;uses:="org.osgi.framework";version="1.0.0"
Import-Package: org.osgi.framework;version="[1.6,2)"
Tool: Bnd-1.50.0
以下は事前ビルド済みの人気のあるLinuxプラットフォーム用hidapi OSGiバンドルです。
元のソースに対し、以下のような変更を加えました。
  1. MavenカテゴリのOSGiバンドルを使い、NetBeansプロジェクトを作成
  2. javahidapi のJavaソースコードをプロジェクトの src/main/java/com/codeminders/hidapi ディレクトリに配置
  3. アーキテクチャ固有のネイティブライブラリをプロジェクトの src/main/resources/native/linux/architecture ディレクトリに配置。具体的には、Linux/x86版の場合、 libhidapi-jni-32.so ファイルを src/main/resources/native/linux/x86 ディレクトリに配置。
  4. Activator.java クラスをプロジェクトの src/main/java/com/codeminders/hidapi ディレクトリに追加。OSGiでは、このバンドルがアクティベートされた際にこのクラスの start() メソッドが呼び出される。これはバンドルの MANIFEST.MF ファイルに指定する。
  5. 元の ClassPathLibraryLoader.java ファイルを簡素化。現時点ではLinuxにのみ対応。
  6. これはMavenベースのプロジェクトなので、ビルド時に上記で紹介したものと類似のMANIFEST.MFファイルを生成するよう、プロジェクトの pom.xml ファイルを編集した(x86版はこんな感じ)。
また、以下は関連するNetBeansプロジェクトです。上記4個のバンドルをビルドする際に使用しました。
このテンプレートを拡張しこれら以外のアーキテクチャ用のOSGiバンドルを含めたい場合、上記プロジェクトのうち一つを使って作業を始め、複製し、新しい環境のための適切な変更を施すことができます。新プラットフォーム用のネイティブのjavahidapiコンポーネントが使えない場合には、hidapiのソースをダウンロードしてビルドし、プロジェクトに含める必要があるでしょう。
signal11/hidapi
https://github.com/signal11/hidapi/downloads
この作業に興味がある方は、ここ(原文のコメント)に成果をお知らせ頂けると幸甚です。

[Java] Project Jigsaw: Modular run-time images

原文はこちら。
http://mreinhold.org/blog/jigsaw-modular-images

以前投稿したように、Project Jigsawがいくつかのステップを踏んでJDK 9に組み入れられています。
Project Jigsaw: Phase Two
http://mreinhold.org/blog/jigsaw-phase-two
Project Jigsaw
http://openjdk.java.net/projects/jigsaw/
JDK 9
http://openjdk.java.net/projects/jdk9/
JEP 200ではJDKのモジュラー構造を定義し、JEP 201ではJDKのソースコードをモジュラー型に再編成し、そしてJEP 220ではモジュールをサポートするようにJDKおよびJREランタイムイメージを再構成します。実際のモジュールシステムはJSR 376(現在作業中)で定義し、対応するJEP(まだ発行されていません)によって実装される予定です。
JEP 200: The Modular JDK
http://openjdk.java.net/jeps/200
JEP 201: Modular Source Code
http://openjdk.java.net/jeps/201
JEP 220: Modular Run-Time Images
http://openjdk.java.net/jeps/220
Java Platform Module System JSR (376)
http://openjdk.java.net/projects/jigsaw/spec/
ソースコードの再編成(JEP 201)は今年の8月に実施しました。このステップは計画的なものであって、開発者やエンドユーザーには影響はありませんでした。モジュラーランタイムイメージ(JEP 220)に対するほとんどの変更が先週後半に統合され、JDK 9早期アクセス版ビルド41でご利用頂けるようになっています。
JDK™ 9 Early Access Releases
9 Build b41
https://jdk9.java.net/download/
このステップはソースコードの再編成とは対照的に、開発者やエンドユーザーにとって大きな影響が及ぶことが想定されます。この作業の詳細はJEP(JEP 220)に記載されていますが、以下に主要な点を書き出しておきます。
  • JREとJDKイメージには現在、理想的な構造が存在します。以前はJDKイメージはJREをjreサブディレクトリに埋め込んでいましたが、現在はJDKイメージは、はからずも開発ツールや以前からJDKにあったその他のアイテムの完全なセットを含むシンプルなランタイムイメージです。
  • ユーザーが編集可能な構成ファイルは以前libディレクトリにありましたが、これは今後は新たなconfディレクトリにうつります。libディレクトリに残るファイルはランタイムシステムのプライベートな実装の詳細であり、開いたり、変更したりするべきではありません。
  • エンドースド・オーバーライド機能(Endorsed Standards Override Mechanism)は削除されました。
    Java Endorsed Standards Override Mechanism
    http://docs.oracle.com/javase/8/docs/technotes/guides/standards/index.html
    この機能を利用しているアプリケーションは、java.endorsed.dirsシステムプロパティを設定するか、もしくはjarファイルをJREのlib/endorsedディレクトリに配置しなければ動作しません。同様の機能をJDK 9の後期でupgradable modulesとして提供する予定にしています。
    Upgradeable modules
    http://openjdk.java.net/projects/jigsaw/goals-reqs/03#upgradeable-modules
  • 拡張機能メカニズム(extension mechanism)は削除されました。
    The Extension Mechanism
    http://docs.oracle.com/javase/8/docs/technotes/guides/extensions/index.html
    この機能を使っているアプリケーションは、java.ext.dirsシステムプロパティを設定するか、もしくは以前拡張としてインストールしたjarファイルをJREのlib/extディレクトリに配置しなければ動作しません。ほとんどの場合、jarファイルは拡張として以前インストールされているので、それらをクラスパスの前に単に結構です。
  • rt.jartools.jardt.jarという内部ファイルは削除されました。これらのファイルの中身は現在より効率良い形式でlibディレクトリのimplementation-privateファイルに格納されています。以前tools.jardt.jarに入っていたクラスやリソースファイルは、JDKイメージにブートストラップ・クラスローダやアプリケーション・クラスローダを使うと、現在もなお確認することができます。
  • 新しい、組み込みNIOファイルシステムプロバイダを使って、ランタイムイメージに格納されているクラスやリソースファイルにアクセスすることができます。以前rt.jarやその他の内部jarファイルを読んでいたツールは直接このファイルシステムを使うようにアップデートすべきです。
これらの変更の結果、アプリケーション、特にJDKの内部構造に依拠しているIDEやその他の開発ツールが壊れる可能性があることを認識していますが、パフォーマンスやセキュリティ、メンテナンス性の向上を実現するこうした変更がより大きな価値を生み出すと考えています。既に主要なIDEのメンテナンス担当者に対し、こうした変更があること、必要に応じて支援する準備が整っていることを伝えました。
既存のアプリケーションをJDK 9 build 41以後で実行したときに障害が発生し、それがこの再編成によるもので、JEP 220にや上記の変更内容にあるものが原因でない、と考える場合には、是非jigsaw-devメーリングリストへ知らせる(まだ購読していない場合には、まず購読してください)か、bugs.java.comからバグレポートを上げてください。どうぞよろしくお願いいたします。
jigsaw-dev -- Technical discussion about Project Jigsaw
http://mail.openjdk.java.net/mailman/listinfo/jigsaw-dev
Java Bug Database
http://bugs.java.com/

[Database] Parallel Execution Fundamentals White Paper

原文はこちら。
https://blogs.oracle.com/datawarehousing/entry/parallel_execution_fundamentals_white_paper

Parallel Execution(多くの人にはParallel Queryとして知られているものです)のプロダクトマネージャとしての最初の投稿で、Oracle Databaseにおけるパラレル実行の基本原理に関する新しいホワイトペーパーをお知らせしたいと思います。以下のリンクよりダウンロードいただけます。
Parallel Execution with Oracle Database 12c Fundamentals
http://www.oracle.com/technetwork/database/bi-datawarehousing/twp-parallel-execution-fundamentals-133639.pdf
Database Resource Managerを利用し、パラレル実行でコンカレントワークロードを管理する方法をまとめたホワイトペーパーも現在用意していますのでしばらくお待ちください。まもなく発行の予定です。

ホワイトペーパーに対するコメント、質問やフィードバック、Oracle Databaseにおけるパラレル実行に関する一般的な質問などは、yasin.baskan at oracle.comにおよせください。以下のコメントセクションを使用していただいても結構です。

[Java] The Java 7 EE Tutorial - free eBook!

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

Java EE 7のドキュメントページが見やすいわかりやすいレイアウトに変更されました。
Java Platform, Enterprise Edition (Java EE) 7
http://docs.oracle.com/javaee/7/
これまでよりもJava EE APIやJava EE SDKの各ドキュメント、Java EEチュートリアルをご覧いただきやすくなったはずです。
そのJava EEチュートリアルという有用なリソースが、しかも無料で利用できる、というのはいつか役に立つことでしょう。
Java Platform, Enterprise Edition: The Java EE Tutorial
https://docs.oracle.com/javaee/7/tutorial/index.html
Java EEチュートリアルは見逃されがちですが、貴重なものの一つです。チュートリアルはJava EE 7を取り扱っているので、Java EEを学習したい人たちだけでなく、既にJava EEを熟知されている方にとっても貴重なコンテンツです。しかも、JCAといったJava EEプラットフォームでもあまり知られていない部分も取り扱っています。
Java EE 7入門者向けには、Java EEプラットフォームのわかりやすい入門編があります。
Java Platform, Enterprise Edition: Your First Cup: An Introduction to the Java EE Platform
https://docs.oracle.com/javaee/7/firstcup/index.html
このJava EE 7チュートリアルは無料でご利用いただけ、オンライン版とPDF版があります。さらに、Java EEチュートリアルはePub、Mobi形式でもご利用いただけます(ヒント:オンライン版の右上部をチェックしてください)ので、タブレット、iBook、Kindleなどのお気に入りのeBookリーダーにダウンロードし、ご覧頂けます。オンライン版の右上部をチェックするだけです。もう一度言います。こうしたすばらしいリソースが無料なんです!
最後に、電子書籍はちょっと、という方には、有料ですが、書籍版としてもJava EE 7チュートリアルを入手いただけます。以下はAmazonの例です。
Amazon (US)
http://www.amazon.com/Java-EE-Tutorial-5th/dp/0321994922/
Amazon (JP)
http://www.amazon.co.jp/Java-EE-Tutorial-5th/dp/0321994922/

[Java, Security] JSR 375: Java EE Security API

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

Java EEが長い間エンタープライズ・アプリケーションを安全に開発、実行のために使われてきました。明らかに、Java EEおよびそのコンテナはグローバルセキュリティ方程式の一部に過ぎません。Java EE層に注目すると、セキュリティ機能の一部が仕様に取り込まれていることがわかります。それに対し、他のセキュリティ機能はプロプライエタリで異なるJava EE実装に固有のものです。いくつかのセキュリティ機能は、外部アドオン(例えばサードパーティのライブラリ)でもあります。セキュリティは、自己完結するものではなく、異なるコンポーネント間の相互作用を要求することがよくあります(例えばJava EE Application ServerはLDAPサーバーと対話する必要があります)。オンプレミスでのデプロイからクラウドベースのデプロイに移行する際には、状況も変わります。最終的には、セキュリティに関しては移植性がシンプルになることはありません。

Java EEが意味のある存在でいるためには進化が必要です。 Java EE 8コミュニティサーベイからのフィードバックを見れば、明らかにセキュリティは改善されるべき領域です。
Final Results from our Java EE 8 Community Survey
http://glassfish.org/survey
そして、それこそがつい先頃レビューのためにJCPに提出されたJSR 375(Java EE Security API)のゴールです。
The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 375
https://jcp.org/en/jsr/detail?id=375
JSR 375は、Java EE8に含められる予定ですが、その最初のスコープは、コミュニティ・サーベイのフィードバック、Java EE仕様に対する課題やRFE(機能拡張依頼)、EG(Expert Group)メンバーによる長時間にわたるやりとり、コンファレンスでの非公式の議論などに基づきます。

このJSR 375では、達成目標の詳細を提供しています。手短に言うと、JSR 375のゴールは、様々な領域のプラットフォームにわたり、セキュリティAPIをシンプルにし、標準化、近代化することです。
  • User Management(ユーザー管理)「ユーザー・サービス」APIを標準化し、アプリケーションが(たとえばユーザーの作成などの)ユーザー管理操作を実現できるようにします。この「ユーザー・サービス」は、(LDAPやデータベースなどの)物理ユーザーストアを抽象化したユーザーソースを信頼します。ユーザーサービスはデプロイ要件に合うよう構成可能になる予定です。

  • Password Aliasing(パスワードエイリアス)(セキュアな)パスワード・リポジトリに保存されたパスワードに(別名)を指すための構文を標準化します。このパスワード・リポジトリは、その後アプリケーションにバンドルされることがあります(例えば、クラウドへのデプロイメントを考えてください)。
  • Role Mapping(ロール・マッピング)「ロール・サービス」APIを定義、標準化し、アプリケーションが(例えば、グループロールを照会するような)様々なロール・マッピング操作を実施できるようにします。これは、環境のニーズに基づいて適応可能な、異なるロールマッパー(例えばLDAPやファイル)を介して行われます。

  • Authorization(認可)CDIインターセプタ・アノテーションを定義し、メソッドレベルでアプリケーションドメインのルールを事前に決定するために使います。
  • Authentication(認証)認証まわりでいくつか機能強化が予定されています(Webアプリケーションが様々な認証方法を提供できるようにする、とか)
これは初期スコープの概要に過ぎません。また、Expert Groupは、これらの新しいAPIを簡単に利用するために、一部のJava EEの直交テクノロジ(Java EE orthogonal technology、例えばCDIイベントや式言語など)をどうやって活用できるか、を調べる必要もあります。このJSRのについてもっと知りたいという方は、JSR 375をお読みください。また、JavaOneでLinda Demichielが話したJava EE Overviewの動画をご覧いただくこともできます。セッションの中で、そうした考えに触れています。
JavaOne Replay: 'Java EE 8 Overview' by Linda DeMichiel
https://blogs.oracle.com/theaquarium/entry/javaone_replay_java_ee_8
JSR 375はJCPレビュー期間に入りました。その後の次のステップは承認投票期間になるはずです。
JCP 2: Process Document
2. INITIATE A NEW OR REVISED SPECIFICATION
2.2 JSR REVIEW
https://jcp.org/en/procedures/jcp2#2.2
そして、この投票を通過すれば、Expert Groupを形成し、実際の作業(ならびに議論)がスタートする予定です。そんなわけで、現在我々はちょうどこの取り組みの端緒にいますが、Java EE 8の様々な部分の準備を整えるさまを見ることができうれしいです。

[Linux, Virtualization] Oracle Linux Docker Base Image on Ubuntu 14.10

原文はこちら。
https://blogs.oracle.com/brunoborges/entry/oracle_linux_docker_base_image

Oracle Linuxチームががんばってくれたおかげで、Dockerのサポートが提供されるようになりました。8月からOracle Linux YUMリポジトリでDockerバイナリがリリースされていることを知って喜んでらっしゃることと思います。
Ahoy! Cast off with Docker on Oracle Linux
https://blogs.oracle.com/linux/entry/ahoy_cast_off_with_docker
そして先頃、Oracle Linux 6、7のOracle Linux Docker Base Imageがリリースされました。
Oracle Linux images for Docker released
https://blogs.oracle.com/linux/entry/oracle_linux_images_for_docker
Oracle Linux(OL6とOL7)およびDockerのドキュメントにも説明が入っています。
Oracle® Linux Administrator's Solutions Guide for Release 6
Chapter 10 Docker
https://docs.oracle.com/cd/E37670_01/E37355/html/ol_docker.html
Oracle® Linux Administrator's Guide for Release 7
Chapter 26 Docker
https://docs.oracle.com/cd/E52668_01/E54669/html/ol7-docker.html
DockerとOracle Linuxに関しては、以下のページからどうぞ。
Docker Images from Oracle
http://public-yum.oracle.com/docker-images/
では、なぜこれが重要なのか、とおたずねになるかもしれません。そうですね、ある時点でFusion Middleware製品チームが自身の製品、たとえばWebLogic ServerをDocker上でも動作保証をするよう進む場合、それは明らかに必要とされるステップだからです。
Docker, Java EE 7, and Maven with WebLogic 12.1.3
https://blogs.oracle.com/brunoborges/entry/docker_java_ee_7_and
それゆえ、まだ動作保証もサポートも対象外ではあるけれども、Oracle製品をDocker上で今すぐ使いたい場合、Oracle Linux Base Imageを使ってください。
開発者として、自身のラップトップでUbuntu Linuxを使いたいので、たとえばOL7 Docker Base Imageを使うにあたり、以下のすぐに終わる簡単な手順を実施しなければなりませんでした。
  1. Ubuntu環境にDockerがインストール済みであることを確認
    Ubuntu - Docker Documentation
    https://docs.docker.com/installation/ubuntulinux/
  2. OL7 Base Imageをダウンロード
    http://public-yum.oracle.com/docker-images/OracleLinux/OL7/
  3. まずxzを使ってファイルを展開する。Dockerがxzバイナリを見つけられないという問題が発生するかもしれません。
  4. $ sudo docker load -i oraclelinux-7.0.tar.xz
    2014/11/28 18:36:08 Error: Untar exit status 1 exec: "xz": executable file not found in $PATH
    
    $ unxz oraclelinux-7.0.tar.xz
  5. 展開終了後(tar ballのまま)、rootユーザーとして、ローカルDockerリポジトリにイメージを読み込む
  6. $ sudo docker load -i oraclelinux-7.0.tar
  7. インストールの確認
  8. $ sudo docker images
    REPOSITORY     TAG  IMAGE ID       CREATED      VIRTUAL SIZE
    oraclelinux    7.0  5f1be1559ccf   2 weeks ago    265.2 MB
  9. このイメージをベースにしたコンテナを作成し、実行
  10. $ sudo docker run -t -i oraclelinux:7.0 bash
これでできあがりです。DockerとOracle Linuxで遊んでください。そしてFusion Middleware製品で何か素敵なものを作成される場合には是非お知らせください。

[UI, UX] Back to Basics. Helping You Phrase that Alta UI versus UX Question

原文はこちら。
https://blogs.oracle.com/userassistance/entry/ui_versus_ux_back_to

UI(User Interface)とUX(User Experience)の違いについて質問をいただくことが多いのですが、その違いは以下の動画で確認いただけます。

是非ご覧になってください。UIのルック&フィール、スキニング、Oracle Applications CloudでシンプルになったUIのテーマを変更するための設定の利用や、Oracle Alta UIについて正しく質問を構成するために、その違いを理解することが特に重要です。
Simplified User Interface in Oracle Fusion Applications Fronts Oracle Cloud Offerings
http://www.oracle.com/webfolder/ux/applications/successStories/130724-FUSE.html
Oracle Alta UI - An all new modern design system
http://www.oracle.com/webfolder/ux/middleware/alta/index.html
Difference between UI and UX. UX is more than flat icons and a new CSS
UIとUXの違いは、大人気のワイヤーフレームに、視覚的なデザインを含めていない理由でもあります。

[Database] New Slide Decks Uploaded: Upgrade/Migrate/Consolidate to Oracle 12c and Parallel Multitenant Upgrade Internals

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

いくつかのアップデートとスライドのアップロードをお知らせする時間です。今週あたまにマドリードでお会いした皆様にサイド感謝いたします。非常にすばらしい日で、楽しむことが出来ました。皆様がアップグレードや移行に成功することをお祈りしています。

さて、どこが新しくなったのか、と言いますと……。
  • "Oracle Database 12c "Upgrade, Migrate & Consilidate" という、非常にボリュームのあるスライドを新しくしました。なんと530枚。DB TECH SHOWCASE2014 TOKYOでのすばらしい講演でたくさんのヒントをくれたTom Kyteに感謝します。コンテンツを1日のワークショップに落とし込むのは今もって難しいのですが、後で数枚のスライドを追加しなくてはなりませんでした。
    いつものように、スライドの最後に変更ログがありますので、変更・追加した内容はそこを参照してください。
  • Oracle Multitenantのアップグレードの仕組みに関する、Joe ErredeによるOracle OpenWorldでの講演を拡張し新しくしました。パラレルアップグレードやオプション、catctl.plのチューニングに関する詳細がもれなく盛り込まれています。スライドのベースを作ってくれたJoeに感謝します。多くのスライドを再活用し、いくつかスライドを追加しました。ニュルンベルクでのDOAG Conferenceに参加いただいたすばらしい聴衆の皆様にも感謝しております。
  • ヒッチハイク・ガイドをアップデートしました。特にニュルンベルクでのDOAG Conferenceに参加されたたくさんの聴衆の皆様のために準備しました(本当に感動しました)

[Mobile, FMW] Oracle leaps ahead of SAP and IBM in MADP

原文はこちら。
https://blogs.oracle.com/mobile/entry/oracle_leaps_ahead_of_sap

先頃、Gigaom Researchがクロスプラットフォーム向けモバイル開発の状況を調査しました。調査対象のベンダーにはOracle、SAP、IBMなどの企業が含まれており、クロスプラットフォーム向けモバイル開発ソリューションを判断する基準を、以下の5個のDisruption Vectorsに分類しました。それぞれの基準と重み付けは以下の通りです。
  • Talent crunch (33%)
    専門のスキルセットを持つモバイル開発者の不足
  • Iteration Acceleration (22%)
    アプリケーション・リリースサイクルの加速
  • Fragmentation (20%)
    数多くのMADP(Mobile Application Development Platform:モバイルアプリケーション開発プラットフォーム)のコンポーネント
  • Trend Spotting (15%)
    ユーザやアプリケーションの傾向を早期に識別するための、responsiveな予測分析の必要性
  • Destabilization (10%)
    セキュリティ侵害の可能性の増加
Disruption Vectors
こうしたdisruption vector全体にわたって、Oracleは全体で最高得点を獲得し、talent crunchに関して明確なリーダーでもありました。これはOracleのMobile Application Framework(MAF)が、プラットフォーム固有のスキルが不要という点で最高だったことを意味しています。
以下は調査レポートでのMAFの評価を抜粋したものです。
  • “Oracle’s MAF emphasizes a multi-channel, pluggable approach rather than a monolithic stack.”
    (OracleのMAFはモノリシックなスタックではなくマルチチャネル、プラガブルアプローチを強調しています)
  • “MAF has well planned, mature, and use case-driven security features, mainly via the inclusion of the Oracle Mobile Security Suite (OMSS).”
    (MAFには、よく検討され、成熟したユースケース主導のセキュリティ機能を有しています。これらは主としてOracle Mobile Security Suite(OMSS)に含まれています)
  • “MAF is just the mobile piece of Oracle’s larger “SOA Suite” offering, which includes analytics, orchestration, service virtualization, and connectivity to cloud as well as on-prem.”(MAFはOracleの大きな「SOA Suite」のモバイル向けサブセットであり、分析、オーケストレーション、サービス仮想化、クラウドおよびオンプレミスとの接続性を備えています)
調査レポートの全文は以下のリンクからどうぞ。
Gigacom Research - Sector Roadmap: cross-platform mobile development
http://www.oracle.com/us/corporate/analystreports/gigaom-sector-roadmap-2355064.pdf

[SOA/BPM, FMW] Mac OS X上で動作するJDeveloper 12c (12.1.3)でSOA/BPM Suiteのヒューマンタスクを編集しようとすると例外が発生する

Macでも、JDeveloper 12.1.3を使い、Oracle SOA/BPM Suite 12cのコンポジットを開発できますが、ヒューマンタスクを編集しようとすると、NullPointerExceptionが発生するという問題がありました。
この不具合に関するサポート文書、ならびに修正パッチがMy Oracle Supportから提供されています。
Cannot Open BPM HumanTasks in JDeveloper on MAC O/S, 'NullPointerException' (ドキュメントID 1944727.1)
https://support.oracle.com/rs?type=doc&id=1944727.1
パッチ番号は19265102です。
近いうちに、JDeveloperのビルドが更新され、OTNからダウンロードしたJDeveloperでも問題なく編集できるようになるはずですが、当面はサポート契約いただいているお客様に対してのみ提供、ということになっておりますので、ご容赦ください。

[BPM] BPM Set Instance Title

原文はこちら。
https://blogs.oracle.com/ArdaEralp/entry/bpm_set_instance_title

Step 1: BPMアプリケーションを作成します。


Step 2: スクリプト・アクティビティを追加します(名前はこの例ではSetInstanceTitleとしてますが、何でもOKです)。



Step 3: XPath関数ora:setCompositeInstanceTitle()を使って、タイトルを設定します。



Step 4: Enterprise Manager Fusion Middleware Controlから確認しましょう。

[Linux] Oracle Linux images for Docker released

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

Oracle LinuxにおけるDockerのアップデートで、Oracle Linux 6およびOracle Linux 7の公式のDockerイメージをリリースしたことを発表でき、Oracle Linuxチームはうれしく思っております。このアップデートを使うと、お客様はOracle Linux上のDockerコンテナを作成、管理、展開するために必要なツールにアクセスすることができるようになります。
Oracle Linux Basicサポート・サブスクリプションおよびPremierサポート・サブスクリプションの一部でDocker Engineおよび公式Oracle Linuxイメージは完全にサポートされます。Oracle LinuxのDockerに対するサポートの範囲はMy Oracle SupportのDocument ID 1921163.1に記載されています。
Support for Docker Running on Oracle Linux (Doc ID 1921163.1)
https://support.oracle.com/rs?type=doc&id=1921163.1
Dockerは開発者やシステム管理者にとってアプリケーションをビルド、展開、実行、および配布するためのオープン・プラットフォームです。
Docker
https://www.docker.com
Docker Engineという、可搬性のある軽量な実行およびパッケージングツールであるDocker Engineと、アプリケーションの共有やワークフローの自動化のためのクラウドサービスであるDocker Hubから構成されています。Dockerを使うと、アプリケーションを素早くコンポーネントから組み上げることができ、開発、QA、本番環境間でおこる不具合を排除できます。結果として、ITがより速くアプリケーションを展開でき、同じアプリケーションを、ラップトップでも、データセンターのVMでも、クラウドでも変更せずに実行することができます。
Oracle LinuxでのDockerについて、以下のドキュメントで詳細を確認いただけます。
Oracle® Linux Administrator's Solutions Guide for Release 6
Docker
https://docs.oracle.com/cd/E37670_01/E37355/html/ol_docker.html
Oracle® Linux Administrator's Guide for Release 7
Docker
https://docs.oracle.com/cd/E52668_01/E54669/html/ol7-docker.html
Oracle Linux用Dockerは、Unbreakable Linux NetworkやOracleのPublic Yum ServerのOracle Linux 6およびOracle Linux 7のAdd-on Channelからインストールすることができます。
Unbreakable Linux Network
https://linux.oracle.com
Oracle Public Yum Server
http://public-yum.oracle.com
OracleのPublic Yum Serverで利用可能なDockerイメージをご覧頂けます。
Docker Images from Oracle
http://public-yum.oracle.com/docker-images/

Docker and Docker logo are trademarks or registered trademarks of Docker, Inc. in the United States and/or other countries. Docker, Inc. and other parties may also have trademark rights in other terms used herein.

[Database] Sleeping Beauties - Upgrade to 11.2.0.4 can be slow

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

USのお客様から先週LinkedInを通じて連絡があり、次の質問をいただきました。
"Is it expected that my patch set upgrade from Oracle 11.2.0.3 to Oracle 11.2.0.4 takes over 3 hours?"
(Oracle 11.2.0.3から11.2.0.4へのアップグレードのためのパッチセットって3時間以上かかるもの?)
当然ながら、Noです。そんなことはありません。
以下はutlu112s.sqlを使ってアップグレード後に収集したアップグレード統計情報です。
SQL> @?/rdbms/admin/utlu112s.sql ; .
Oracle Database 11.2 Post-Upgrade Status Tool 10-31-2014 10:05:29
Component Current Version Elapsed Time
Name Status Number HH:MM:SS
Oracle Server
. VALID 11.2.0.4.0 02:46:19
JServer JAVA Virtual Machine
. VALID 11.2.0.4.0 00:08:34
[..]
Final Actions
. 00:00:00
Total Upgrade Time: 03:06:47

いやいや、全くもって想定外です。ってわけで、問題のアップグレード・スクリプトc1102000.sql内の上記ステートメントを見つけ、根本的な原因を見極めることを試みました。
194 -- wri$_optstat_histhead_history2.
195 execute immediate
196 q'#create unique index i_wri$_optstat_hh_obj_icol_st on
197 wri$_optstat_histhead_history (obj#, intcol#, savtime, colname)
198 tablespace sysaux #';
199
200 execute immediate
201 q'#create index i_wri$_optstat_hh_st on
202 wri$_optstat_histhead_history (savtime)
203 tablespace sysaux #';
204 end;
205 /
この箇所は、ヒストグラム表の索引を再作成しています。既定の統計情報保持期間が31日なので、お客様の環境には非常に大量の統計情報があります。
索引の再構築が(並列実行せず、NOLOGGING句がないため)あまり効率的に行われていないのは明らかです。こうしたことが発生する可能性があり、この事象が何ら問題ないことも時としてあります。しかし、今回の場合、索引の再構築のためだけに2時間以上を要しました。
幸いにも、同僚のCindyが、こうした事象に対応するすばらしい人材です。私たちのチームへ問い合わせをもらった後、私はこの件でバグ番号を取り、コードの修正をすでにチェックイン(現在レビュー中)したことを返信しました。
bug19855835:
Upgrade from 11.2.0.2 to 11.2.0.4 is slow
追伸
この問題に目を向けさせてくれたTanの功績です。ご不便をおかけして申し訳ありません。

[Database, Support] Premier Support for Oracle 11.2 will end soon ... Upgrade to Oracle Database 12c now!

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

ほとんどのお客様やパートナーの方々はすでにご存じですが、まだこの頃Oracle Database 10gR2から11gR2 (11.2.0.4) へのアップグレードに関するメールを受け取りました。まぁ、Premier Support終了まで3ヶ月を切ったリリースにリソースやお金を投入する理由があるかもしれないので、そういう人と議論するのはやめました。

ちょっと説明しておきましょう

  • Premier Supportが終了すると、Extended Supportをご契約いただかない限り、Oracleは新しく発見された問題に対する修正を提供しません。とはいえ、当該リリースの利用を止めるまでSustaining Supportを受けることはできます。Premier SupportExtended Support、そしてSustaining Supportの説明については、Lifetime Support Policyをご覧下さい。
    Lifetime Support Policy
    http://www.oracle.com/us/support/lifetime-support/index.html
  • Oracle Database 11.2.0.4
    Oracle Database 11.2のTerminal(最終) Patch Setであり、Oracleは対象となるサポート契約をお持ちの全てのお客様に対し、初年度のExtended Support開始を一時的に延期します(追加コストやアクションは不要です)。Oracle Database 11.2のPremier Support終了は2015年1月31日で変わりませんが、Oracle Database 11.2.0.4の初年度のExtended Supportを追加コスト無しで入手できます。Oracle Database 11.2.0.4のExtended Supportは2018年1月31日まで最大2年間延長することができますが、その場合は、通常通りの追加費用が必要です。
    この情報は、MOS Note742060.1に記載されています。
    Release Schedule of Current Database Releases (Doc ID 742060.1)
    https://support.oracle.com/rs?type=doc&id=742060.1
  • Oracle Database 11.2.0.3
    OracleはExtended Supportも一時的に延期していますが、Oracle Database 11.2.0.3のExtended Supportは2015年8月27日に終了します。そのため、その日以後、バグの修正(PSU、SPU、BPを含む)はご利用頂けません。 Oracle Database 11.2.0.3のExtended Supportの延長はできません。
  • Oracle Database 11.2.0.2およびOracle Database 11.2.0.1
    Extended Supportの提供はありません。
Oracle Database 12cへのアップグレード、移行、統合にご興味があれば、最新版のスライド(2014年10月31日改訂)をダウンロードセンターから入手してください。
Upgrade, Migrate & Consolidate to Oracle Database 12c
https://apex.oracle.com/pls/apex/f?p=202202:2:::::P2_SUCHWORT:migrate12c

[SOA, Mobile] Oracle Announces Oracle API Catalog to Simplify API Management

原文はこちら。
https://blogs.oracle.com/SOA/entry/oracle_announces_oracle_api_catalog

Oracleは新しい製品であるAPI Catalogを加え、自身のAPI管理ソリューションを拡張しました。このツールは、お客様はOracle SOA SuiteやAPIサービスやその他のソースの公開を簡単にするものです。Oracle API CatalogはOracleの幅広いAPI管理ソリューション・ポートフォリオの一部であり、またlOracle Mobile Suiteポートフォリオという、システムのモバイル化を進めるための製品群ともシームレスに統合します。Oracle API CatalogはOracle Fusion Middlewareのサービスを収集し、1クリックで公開したり、評価を投稿したり、種々のアプリケーションでの再利用を管理することができます。OracleのAPI CatalogはSOAPならびにREST/JSONに対応しており、モバイルアプリケーションのサポートも簡単です。

以下は、ベータカスタマであるLG&E and KU Services CompanyのIT Technical LeadであるPeter Osborneによる検証結果の抜粋です。
"The Oracle API Catalog is a straightforward, easy-to-use governance tool for capturing what services exist, what these services do, and how they can be consumed. Within hours of installation, an organization can begin cataloging their SOAP and REST web services, regardless of the underlying service technology. The harvesting functionality provides a jump start on aggregating service details, while minimizing manual data entry and the risk of duplication and error. Finally, the included JDeveloper plug-in completes the lifecycle by providing a mechanism within JDeveloper to easily view and consume documented services."
Oracle API Catalogは、どのようなサービスがあり、何をするもので、どのように利用されているかを収集するための、簡単で使いやすいガバナンス・ツールです。インストール中に、企業や組織はSOAP/REST Webサービスのカタログ化を進めることができます。実装しているサービステクノロジーの如何は問いません。収集機能(harvesting)により、手作業でのデータ登録が最小限ですむため、登録の重複、エラー登録も最小化でき、サービス詳細の集約を迅速に進めることができます。最後に、包含されているJDeveloperのプラグインにより、JDeveloper内で簡単にドキュメント化されたサービスの閲覧、利用できるので、開発のライフサイクルを完結できます。
Oracle API Catalogの詳細情報は、製品ページやデータシートをご覧下さい。
Oracle API Catalog
http://www.oracle.com/us/products/middleware/soa/api-catalog/overview/index.html
データシート
http://www.oracle.com/technetwork/middleware/id-mgmt/downloads/oracle-api-catalog-ds-2347229.pdf?ssSourceSiteId=ocomen

[Java] JMC and JFR Documentation

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

ご存知ない場合のために、Java Mission Control(以下JMC)とJava Flight Recorder(以下JFR)のユーザーガイドが移動しました。JDK 8u20現在、JMCとJFRユーザーガイドのバージョン5.4、5.3へのリンクは、java ComponentsのJMCタブにあります。

Java Components > Java Mission Control (JMC) and Java Flight Recorder (JFR)
http://docs.oracle.com/javacomponents/jmc.htm
以前の場所からリダイレクトされますが、ブックマークのアップデートをお願いします。

[FMW, JRockit] Final Release of JRockit for Java SE 5 in January

原文はこちら。
https://blogs.oracle.com/jrockit/entry/final_release_of_jrockit_for

Java SE 5が登場してかなり時間が経ちました。実際、最初のリリース(2004年)から先月で10年を超えました。Java SE 5版JRockitもまた同じぐらいの期間存在してきました。最初のJava SE 5版JRockit(コードネームDragon)は2004年12月にリリースされました。
JRockit 5.0 Available for Download
http://www.theserverside.com/news/thread.tss?thread_id=30616 
Java SE 5は、今日の我々が知っており、使っている、最も重要な言語機能(generics、 annotations、autoboxing​​、列挙型、可変引数など)の多くが導入された画期的なリリースでした。

全てのものに終わりが来るのはJava SE 5も例外ではありません。JRockitに関しては、Java SE 5のExtended Supportフェーズが来年3月で終了する予定です。これはつまり、2015年1月が最後のJava SE 5 JRockit CPU(Critical Patch Update)リリースになる、ということです。
Critical Patch Updates, Security Alerts and Third Party Bulletin
http://www.oracle.com/technetwork/topics/security/alerts-086861.html
WebLogic Server 10.0のような、Java SE 5を必要とするOracle製品に対する有効なExtended Support契約をお持ちのお客様は、2015年3月末までバグ登録やOne-offビルドの受領をすることができますが、Java SE 5版JRockit(JRockit R27、R28)は2015年4月よりSustaining Supportフェーズに入るため、新規リリースや修正を出すことはありません。

簡単にお伝えするとすれば、Java SE 5版JRockitのExtended SupportフェーズはHotSpotベースのJava SE 5の数ヶ月前に終了します。最後のSun/Oracle(HotSpotベース)のJava SE 5のCPUを4月にリリースする予定していますが、2015年4月のCPUでは、対応するJava SE 5版JRockitのCPUリリースはありません。

もちろん、これはJRockitそのものの終了を意味していません。Java SE 6対応のJRockitはExtended Supportフェーズの終了までに数年残っています。JRockitを使い続ける必要があるお客様は最新のJava SE 6版JRockitにアップグレードすることができます。Java SE 6版JRockit(R28のみ)のバグやセキュリティ問題の修正は、Sustaining Supportフェーズに到達するまで引き続き実施していきます。

まとめ
  • 2015年1月のCPUの後、Java SE 5版JRockit (R27もしくはR28)はリリースされない。
  • Java SE 6版JRockitのExtended Supportフェーズの終了(現時点では2018年12月を予定)までは、Java SE 6版JRockit(R28のみ)のCPUリリースやバグ修正は引き続き実施する。
  • Java SE 5版JRockitにデプロイされているお客様に対し、2015年3月までにより最新のJRockitにアップデートするか、よりよいのは、Oracle JDK 7もしくはJDK 8に移行されることを推奨する。最新のOracle製品は全てJDK 7をサポートしており、Oracle製品全体でJDK 8の動作保証は速いスピードで進んでいる。WebLogic ServerやCoherenceといった主要な製品は既にJDK 8での動作保証が済んでいる。
    WebLogic Server 12.1.3 on JDK 8
    https://blogs.oracle.com/WebLogicServer/entry/weblogic_server_12_1_3
    http://orablogs-jp.blogspot.jp/2014/09/weblogic-server-1213-on-jdk-8.html
詳しくは、Oracleのライフタイム・サポート・ポリシーをご覧下さい。詳細なサポート期間やポリシーについて記載があります。
Oracle Lifetime Support Policies
http://www.oracle.com/us/support/lifetime-support/index.html

[Linux] Announcing General Availability of Oracle Linux 6.6

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

Oracle Linux 6 Update 6という、Oracle Linux 6の6回目のアップデートのリリースを発表できうれしく思っています。個々のRPMパッケージはパブリックyumリポジトリにございます。ISOインストールイメージはまもなくOracle Software Delivery Cloudからダウンロードできるようになる予定です。
Public Yum Repository for Oracle Linux 6.6
http://public-yum.oracle.com/repo/OracleLinux/OL6/6/
Oracle Software Delivery Cloud - Oracle Linux and Oracle VM
http://edelivery.oracle.com/linux
Oracle Linux 6 Update 6には、以下のカーネルパッケージが同梱されています。
  • x86-64向け
    Unbreakable Enterprise Kernel (UEK) Release 3 (kernel-uek-3.8.13-44.1.1.el6uek)
  • i386向け
    Unbreakable Enterprise Kernel (UEK) Release 2 (kernel-uek-2.6.39-400.215.10.el6uek)
  • x86-64、i386向けRed Hat互換カーネル(kernel-2.6.32-504.el6)
デフォルトでは、特定のアーキテクチャ(i386、x86-64)に対し、UEKとRed Hat互換カーネルの両方がインストールされ、システムはUEKを起動します。このリリースに含まれる注目に値する機能をご紹介しましょう。
  • UEK Release 3と完全に統合されたDTraceのサポート
  • UEK Release 3でのLinuxコンテナ (LXC) のフルサポート
  • UEK(Release 2もしくはRelease 3)利用時のBtrfsのフルサポート
  • Active Directoryに対する強化されたSSSDのサポート
  • Hyper-V用の新しいデーモン(hypervfcopydhypervkvpdhypervvssd)。これらは、Microsoft WindowsホストのHyper-Vの下で動作しているOracle Linuxゲスト用に、Hyper-V ファイルコピー、キーバリュー・ペア(KVP)、ボリュームシャドウ・コピー・サービス(VSS)のデーモンを提供します。
これらの機能の詳細、これら以外の新機能や、Oracle Linux 6.6での変更内容については、以下のリリースノートをごらんください。
Oracle® Linux Release Notes for Release 6 Update 6
http://docs.oracle.com/cd/E37670_01/E57668/html/index.html
Oracle Linuxはダウンロードも、利用も、配布も無料で、アップデートやエラータも無料でご利用いただけます。
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 Kspliceを利用したゼロダウンタイムカーネルアップデートも利用できますし、Oracle OpenStack for Oracle Linuxのサポートも既に手にしていらっしゃいます。
Oracle OpenStack for Oracle Linux Now Generally Available
http://www.oracle.com/us/corporate/press/2298602.
Oracle Linuxに関する詳細は、Oracle Linuxの製品ページをご覧下さい。
Oracle Linux製品ページ
https://www.oracle.com/linux (US)
http://www.oracle.com/jp/technologies/linux/overview/index.html (JP)

[Java] New book: RESTful Java Patterns and Best Practices

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

「RESTful Java Patterns and Best Practices」(Bhakti Mehta著)が先ごろ出版されました。この本のすばらしい点の一つに、JAX-RS API 2.0の理論を説明する本ではない、というところがあります。タイトルからわかるように、この本はRESTfulなサービスを、効率的で拡張性高く安全なRESTfulサービスを構築する際に関わってくる、様々なベストプラクティスについて説明しているため、この本は本当にRESTのベストプラクティスに対象を絞っています。そして、JAX-RS 2.0 APIを利用するベストプラクティスやパターンの適用方法を説明しています。
RESTful Java Patterns and Best Practices
https://www.packtpub.com/web-development/restful-java-patterns-and-best-practices
取り上げているベストプラクティスの一部をご紹介しましょう。
  • リソースの設計、公開方法
  • エラー処理
  • APIのバージョン管理
  • テスト
  • セキュリティ
  • キャッシュ
  • 非同期の挙動、など
別の観点で特に気に入っているのは、まだ標準化されていない機能も取り上げている、という点です。SSEやJSON-Pointersなどの機能はJava EE 8で導入される可能性が高いと言及されており、それゆえ、こうした機能がプラットフォームに追加されることが理にかなっている理由を理解する上で、この本は有用な基礎資料となり得るでしょう。

最後に、この本はあまりに多くの詳細情報を詰め込んで、読者がおなかいっぱいにならないようにしています。議論のトピックの各々に対し、技術的な解決策を提示し、説明しています。特定のトピックの詳細を深掘りする必要が生じた場合に備え、追加リソースへのリンクも提示されています。

全体として、この本はRESTfulベースのアプリケーションを設計する人にとっての好著でしょう。
この本の出版を記念して、Packt Publishingは「RESTful Java Patterns and Best Practices」を10部(eBook5部と紙の書籍5部)を抽選でプレゼントします。この抽選に参加するためには、この本に関するコメントを、http://bit.ly/1uUs7QRというURLと、#JavaBhaktiというハッシュタグを付けて、お気に入りのソーシャルメディアに投稿するだけです。Packt Publishingがランダムに10名を抽選します。
是非ご理解頂きたいのは、Oracleはこの抽選に関わっていない、ということです。あくまでも情報をお知らせしているだけにすぎません。抽選に関する質問は、直接Packt Publishingにお尋ね下さい。
How you can contact us(抽選に関するお問い合わせ)
https://www.packtpub.com/books/info/packt/contact-us

[Java] Moving on to Java 8

原文はこちら。
https://blogs.oracle.com/henrik/entry/moving_on_to_java_8

先月、エンドユーザーにとってのJava SE 8へのスムーズな移行に関する取り組みについてエントリを書きました。
Java 8: Not Just For Developers Any More
https://blogs.oracle.com/henrik/entry/java_8_not_just_for
Javaコミュニティが驚くほどのペースでのJava SE 8を採用してくれており、これは我々の期待を上回るものです。例えばオープンソースプロジェクトやWebLogic Serverのような商用製品で新しいプラットフォーム・リリースに対する準備状況を発表しています。
Java SE 8 Adoption - The Big Guns
https://blogs.oracle.com/henrik/entry/java_se_8_adoption_the
WebLogic Server 12.1.3 on JDK 8
https://blogs.oracle.com/WebLogicServer/entry/weblogic_server_12_1_3
Java SE 8 Update 25より、Java SE 8ランタイムはエンドユーザー向けのデフォルトJREとなり、java.comからご利用いただけるようになっています。
Java™ SE Development Kit 8, Update 25 (JDK 8u25) Release Notes
http://www.oracle.com/technetwork/java/javase/8u25-relnotes-2296185.html
java.com
https://java.com/
自動アップデート機能を使ったJava 7からJava 8へのユーザーを移行するプロセスは、2015年第1四半期の間に実施する予定です。

Oracle Java SE Support Roadmapにある通り、2015年4月以後は、OracleはJava SE 7のアップデートをパブリックダウンロードサイトに掲載しない予定です。
Oracle Java SE Support Roadmap
http://www.oracle.com/technetwork/java/eol-135779.html
Java SE 7ダウンロードはOracle Technology Networkからアクセスできますが、開発者やエンドユーザーのみなさまは、Java SE 8への移行を始めることをお勧めします。
Java SE Downloads
http://www.oracle.com/technetwork/java/javase/downloads/index.html
Java SE7やさらに古いバージョンに対する重要なバグ修正、セキュリティ修正、一般的なメンテナンスに対し、引き続きアクセスが必要というお客様は、Oracle Java SEのサポートを通じて、長期的なサポートを得ることができます。
Oracle Java SE Support
http://www.oracle.com/us/technologies/java/standard-edition/support/overview/index.html

[Java, Database] PSU October 2014

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

2014年10月14日に、Oracleは新しいPSU(Patch Set Update)をリリースしました。いつも通り出来るだけ早く皆様がお使いのデータベースに適用されることを強くお勧めします。
データベースの削除やその他のアクションを実施するために必要なJavaに対する修正が含まれています。詳しくは、以下をどうぞ。
  • Eric Mauriceのセキュリティブログ
    October 2014 Critical Patch Update Released
    https://blogs.oracle.com/security/entry/october_2014_critical_patch_update
    "Due to the nature of the fixes required, Oracle development was not able to produce a normal RAC-rolling fix for these issues. To help protect customers until they can apply the Oracle JavaVM component Database PSU, which requires downtime, Oracle produced a script that introduces new controls to prevent new Java classes from being deployed or new calls from being made to existing Java classes, while preserving the ability of the database to execute the existing Java stored procedures that customers may rely on."

    (必要とされる修正の性質ゆえに、Oracleの開発チームは、この問題に対する通常のRACローリング用のパッチを作成することができませんでした。ダウンタイムが必要なOracle JavaVM Component Database PSUを適用できるようになるまでの間、お客様を守るために、お客様が使っている既存のJavaストアドプロシージャを実行できるようにしつつ、新たなJavaクラスがデプロイされたり、既存のJavaクラスの呼び出しをさせないよう、新しいコントロールを導入するスクリプトを作成しました。)
  • Oracle Recommended Patches -- "Oracle JavaVM Component Database PSU" (OJVM PSU) Patches (Doc ID 1929745.1)
    https://support.oracle.com/rs?type=doc&id=1929745.1

[Java] Java ME Documentation Survey 2014

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

Oracle Java MEドキュメンテーションチームは7問の簡単なアンケートを実施しています。このアンケートはどのようなJava MEドキュメントを皆様がお求めで、どうすれば改善できるのか、を知るために実施しています。
アンケートはこちら。
Oracle Java ME Embedded Documentation Survey
https://www.surveymonkey.com/s/javame-docs
Java Embeddedテクノロジーに関心があって、様々なボード用アプリケーションの開発を始めたいと思ってらっしゃるなら、是非アンケートにご協力ください。

[Java] Java SE 8 Update 25 and Java SE 7 Update 71 and 72

原文はこちら。
https://blogs.oracle.com/java/entry/java_se_8_update_25

OracleはJava SE 8 Update 25とJava SE 7 Update 71および72をリリースしました。開発者の方々は最新のJava SE SDKとJREをOracle Technology Networkからダウンロードできます。
Java SE Downloads
http://www.oracle.com/technetwork/java/javase/downloads/index.html

Java SE 8 Update 25

このリリースには、重要なセキュリティの問題の修正が含まれていますので、全てのJava SE 8ユーザーの方々がこのリリースへアップグレードすることをOracleは強く推奨します。リリースノートをご覧頂き、Java SE 8 Update 25をダウンロードしてください。
Java™ SE Development Kit 8, Update 25 (JDK 8u25) Release Notes
http://www.oracle.com/technetwork/java/javase/8u25-relnotes-2296185.html

Java SE 7 Update 71/72 

このリリースには、重要なセキュリティの問題の修正が含まれていますので、全てのJava SE 7ユーザーの方々がこのリリースへアップグレードすることをOracleは強く推奨します。

Java CPU(7u71)とPSU(7u72)リリースの違いについて 

Java SE Critical Patch Updates (CPU) にはセキュリティ上の脆弱性や重大なバグ修正が含まれています。全てのJava SEユーザーが利用可能な最新のCPUリリースへアップグレードすることをOracleは強く推奨します。ほとんどのユーザーは、このリリースを選択すべきです。
Java SE Patch Set Updates (PSU) には、これまでリリースされたCPUに含まれる全てのセキュリティ修正と、重大ではない修正の追加が含まれていますので、当該バージョンで修正されたバグに影響を受けている場合にのみ、Java PSUを利用すべきです。
詳しくは、リリースノートをご覧頂き、ダウンロードしてください。
Java SE 1.7.x Update Release Notes
http://www.oracle.com/technetwork/java/javase/documentation/7u-relnotes-515228.html
まだいまいちよくわからない、という方には、以下のページでCPUとPSUの違いを説明していますので、こちらをご覧ください。
Java CPU and PSU Releases Explained
http://www.oracle.com/technetwork/java/javase/cpu-psu-explained-2331472.html

[Java] Upcoming Oracle Java SE 7u72 PSU

原文はこちら。
https://blogs.oracle.com/java-platform-group/entry/upcoming_oracle_java_se_7u72

10月14日(US時間)に、OracleはOracle Java SE向けの定期的なCritical Patch Update(CPU)のリリースを計画しています。
Oracle Critical Patch Update Pre-Release Announcement - October 2014
http://www.oracle.com/technetwork/topics/security/cpuoct2014-1972960.html
Oracle Java SE 8については、バージョンは8u25となります。Javaをご利用頂いている全ての方がJava SEアップデートリリースをダウンロードして利用されることを推奨いたします。このリリースで、以前お知らせしたように、Java SE 8はJava.comにおけるデフォルトとしてデビューします。Java SE 8への自動アップデート機能は2015年初めに開始する予定です。
Java 8: Not Just For Developers Any More
https://blogs.oracle.com/henrik/entry/java_8_not_just_for
Oracle Java SE 7については、異なるユーザーに対し、2種類のリリースを予定しています。
  • Oracle Java SE 7u71
    通常のCPUで、セキュリティ修正のみを含みます。ほとんどのユーザーに対しこのCPUへのアップグレードを推奨いたします。 
  • Oracle Java SE 7u72
    開発者やセキュリティ以外の改善を必要とする開発者やユーザー、アップデートされた機能をテストするユーザー向けです。リリースノートに記載されている特定の問題に直面している場合にはこの7u72をご利用ください。またQAサイクルの一環として利用する場合にもご利用ください。7u72で追加されている改善や機能は次回のCPUリリース(2015年1月)で提供する予定です。
    Critical Patch Updates, Security Alerts and Third Party Bulletin
    http://www.oracle.com/technetwork/topics/security/alerts-086861.html
詳しくは、以下のOTNの記事をご覧下さい。
Java CPU and PSU Releases Explained
http://www.oracle.com/technetwork/java/javase/cpu-psu-explained-2331472.html

[Java] What Do You Need in Java Documentation?

原文はこちら。
https://blogs.oracle.com/java/entry/what_do_you_need_in

Java SEドキュメンテーションチームは現在以下のURLで簡単なアンケートを実施しています。
Oracle Java SE Documentation Survey
https://www.surveymonkey.com/s/java-se-documentation-survey-2014
このアンケートは、皆様が求めている開発者向けドキュメントとはどういうものか、を知るためのものです。是非ご協力ください。皆様からの声を大切に受け止め反映したいと考えています。