JavaOne最終日のキーノートで発表したので、すでにご存知の方々もいるかと思いますが、新規参入キャリアであるイー・モバイル様と技術協力で提携をしました。この提携に伴い、サンからはJava技術の導入の検討と技術提供を行う予定です。日本には現在、いくつかの携帯電話事業者が存在しており、ドコモ様、ボーダフォン様、ウィルコム様がJavaのアプリケーションサービスを提供しています。すでに業界では、標準機能になったJavaプラットフォームですが、Felica など今後多様化していくサービスでは、安全性は最も重要な機能であり、言語設計そのものに安全性を取り込んであるJava言語は、今後もコンシューマーサービスに浸透していくものと思われます。そのような状況の中で、イー・モバイル様にもJavaへの賛同を頂き、現在、仕様化などのいろいろな作業を一緒にさせて頂いています。
今回の提携の目的は、もちろん優れた(売れる)端末を開発する事もありますが、共同でECO SYSTEMを構築していくことも、あげられます。Consumerの世界では、「いいものが必ず売れる」とは限りません。テクノロジーだけではなく、それを取り巻く、サービス、ビジネスモデルも重要であり、この提携でも、その辺りを含めたWin-Winの関係が築けることを願っています。
すでに半月程過ぎてしまいましたが、JavaOne Tokyoのフォローをかねて、久々にブログを書いています。今回のJavaOne Tokyoでは、Java ME側では、いくつかのセッションと発表をしました。Java ME Technology Update という内容のセッションとBOFを担当しましたが、会場には結構たくさんの人達に来て頂きました。しかし、BOFともなれば通常はディスカッション中心ですが、残念ながら、ほとんど質問や意見も出ませんでした。(若干、Aplixの小林さんに、発言していただいたくらいで・・・)
今回のアップデートでは、最適化実装について中心的に話をしました。HotSpotコンパイラに関する話、新しい所では、アプリの高速起動のためのIPE(In-place execution)の話、Multitasking VMのアプローチに関してが、主な要素でしたでしょうか。
IPEは、BREWなどの登場により求められるJavaアプリの高速起動の実現についての1つのソリューションですが、簡単にいうと、ダウンロードしたJARをメモリの実行形式のフォーマットに変換し、NANDに保管しておきます。この変換時には、静的なデータ構造のみをNAND Memoryに置いておきます。アプリの実行は、RAMにコピーするのではなく、NANDから直接起動することで、コピーやローディングといった時間を短縮するのが狙いです。
MVMのアプローチでは、CLDC/CDCで方法が異なります。CLDCでは、多くのRTOSがマルチタスクに対応していない状況もあり、1つのVMタスク上に複数のMIDletを動作させるといった方法を取ります。CDCのMVMでは、通常のUNIXのfork()のようにアプリごとにVMのプロセスが分かれます。システム内には、master VMとその他の派生されたVMのプロセスが常駐します。CLDCとCDCでは、そのアプローチの違いにより、ハードウェアの資源を管理する方法も当然異なります。
JavaMEに関しては、OSもPCの世界とは異なり、さまざまなものが採用されています。そのため、上記のアーキテクチャが全てのConsumer OSに有効であるとは思えません。JavaME自体の技術が、まだ成長期にあり、今後も様々な拡張や修正を行っていく予定です。それらの内容は、今後のJavaOneやblogでもフォローしていきたいと思います。