小山博史のJavaを楽しむ(12)
「Javaは遅い」から「Javaは楽しい」に至る歴史
株式会社ガリレオ
小山博史
2008/12/15
□ オールインパッケージのNetBeans
NetBeansはEclipseよりも先に、Webアプリケーション開発に必要なものがオールインパッケージのような感じで入っていたため、個人的には手軽にWebアプリケーション開発に挑戦をするならNetBeansがお薦めだと思っていました。最近は、EclipseもJava EE用パッケージを用意するなどしているため、いまはNetBeansとEclipseと、どちらが良いかは悩ましいところです。
日本ではEclipseが非常にブレイクしたので、読者の身の回りには「Eclipse使い」が多いのではないでしょうか。ただ、JSRのリファレンス実装を取り込むスピードはNetBeansの方が速いような気がします。JavaFXへの対応やGlassFishへの対応などは、NetBeansはかなり早い段階から取り組んでいますから、使い分けるといいのではないかと考えて、筆者は両方インストールして使っています。
□ IDE使いならJavaデスクトップの実用性は分かるはず
このように、Java用IDEが普及してきた流れもあるため、Javaデスクトップアプリケーションも十分実用性が高くなったといえます。CPUやOSに最適化されたネイティブコードのアプリケーションが駆逐されるほどの勢いはありませんが、今後も適材適所でJavaデスクトップアプリケーションもたくさんの種類が出てくるのではないかと予測しています。
□ Javaはもう遅くない
また、HotSpot技術やJITコンパイラ技術により、現在のJavaVMは非常に高速にJavaアプリケーションを実行できるようになったので、JDK 1.0/1.1のころによくいわれた「JavaVMによるJavaアプリケーションの実行は遅い」という点については、現在はほとんど問題視されなくなってきていますが、偏見が根深く残っているのも事実です。
■ クライアントのバージョン管理が問題だ
さて、そうすると、デスクトップ向けのJavaアプリケーションのバージョン管理が今後どうなるか気になります。
Webアプリケーションを利用することのメリットには、クライアントマシンではWebブラウザが動いていればよく、Webアプリケーションのバージョンアップはサーバ側でコントロールできるということがあります。Javaデスクトップアプリケーションでも、クライアントマシンではJavaVMが動作すればよく、バージョンアップも簡単にコントロールできる方法があるとうれしそうです。
□ Java Web Startという回答
サン・マイクロシテムズはこの要求に応えるものとして、「Java Web Start」という技術を提供しています。この技術を利用すると、Javaアプリケーションは初回の起動時はネットワークからダウンロードしてからプログラムを実行しますが、2回目以降の起動はローカルにダウンロードしたファイルを使って実行します。また、ダウンロード元にアプリケーションのバージョンアップファイルが置いてあると、バージョンアップもできます。
このように、Java Web Startの登場により、筆者はGUIアプリケーション開発時には次の3種類のうち、どこに分類されるGUIアプリケーションを開発するのかを意識する必要があると考えています。
- 重量級のデスクトップアプリやローカルマシンの管理権限が必要なアプリケーション
- Java Web Startのような軽量級のデスクトップアプリケーション
- Webアプリケーション
□ 当たり前になってきた自動アップデート
最近はOSにしても自動セキュリティアップデートが付くのは当たり前ですし、Adobe ReaderやアップルのSafariのように、ソフトウェアレベルで自動セキュリティアップデートをするものも多くあります。ただし、これらはインストールに当たって、インストールファイルをダウンロードしてローカルマシンでインストールを行います。
Java Web Startでは、Webブラウザから簡単にデスクトップへインストールできますし、バージョンアップも簡単にできます。Java Web Startは、「アプリケーションの実行ファイルをローカルマシンへキャッシュする技術」ともいえ、こういった仕組みが今後は普及するのではないかと考えています。
■ 既存技術を見直すと、そこにチャンスがある
アプレットやサーブレット、デスクトップアプリケーション、Java Web Startと順番に見てきましたが、これに前回の「Javaはクラウドのプラットフォームになり得るのか」で紹介したクラウドコンピューティングも含めて考えてみましょう。
クラウドコンピューティングが実現された世界では、処理がデスクトップで行われているのか、インターネットで行われているのか、データはローカルにあるのかサーバにあるか、といったことが隠蔽(いんぺい)されて、あまり気にしなくてもよくなるはずです。こういった世界を実現するためには、これを支える技術が必要ですし、支える技術を簡単にソフトウェアへ搭載できる開発ツールが必要です。
「技術開発に興味があるか」「技術を簡単に利用できるようにする仕組みに興味があるか」「簡単に使えるようになった技術を利用するソフトウェア開発に興味があるのか」によって、キャッチアップのタイミングや興味の持ち具合に差はありますが、いずれにせよ、Java SE 6u10には注目してみてください。
□ 新しい技術は既存技術の応用であることが多い
クラウドコンピューティングを支える技術に限らず、新しい技術は既存技術の応用であることが多いものです。
例えば、今回話に出てきたHotSpot技術やJITコンパイラ技術は彗星(すいせい)のごとく突如現れたわけではなく、長い年月をかけて開発されてきたものです。Javaも文法はC/C++を参考にしていますし、オブジェクト指向言語もJavaが登場する前からあり、それをJava言語設計時に参考にしたものです。
近年では、Ajaxが話題になりましたが、そこで使われている技術は1つ1つを見ると枯れていて、それらの既存技術をうまい具合に組み合わせることによって、これまでは難しいといわれていた処理を実現できるということでした。
このように、技術は既存のものであっても、いつブレイクするのかは分かりません。進化したものがある場合は、たまには見直しをしてみるのがよいのです。
□ JavaアプレットとJava Web Startの融合
例えば、Java SE 6u10は、Java SE 6u7から一気にUpdateの番号が上がりました。「Java SE 6 Update 10 リリースノート」を見ると、いくつか注目すべき点があります。
筆者は「次世代Javaプラグイン」「JQS(Java Quick Starter)」に注目をしています。Javaアプレット、Java Web Startといった既存技術にJavaFXがうまい具合に融合して、非常に興味深いものになってきています。また、Windows 2000やXPにおいてJavaVMを高速起動できるJQSは、「Javaは遅い」というイメージを払拭(ふっしょく)できそうです。
■ ドラッガブルアプレットを作ってみよう
ではここで、次世代Javaプラグインに関連して、冒頭のドラッガブルアプレットのコードを見てみましょう。
既存のJavaアプレットをドラッガブルアプレットにすることは、非常に簡単ですし、JavaFXアプリケーションも簡単にドラッガブルアプレットにできます。ここでは、簡単なJavaアプレットのサンプルコードを書いてシンプルに実現する例を紹介します。
最初に次のような簡単なJavaアプレットを作成します。背景を灰色として、SimpleJAppletという文字列を表示するだけのものです。
| sample/SimpleJApplet.java |
package sample; |
作成したら、コンパイルして、JARファイルも生成しておきましょう。
javac sample/SimpleJApplet.java |
次に、これを起動するJNLPファイルを用意します。<information>要素には、このアプレットに関する情報を記載します。<resource>要素には使用するJARファイルを指定します。また、アプレットのクラス情報などは<applet-desc>要素に記述します。
| SimpleJApplet.jnlp |
<?xml version="1.0" encoding="UTF-8"?> |
最後に、sample.SimpleJAppletクラスを利用するHTMLファイルを作成します。次のように、appletタグで基本情報を指定して、<param>タグでドラッガブルを有効にしたり、参照するJNLPファイルの指定をしたりしています。
| SimpleJApplet.html |
<applet code=sample.SimpleJApplet.class width="200" height="200"> |
これだけで、ドラッガブルアプレットは実現できます。アプレット自体には、ドラッガブルにする設定は必要ないので、自分で作成したJavaアプレットでも試してみてください。
■ Javaアプレット+REST=RIA?
このように、Java Web Startと融合して進化を遂げたJavaアプレットですが、RIAとして実行するには、ここへHTTPクライアントとしての機能を実装したりする必要があります。また、サーブレット側でもどのようなリクエストを受けて、どんなレスポンスを返すか決める必要もあります。個人的には、RESTのアーキテクチャが一番手軽ではないかと思いますが、それで素早い開発ができるかどうかまでは、現時点では分かりません。これから検討してみようと思っているところです。
皆さんも、昔気になった技術をもう一度思い返してみてはどうでしょうか。いまのコンピュータリソースだったら使えるかもしれませんし、いろいろな技術向上によっていまなら以前よりもっと使える技術となっているかもしれません。
なお、今回作ったサンプルのソースコードはこちらからダウンロードできます。
□ @IT関連リンク
| 開発者が知っておくべきJavaと仮想マシンの歴史 安藤幸央のランダウン(42) JavaとVMが生まれた背景や名前の由来、さまざまなJDK、マイクロソフトやAndroid、iPhoneとの関係、Java VMで動くスクリプト言語など 「Java Solution」フォーラム 2008/9/4 |
| 実行速度に挑戦してきたJava
VMの歴史 Javaの歴史は実行速度向上の歴史でもあった。今日のJava VMが完成するまでのアーキテクチャの変遷を振り返ることで、Java VMの理解をより深めることができる 「Java Solution」フォーラム 2003/12/11 |
||
| いまさら聞けない「Webブラウザ」超入門 後編 いまさら聞けないリッチクライアント技術(12) 主要4ブラウザのIE、Firefox、Opera、Safariを取り上げて、Webブラウザによるレンダリングの違いや歴史を説明する 「リッチクライアント & 帳票」フ ォーラム 2008/5/14 |
||
| SwingでJavaに強くなる JavaはサーブレットやJSPだけじゃない!Eclipseを使ってSwingを学ぶことで、Javaの基本、GUIアプリケーションの基本スキルを高めよう |
||
| SWTは本当に高速なGUIを実現するのか? [コラム]安藤幸央のランダウン(19) クライアント環境のJavaアプリケーションで高速なGUIを実現するSWT。だが、その性能を盲信してはいけない。使い分けが重要だ 「Java
Solution」フォーラム 2003/6/4 |
| 筆者プロフィール |
| 小山博史(こやま ひろし) 情報家電、コンピュータと教育の研究に従事する傍ら、オープンソースソフトウェア、Java技術の普及のための活動を行っている。長野県の地域コミュニティである、SSS(G)やbugs(J)の活動へも参加している。 著書に「基礎Java」(インプレス)、共著に「Javaコレクションフレームワーク」(ソフトバンククリエイティブ)、そのほかに雑誌執筆多数。 編集部より:小山氏による大人気のJava入門連載「EclipseでJavaプログラミング超入門」が2009年1月からバージョンアップして改訂する予定です。こうご期待! |
| 1-2-3 |
| INDEX | ||
| 第12回 「Javaは遅い」から「Javaは楽しい」に至る歴史 | ||
| Page1 「Java SE 6u10」そして、「JavaFX 1.0」という事件 Webブラウザアプリの出現に興奮した時代 |
||
| Page2 Java Webアプリ開発の主役はサーブレットへ 開発ツールの実装で人気が出たJavaデスクトップアプリ |
||
| Page3 クライアントのバージョン管理が問題だ 既存技術を見直すと、そこにチャンスがある ドラッガブルアプレットを作ってみよう Javaアプレット+REST=RIA? |
||
小山博史のJavaを楽しむ バックナンバー 連載インデックスへ»
- 第1回 JavaとJavaScriptの親しい関係
- 第2回 いろいろなJavaを楽しむ
- 第3回 待望のJava SE 6 でパーシステンス
- 第4回 (Java+Derby)* Ruby on Rails プログラミング
- 第5回 【新人研修向け特別企画】JavaでPHPを使ってみた
- 第6回 JavaFXでJava RIA開発はどれくらい変わるの?
- 第7回 そろそろブログ+RSSアプリでも作ってみませんか?
- 第8回 デスクトップをJava製ウィジェットでにぎやかに
- 第9回 Google Android用携帯アプリ作成のための基礎知識
- 第10回 【新人なるプログラマーへ】ソースコードを読みましょう
- 第11回 Javaはクラウドのプラットフォームになり得るのか
- 第12回 「Javaは遅い」から「Javaは楽しい」に至る歴史
- 第13回 Subversionならできる! NetBook最強バックアップ術
- 第14回 UNIX/Linuxも楽しむJava開発者になるための学習法
- 第15回 年末でJetty(絶対)にできるAndroid携帯サーバ活用
| ご意見、ご感想はJava Solution 会議室へどうぞ |
| Java Solutionコラム一覧 |
TechTargetジャパン
- Scalaのパッケージ、アクセス修飾子、オブジェクト継承 (2012/5/22)
インポート、パッケージオブジェクト、抽象クラス/抽象メソッド、オーバーライド、final、シールドクラスなども - 基幹系システムでCloud SQLは使えるか試してみた (2012/5/17)
サンプルとしてMRPシステムを作成して動かし、「再帰呼び出し」などのパフォーマンスを測定して検証してみます - アジャイル管理ツール9選+Pivotal Tracker入門 (2012/5/14)
群雄割拠のアジャイルプロジェクト管理ツールを9つ紹介し、特に注目を集めているPivotal Trackerの基本的な使い方を解説します - サーバサイドJSやJavaでWebアプリが作れるXPages (2012/5/11)
Notes/Dominoの資産をサーバサイドJavaScriptやJavaで操作し、HTMLやJavaScript、CSSをUIにできる技術を紹介
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -

