SkyArts.com

Home > SkyArtsメンバー > Hideki > 2004.06.08

SkyArtsのおすすめ商品です!SkyArtsストア
(Powered by Amazon.co.jp)
基本送料無料!
  激安ショップやってます!SkyArts Shop
(激安Shopやってます)
 

Javaの限界?

 Javaは1996年からやっているのでかなりベテランの域ですが、限界を感じることが多いです。日頃使うWindowsのクライアントソフト開発を考えてみましょう。Javaは開発効率が良いのですが、起動、実行速度が遅く、ユーザーに取ってはとても使いやすいとは言えません。

  このことについて以前から「JavaはC/C++という釈迦入来の手の中で暴れている孫悟空である」と思っています。つまり、いくら頑張ってもネイティブ(C/C++)の手の中で動いているだけであり、敵うことはないのです。この例えは自画自賛ではありますが、なかなか的を得ているのではないかと考えています。

 携帯電話の世界ではJavaによるアプリケーションが増えていますが、「なぜわざわざ非力なマシンの上で実行環境(JavaVM)上で動かすJavaである必要があるのか?」という疑問はいつも付きまといます。開発効率さえクリアできればC/C++の方が高速でかつ、 JavaVMという実行環境を乗せる必要がないので安価に製造できるのは明らかです。その意味では携帯電話の世界でもC/C++によるアプリケーションが増えれば携帯電話Javaも廃れるのではないかと考えています。
 世界最大の携帯電話機製造メーカーであるNokiaがJavaではなくC/C++アプリ開発者の増加を願っていることは何となく感じています。
 これらのことはPCにも当てはまります。多くの方が日頃から使うアプリケーションでJavaで開発されたものはほとんどありません。Java開発者の目から見てもJavaアプリケーションで日頃の作業をしたいとは考えていません。

 上記のことが理由でC#(.NET Framework)もJavaに似ている部分が多々あります。当然、各言語に得意不得意分野があるのは事実ですが、.NET FrameworkでもOSの深い部分の機能を実現しようとすると結局P/Invokeなどを使う必要があります。P/InvokeでWin32APIの深いところまで開発するとわかりますが、C/C++と値のやり取りをする際にC/C++の値型に合わせる必要があったり、C/C++で定義されている定数を使うにはC/C++のヘッダーファイルを見る必要があり、本当に複雑怪奇の世界に突入します。ここまで来ると「結局C/C++の方が良いのでは?」「C#、VB.NETにこだわる理由って一体何?」という限界に突き当たるはずです。
 次期WindowsのLonghornになれば.NET FrameworkがWin32 APIと互換になるらしいので多少ましにはなるとは思いますが、いつの話かわかりません。それに .NET FrameworkはほぼWindowsの世界なので他の環境ではあまり意味を持ちません。

 ちなみに、C/C++での開発もしていますが、Cで大規模開発をしたいとは思わないし、C++は言語仕様が複雑すぎます。(苦笑)
 やはり、ネイティブコードが生成でき、C/C++よりも開発効率の良いプログラミング言語が必要ですね。

ご意見、ご要望をこちらのアドレスまでお寄せください。
Copyright(C) 1997-2010 SkyArts.com. All Rights Reserved.