新しいJavaプラグインについてKen Russelにインタビュー

さて、約束したとおり、私の投稿habrahabr.ru/blogs/java/49989に加えて

Sunの新しいプラグインの開発に多大な貢献をした人との短いインタビュー

この人の仕事の成果は、Javaプラットフォームで書くすべての開発者によって使用され、彼の名前はKen Russell(http://research.sun.com/minds/2008-0811/)です。



面接は12月上旬に行われたため、すでに到着しているものの、いくつかのイベントは将来時制で発言される場合があります。



私:開発者は、VMのコマンドラインで追加のパラメーターを指定できるようになりました。 もちろん、これは十分な機能ではありませんが、開発者のアクションを制御するセキュリティはここにありますか? たとえば、512 MBのRAMをそれぞれ割り当てる5つのアプレットがあるため、一部のWebサイトにアクセスしてPCをハングさせることを心配する必要がありますか?

Ken Russell:コマンド引数の仕様に追加の制限を加えることを考えました。たとえば、すべてのアプレットが要求できる最大メモリサイズの制限-システムで使用可能な仮想メモリの最大サイズです。 ただし、Java Plug-Inの最初のリリースでは、予期しない状況で開発者を制限することを避けるために、人為的な制限を導入しないことにしました。 Java Plug-Inは、追加のメモリを要求し、「separate_jvm」パラメーターを使用してアプレットを独自のJVM内で分離する場合でも、同じJVM内でアプレットをグループ化しようとすることに注意してください。 一般に、アプレットが「きれいに」終了しない場合、プラグインは実行されたJVMを「ハード」停止します。 つまり、異常な動作をするページ(Javaから完全に独立している場合もあります)に到達した場合、そのページとJavaプラグインを閉じるだけでシステムが復元されます。



私:この制限の導入はいつ計画されますか? そしてそれはどのように見えますか? たとえば、ユーザーとして、このアプレットを信頼していることをプラグインに伝え、2GBのRAMを割り当てたい場合、割り当てさせますが、あるページに行った場合、そのアプレットはN MB以上のRAMを取得すべきではありませんか?

Ken Russell:この制限の開発の日付はまだ計画していません。 現在、他の分野に注力しています。 お客様から受け取ったデータがこの機能の必要性を示している場合、優先順位を付けます。



私:次に、アプレットはクライアントPCに少量のデータを保存する機能を持っていますが、ブラウザーのキャッシュメカニズムに統合が見つかりませんでした。このデータを削除するにはどうすればよいですか? ブラウザのキャッシュをクリアするときにこのデータをクリアすることは可能ですか? または、ユーザーは自分でそれをきれいにする方法を知っている必要がありますか?

Ken Russell:データを保存する機能はJava SE 6 Update 10の革新であり、プラグインでJNLPサポートを使用して実行しているアプレットは、Java Web Startアプリケーションと同様にPersistenceServiceにアクセスできます。 このデータにはどのようなポリシーが存在するのかわかりません-Java Web Start開発者が答えを出すことができます-しかし、Javaコントロールパネルでキャッシュをクリアすると、このデータは削除されると思います。



私:さて、しかし、このクリーニングメカニズムをブラウザベースのクリーニングメカニズムに統合する予定はありますか?

Ken Russell:これを実装する予定はありません。 Javaのキャッシュは、ブラウザのキャッシュメカニズムの実装への依存を回避するために、ブラウザのキャッシュから明確に分離されています。

私:つまり、Flashのように、利用可能なストレージのサイズをWebページで直接指定することも、保存をまったく禁止することもできます。

Ken Russell:Flashメカニズムについて少し知っています。 私の知る限り、Flashは各ビデオに約100KBのデータを保存できます。さらに必要な場合は、Flashに追加割り当てのリクエストをユーザーに表示するように依頼できます。 JNLP PersistenceServiceにも同様の制限があり、さらに必要な場合は、ファイルシステムに直接アクセスできるようにアプレットに署名できます(ユーザーが証明書を受け入れる場合)。



私:プラグインは、アスタリスクでマークされた新しいウィンドウを作成することができます。プラグインがすでにリリースされていることを考えると、どのようなフィードバックが得られますか?このウィンドウは、ブラウザではなくアプレットによって作成されたことを平均的なユーザーに警告しますか? そしてもう1つ、ブラウザーからアプレットを取り出すことができるようになりました。これが発生すると、アプレットはローカルファイルシステムにアクセスできるようになります。 通常ブラウザに表示されるウィンドウをエミュレートするように求められる悪意のあるアプレットを見たことがありますか、それともブラウザのポップアップが表示される画面の領域をブロックするウィンドウを作成する機会がありますか?

Ken Russell:新しいセキュリティ警告は、Java Plug-Inではなく、Abstract Window Toolkit(AWT)で開発されました。 私はその開発を厳密には追跡しませんでしたが、一般的なユーザーからのフィードバックは肯定的です。

Ken Russell:ブラウザーからレンダリングされるアプレットがファイルシステムにアクセスするという主張は誤りです。 そのようなアプレットは、もちろん署名がない限り、安全なサンドボックス内で実行され続けます。 悪意のあるプル可能なアプレットはまだ見ていません。 ユーザーがとにかく確認する必要があるため、ブラウザベースのセキュリティ警告をブロックすることは意味がありません。これはjava.awt.Robotまたは他の手段を使用して行うことはできません。



私:Cocaは、現時点でJavaの最優先事項です。ユーザーにとって最も安全なプラットフォームになるのか、開発者にとって最も強力な開発プラットフォームになるのか。 または両方? 目標が1つだけの場合、なぜ選択されたのですか?

ケン・ラッセル:両方。 新しいプラグインを使用して、ブラウザのアプレットを通常のアプリケーションと同じくらい強力にしましたが、Javaサンドボックスとセキュリティモデルを保存します。 プラグインを書き換える目的は、ブラウザで実行されるアプレットの「パワー」の人為的な制限を取り除き、ブラウザアプレットとブラウザブラウザアプリケーションをほぼ同一に開発およびデプロイするためにJavaプラットフォームを利用することでした。 そして、私たちは成功したと信じています。



私:Javaアプレットは10年前に登場しました。昨年MicrosoftはSilverligthを発表し、AdobeはFlashプラグインを更新しました。 Sunの新しいプラグインを彼らの答えと見なすことができますか?そして今、SunはFlashに対する攻撃を開始しますか? そのような声明を確認しますか、またはこの状況をどのように見ますか?これは、プラグインを完全に書き換える動機でしたか?

Ken Russell:新しいプラグインは、クライアントプラットフォームでJavaを更新するためのSunの全体戦略の1つの要素にすぎません。 ほとんどの部分でプラグインを作成する動機は、OpenGLを使用してアプレットを作成できるようにするためのJOGLプロジェクトでの私自身の努力から来ています。 Javaで記述された強力な3Dアプリケーションとゲームを、通常のアプリケーションまたはJava Web Startのアプリケーションの形式で作成することは以前から可能であり、3Dコンテンツをブラウザーにデプロイするために同じ機能と信頼性が必要でした。 新しいプラグインは、Java Web Startの最高のアーキテクチャ要素と古いプラグインを使用して、古いアプレットとの互換性を確保すると同時に、新しいアプレットに新しい機能をデプロイします。

Ken Russell:アプレット用の信頼できるコンテナを手に入れるとすぐに、次の疑問が生じます:このコンテナに何を入れるか。 JavaFXは、より豊富なアプリケーションとアプレットを簡単に開発するための次の大きなステップです。 数日でのJavaFX 1.0のリリースと、Javaプラットフォームで作成できる素晴らしいアプリケーションの多くの例を見てください。



All Articles