Java 9 + IE: Appletの動作検証

# はじめに
※自分用のメモも含みます。

誤解のないように書いておくと、このエントリは、Java Applet を推奨する記事ではありません。
既にアナウンスされている通り、Java 9 では非推奨となり、Java Plugin は、将来削除される予定です。
- 参考資料: [JDK 9およびJavaプラグイン](https://www.java.com/ja/download/faq/jdk9_plugin.xml)

先日(2017/10/28)参加させていただいた「[JavaOne 2017 報告会 in 大阪](https://kanjava.connpass.com/event/69413/)」でも、次のようなお話がありました：

- リリースモデルが変更になる。
    - 2018年3月から６か月ごと。その時までに間に合った機能が入る。
    - 詳しくは、「[Oracle Java SEサポート・ロードマップ](http://www.oracle.com/technetwork/jp/java/eol-135779-ja.html)」と思われる。
    - Java 8 からの移行は、バージョン18.9(2018年9月リリース)を目指すのがよいのでは？
- Applet について
    - Java 8 が確実
    - バージョン 18.3 から Deployment Technologies (Applet, Java Web Start) がバンドルされない

そのため、Java 9 における Applet の動作検証に、果たして意味があるのだろうか？と自問しつつ、
ほとんど供養のような気持ちで以下、記載しています。

# Java 9 + IE: Applet の動作検証 - 動きます、但し、、、
結論から書いてしまうと、次の条件で動作しました。

- 実際に検証した環境
    - OS: Windows 10 Home Edition (バージョン1703, ビルド15063.674) (64bit, x64ベース)
    - IE: 11.674.15063.0 (更新バージョン 11.0.47(KB4040685))
    - Java: 9.0.1 (ビルド11) 64bit　（ダウンロード元：http://www.oracle.com/technetwork/java/javase/downloads/jre9-downloads-3848532.html)
    - 確認に利用したサイト: https://www.java.com/ja/download/installed8.jsp
    
- 注意点
    - Java 9 は 64bit版のみが公開されている。
    - IEは、デフォルトでは、32bitモードで動作する。このため、Appletで64bit版Javaを利用するには、Java 8 までと同様、拡張保護モード(Enhanced Protected Mode; EPM)を有効にする必要がある。
        - IE10の場合：インターネットオプションの詳細設定で「拡張保護モードを有効にする」（「マシン」再起動が必要）
        - IE11の場合：インターネットオプションの詳細設定で「拡張保護モードで 64 ビット プロセッサを有効にする」（「マシン」再起動が必要）
        - 参考資料: [IE10 & IE11 : 拡張保護モードの実態](https://blogs.technet.microsoft.com/jpieblog/2013/11/29/ie10-ie11/)
    - IEの拡張保護モードとの相性に関する不具合修正が、Java 7u55 で実施されている。このため、Appletで64bit版Javaを利用するには、7u55以上が必要のようだ。
        - 参考資料: [Java7リリースのハイライト](https://www.java.com/ja/download/faq/release7_changes.xml)
    - Java7u51にて、セキュリティ強化が行われ、デフォルトのセキュリティ設定で利用するには、公開するアプレットに、次の調整が必要だ：
        - すべてのRIA（AppletおよびWeb Startアプリケーション）に署名が必要。
        - マニフェスト内に"Permissions"属性を設定する必要がある。
        - 参考資料: [【Java 7 u51 関連情報(1)】Java 7 Update51におけるRIAの新しいセキュリティ要件について](https://blogs.oracle.com/otnjp/java-7-u51-1java-7-update51ria)
    - IEの拡張保護モードは、他のプラグインとの相性が良くないことがある。もしそちらのプラグインを利用する場合には、拡張保護モードを無効にする必要があり、その時は、64bit版Javaは利用できないことになる。
    - Java 9 から、モジュールシステムが導入されたので、利用するパッケージによっては、起動オプションの調整が必要と思われる（⇒別途調査しよう）
        - 参考資料: [Javaモジュールシステム](http://www.torutk.com/projects/swe/wiki/Java%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0)
        - 参考資料: [ヌーラボのアカウント基盤を Java 9 にマイグレーションして起きた問題と解決法](https://nulab-inc.com/ja/blog/nulab/java9-migration/)


#動作検証手順

1. 準備として、念のため、インストール済みだった、JRE7, JDK7, JRE8, JDK8 をすべて削除したのち、マシン再起動
1. Java 9 をダウンロードしてからインストール
   ※この時点で、IEのアドオン一覧を確認すると、「Java(tm) Plug-In 2 SSV Helper」が新規アドオンとしてインストールされていることが確認できる
1. IE11のインターネットオプションの詳細設定で「拡張保護モードで 64 ビット プロセッサを有効にする」にチェックを付ける
![Java9_09.png](https://qiita-image-store.s3.amazonaws.com/0/110922/336d159b-044c-6fc6-55d8-d367fafd2769.png)

1. マシン再起動
1. IEのアドオン一覧を確認すると「Java(tm) Plug-In 2 SSV Helper」が「互換性なし」「利用不可」と表示されるが、あきらめずに先に進む
1. IEで Javaのバージョン確認のサイト https://www.java.com/ja/download/installed8.jsp を表示する
1. [Javaのバージョンの確認]ボタンを押下する
1. 「Java Plug-inが非推奨です」という警告を表示する（「このメッセージを今後表示しない」にデフォルトでチェックが付いているので最初しか表示しないが、デフォルトはオフの方がよいような気が。。。）が、アプレットは起動する
 [署名確認]
 ![Java9_13.png](https://qiita-image-store.s3.amazonaws.com/0/110922/8e842d2d-87ea-fda1-db84-75171c3f2e16.png)
 [Java Plug-in非推奨の警告]
 ![Java9_14.png](https://qiita-image-store.s3.amazonaws.com/0/110922/19963a13-2a81-3b93-fc4d-21e43db5dcc1.png)
 ※Javaコンソールを表示している場合は、そこにも「警告：Java Plug-in が非推奨であり、今後のJavaリリースでの削除が考えられます。」と表示される。![Java9_16.png](https://qiita-image-store.s3.amazonaws.com/0/110922/7cc214ef-65d4-d73a-5ed7-3bdf5c8c7aed.png)
 [Applet実行結果]
 ![Java9_17.png](https://qiita-image-store.s3.amazonaws.com/0/110922/6c5be1ec-f8e7-4a7d-2b5f-af834e35bbba.png)

#おわりに
AppletがJava 9 で非推奨になったという情報はありましたが、GA版になってからの状況があまり見えず不安であったため、自分を落ち着かせるために検証してみたというのが本音です f^^;

次は、デフォルトで読み込まれないモジュールも含めて、検証したいと考えています。

もちろん、Appletの代替の模索も並行して。