6分で読めます
| マック
Javaアプリを実行する方法は2つあります。1つ目は、プラグインを使ってWebブラウザ内でJavaアプレットを実行する方法です。2つ目は、MacでネイティブJavaアプリを実行する方法です。昨今、Javaに関するセキュリティ上の懸念が深刻化していることから、MacからJavaシステムを完全に削除または無効化する方法を検討されている方もいらっしゃるかもしれません。このハウツーでは、プラグインとJavaシステムの両方をアンインストール/無効化する手順について説明します。また、Java 6とJava 7の違いについても説明します。
1. Javaアプレットとプラグイン
多くのMacユーザーは、ブラウザプラグインを使用することで、ブラウザでJavaアプレットを実行できます。Oracleは現在、Macユーザー向けにこのプラグインをサポートしています。最近のセキュリティアラートを受けて、OracleからこのプラグインをJava 1.7(Java用語では「Java 7」)にアップグレードした場合、このプラグインは/Library/Internet Plug-insにインストールされています。ファイルは「JavaAppletPlugin.plugin」で、左に示したアイコンが付いています。
また、Oracle の Java 7 ブラウザ プラグインをインストールしたときに、システム環境設定の「その他」に設定パネルがインストールされました。
図1. OracleのJava設定パネル
この設定パネルは、アプレット用のOracle Java 7ブラウザプラグインを管理します。新しいバージョンが利用可能であれば自動検出されますが、インストールは行われません。「アップデート」タブからご自身でインストールする必要があります。
図2. 更新タブ。利用可能なアップデートが表示されます。
Chromeは32ビット版、Java 7は64ビット版なので、Java 7はChromeでは動作しません。そのため、Macで利用できる主要ブラウザはSafariとFirefoxのみとなります。
ブラウザプラグインを無効にする
SafariとFirefoxの両方のブラウザ で、/Library/Internet Plug-insにあるアプレットプラグインをブロックする最善の方法は、Java環境設定パネルで無効にすることです。以下の丸で囲まれたチェックボックスのチェックを外し、ブラウザを再起動してください。
図 3. ブラウザで Java を無効にします。
ちなみに、Javaタブを見て「表示…」を選択すると、インストールされているバージョンを確認できます。
図 4. プラグインのバージョンを確認します。
ターミナル アプリを使用してプラグインを詳しく調べ、バージョン番号を抽出することもできます。
> /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java -version
このコマンドは、オタク気取りではなく、OracleのJavaアプレットプラグインの構造を明らかにするために示しました。プラグインの「パッケージの内容を表示」を使えば、ご自身でも確認できます。
あるいは、より安全を期すには、/Library/Internet Plug-ins にある「JavaAppletPlugin.plugin」ファイルを削除することもできます。ただし、そうすると、プラグインが必要になった際に簡単に再有効化することが難しくなります。
これまでに報告されたセキュリティ問題のほとんどは、ブラウザ用のこの Java アプレット プラグインに関連しています。これは、悪意を持って作成された Web サイトが機能するための手段だからです。
Appleは2012年10月に独自のJavaブラウザプラグインの提供を停止し、その後のソフトウェアアップデートで削除されました。それ以降、OracleがJavaアプレットプラグインの責任を引き継いでいます。
最後に、Oracle の Java アプレット テスト ページ (http://www.java.com/en/download/testjava.jsp) にアクセスして、Java プラグインが無効になっているかどうかをテストできます (Safari と Firefox では応答が若干異なる場合があります)。プラグインが最新で、有効になっており、正常に動作している場合にのみ、次のメッセージが表示されます。
Java ブラウザ プラグインは最新であり、正常に動作しています。
2. JavaアプリケーションとJava 6
お使いのMacの履歴によっては、開発用とネイティブJavaアプリケーションの両方にJava 1.6(Java用語では「Java 6」)がインストールされている場合があります。Java 6は、開発者がCrashPlanやjEditなどの完全なJavaアプリケーションを作成し、実行できる本格的な開発システムです。OracleではなくAppleが、Oracleが提供するパッチに基づいて、OS X向けのJava 6を現在もメンテナンスしています。(ただし、Oracleは非法人ユーザー向けのアップデートの提供を停止する準備を進めているようです。)
2つの異なるJavaシステム
これが多くのユーザーを混乱させる原因です。ブラウザのアプレットプラグインをアップグレードしたことは分かっているものの、ターミナルコマンド「java -version」ではプラグインのバージョンが参照されません。表示されるのは開発用とネイティブアプリ用のAppleのJava 6パッケージの完全版のバージョンです。バージョン番号が異なる場合があります。
ユキヒョウ
OS X 10.6、Snow Leopard* までは、Apple は Java 6 をプリインストールしており、現在もメンテナンスを続けています。最新バージョンは 1.6.0_43 です。Apple のソフトウェアアップデートでシステムを最新の状態に保っておけば、ターミナルウィンドウを開いて「java -version」(かぎ括弧なし)と入力すると、次のような画面が表示されます。
図 5. Java 6 のバージョン番号の取得。
Java インストールを無効にする方法については、後ほど説明します。
ライオンとマウンテンライオン
LionまたはMountain Lionがプリインストールされた新しいMacを購入した場合、Java 6はインストールされていません。現在はオプションでインストールできます。
Snow Leopard MacをLionまたはMountain Lionにアップグレードした場合、インストールプロセスでJava 6が完全にアンインストールされずに抑制されたと思われます。私の2台のMacを調べたところ、アップグレードによって/System/Library/Java/JavaVirtualMachinesというディレクトリ/フォルダが削除されたようです。これにより、Javaアプリケーションが実行不能になります。
このような Mac では、「java -version」と入力すると、次のように Java 6 をインストールするように求めるプロンプトが表示されます。
図6. Java 6のインストールの招待
あるいは、GoToMeetingの古いバージョンを実行するためにJava 6をインストールしたのかもしれません。あるいはAdobeのインストーラーがそうさせたのかもしれません。
Java 6をインストールすると、OS Xの奥深くに大量のJavaファイルが埋め込まれます。ブラウザ用のシンプルなプラグインとは異なり、これらのファイルをすべてアンインストールするのは容易ではありません。しかも、正式なアンインストーラーも存在しません。Code42 SoftwareのMatthew Dornquast氏によると、Java 6の痕跡をすべて削除する唯一の安全な方法は、10.8をクリーンインストールすることだそうです。そして、それ以降はJavaのインストールを求められたら「いいえ」と答えてください。
Java 6 はインストールされていますか?
Java 6 がインストールされているかどうかを確認するには、コマンド ラインでプロンプトの後に次のように入力します。
> java -バージョン
図6に示すように、Java 6のインストールを促すメッセージが表示された場合、アプリケーション用のJavaシステムが動作していません。(推奨される対応:「今はインストールしないでください。」)図5に示したような結果が表示された場合、Javaのバージョンは1.6.0_43です(この記事の執筆時点では)。
Java 6のアンインストール
様々なウェブサイトやフォーラムのコメント投稿者から、コマンドラインから特定のディレクトリやファイルを削除することでJava 6を部分的にアンインストールする、巧妙な方法がいくつか提案されています。しかし、特定のJava 6ファイルを削除すると、いくつかの深刻な問題が生じます。
- Java 6 は実際には完全にアンインストールされていません。
- Adobeなどの一部のアプリケーションやスイートは、JavaがMacにそのままインストールされていることを前提としています。重要なJavaファイルを削除してしまうと、将来的に様々な不可解な事態が発生する可能性があります。
- 削除(または名前変更)したファイルに関する正確なメモがなければ、必要になったときにJavaをアプリケーション全体で再度有効にするのは困難です。信じてください。
- これらの例の一部では、非常に危険な「rm -rf」シェル コマンドが使用されています。このコマンドを誤解して誤って入力したり、誤って使用したりすると、Mac が損傷し、OS X の再インストールが必要になる可能性があります。
一番のアドバイスは、OS Xのソフトウェア・アップデート機能を使ってJava 6を最新かつ安全な状態に保つことです。Appleはしばらくの間、Java 6の最新かつ安全な状態を保つことに非常に積極的に取り組んできました。将来、OS X 10.8または10.9がインストールされた新しいMacを購入すれば、あなたのMacはJava 6から完全に解放されるでしょう。今のところ、ウェブサイトにアクセスするネイティブJavaアプリが心配な場合は、実行しないようにしましょう。
なお、Java 6 がインストールされていない Mac でも、上記のように Oracle のブラウザ プラグインをインストールできます。
3. JavaアプリケーションとJava 7 JDK
セキュリティアラートなどにより、OracleのJava 7開発キット(JDK)をどこかでインストールした場合、「java -version」コマンドを実行すると、開発用にOracleのJava 7がインストールされたことが反映されます。ただし、AppleのJava 6は削除されません(共存可能です)。「MacユーザーがJavaセキュリティアップデートについて知っておくべきこと」で書いたとおりです。
さらに重要なのは、Java開発の知識が十分でない限り、[Java 7 JDKのインストール]によって、Java 6のインストール場所を熟知している必要があるスタンドアロンのJava 6アプリが動作しなくなる可能性があることです。(Mac向けのJavaアプリのほとんどはJava 6で書かれています。)つまり、熟練したユーザーでない限り、Oracleの(Java 7)JDKはインストールしないでください。
まとめ
Unixの経験がなければ、Java 6を無効化して再度有効化することさえ非常に困難です。ましてや完全に削除するのは至難の業です。熟練ユーザーであれば、Java 6アプリが動作しないように重要なファイルを削除することも可能ですが、Unixやコマンドラインの経験がない一般ユーザーにとっては、あまり良い方法とは言えません。Java 6向けに構築されたネイティブJavaアプリを実行している場合は、Java 6を最新の状態に維持しておく(OS Xのソフトウェアアップデートを使用)ことをお勧めします。そうでない場合は、Java以外の代替手段を検討してください。
覚えておいてください。ブラウザ プラグインが設計されているように Web サイトにアクセスしないネイティブ Java 6 アプリ (jEdit などのテキスト エディター) を実行する場合は、脆弱ではありません。
本当に Mac から Java 6 を完全に削除したい場合は (実際には必要ありませんが)、Lion または Mountain Lion をクリーン インストールする必要があります。
___________________
* 10.5 Leopard の Java 6 にはセキュリティ上の問題があり、これは修正されることはありません。