プロが教えるわが家の防犯対策術!

Windows Server 2008 R2のサーバ上で多数のアプリを動作させる要件があり、
各アプリにて推奨されるJREのバージョンが異なっています。
※例として、アプリAはJRE 6 update 24、アプリBはJRE 6 update 45を推奨。

OSの仕様としては、複数バージョンのJREがインストールされている場合は
新しい方のバージョンを標準で使用する、と認識しております。
ただ、上記のアプリAはJREのパスの指定が可能な作りになっているため、
両方のバージョンのJREをインストールすれば、おそらく両方のアプリを
1台のサーバ上で動作させることは可能であると考えております。

ただ、サーバ構築の観点から考えて、複数のバージョンのJREを
インストールするというのは推奨されない行為なのではないかと懸念しております。
本件に関して、以下2点をご教授ください。
・上記のようにアプリで推奨されるJREのバージョンが異なる場合、
 一般的にどのように対処するものでしょうか?
・また、複数バージョンのJREを1台のサーバにインストールするというのは
 サポート対象外の構成でしょうか?
 ※そもそも、JREにはサポート(問題発生時の問い合わせ等)は無いのかもしれませんが…。

お手数お掛けしますが、よろしくお願い致します。

A 回答 (1件)

Windows OSは複数のJREをインストールしても問題ありません。


インストール先を適切に設定(※)し、自動アップデートを行わない設定にしておきましょう。
> OSの仕様としては、複数バージョンのJREがインストールされている場合は
> 新しい方のバージョンを標準で使用する、と認識しております。
JREはSystem32フォルダ(64ビットWindowsに32ビットJavaを入れた場合はSysWow64フォルダ)にもjava.exeやjavaw.exeを置きますが、インストールした奴の中で最新のJREのものが置かれるようになっています。なのでコマンドを指定して実行などでjavaと入力すると最新のJREが起動します。おそらくそれの事を言っているのだと思いますが、PATH環境変数で先に各JREのbinを指定したり、各JREのbin\javaw.exeを直接起動する事で任意のJREを実行する事ができます。

※たとえば
C:\Program Files\Java\jre1.6.0_24

C:\Program Files\Java\jre1.6.0_45

他の例を挙げると、EclipseやOracle SQL Developerなどは自分自身のインストール先配下に自分を動かすためのJREをインストールするものもあります。

複数のソフトウェアの推奨JREですが、これはソフトウェアをリリースした時の最新のアップデート番号が書かれているだけだと思います。Java6の場合はアップデートでAPIが変更された事はないので基本的には(Java6の中で)最新のアップデートを使う方が推奨されます。が、アップデートというのは当然バグフィックスを含みますので、JRE1.6.0_24のコアパッケージの中に存在するバグを回避するようなコードがそのソフトウェアに含まれており、かつJRE1.6.0_45ではそのバグが修正されていて動作が変わっているという可能性は十分にあります。心配であれば複数のJREで動作させる方が良いでしょう。

前述したPATH環境変数などを用いて、バッチファイルを書いたり、(サービス起動するようなソフトウェアは)サービスを実行するアカウントを切り替えたりする事で、JREの指定方法が無いソフトウェアでも任意のJREでソフトウェアを実行する事もできます。
    • good
    • 0
この回答へのお礼

詳しくご回答頂きありがとうございました。
記載いただいているPATH環境変数での指定についても検討しておりましたが、
おそらく先に書かれている方が使用されるため、切り替えて使用することは可能ですが
同時に別のバージョンを動作させるのは難しいのだろうと認識しております。
ですが、アプリの仕様上、直接java.exeを起動するような作りになっていれば
明示的に古いほうのバージョンで動作させることも可能、という旨で理解しました。

調べてみたところ、JRE1.6.0_45ではOracle社のRuntime.exec APIの実装が変更されており、
対象アプリの動作が正常に動作しないため、複数バージョンを共存させる方針で進めようと思います。

お礼日時:2014/01/08 09:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!