組み込みエンジニアに必要なこと
JavaVMを動作させるということは、リアルタイムOS上に仮想OSを構築するよなものであるので、リアルタイムOS上に直接実装したアプリケーションに比べて処理速度はどうしても遅くなる。しかしながら、機器のCPUはより高速化しつつあり、事務機器などではすでに十分な速度になってきている。
差別化を実現するためには、CPUも含めて高速化を図らなければならなくなってきているため、動作が遅くなることはあまり問題にならなくなってきている。また、リアルタイム部とアプリケーション部の整理によって冗長的なアプリケーションをJava上で展開するなど、問題を回避もしくは軽減する方法はデファクトがあるわけではないため、組み込みエンジニアの腕によって性能が左右される。
単純なアーキテクチャはファーム上にアプリケーションとして移植するものである。ただし、この方法は上記のように処理速度の単純低下を招く。もっとも単純に性能を引き上げるのは、制御を行うファームウェア用CPUとアプリケーション動作のCPUを併存させることである。実際は、これら2つのアプローチを両極として、原価面をふまえて構成することになる。
このように、リアルタイムOSのポーティングに比べてエンジニアが調整できる範囲の広い分野でもある。だからといって、すぐに導入というのは難しい面もある。その中でも問題大部分を占めるのは言語の違いによる対応であろう。組み込み技術者は、利用する言語はC/C++がほとんどというより、これしかないとと言っても差し支えないぐらいである。しかしC/C++の技術者にとってJava言語は一般的にわかりにくい言語である。
言語の違い云々を細かく述べるつもりはないが、C/C++がシーケンシャルなプログラミング構造を持つのに対して、イベント駆動型でオブジェクト指向のJava言語は、その言語を理解し、コーディングできるまでに時間がかかる。
特に機器開発では、時間をたっぷりかける、というわけにはいかないため、新たな言語を覚えることは実務的に困難であるといえる。しかし、Java技術者は、現在の組み込み現場にいないだけで、Webアプリや携帯アプリなどに非常に多くの技術者がいる。ここで組み込みJavaを導入するメリットが生きてくる。すなわち、組み込みであってもWebアプリなどと変わらない開発が行えるため、ハードウェアに対する理解が少なくても、これら異なる分野のエンジニアが共同で開発を行うことが可能になる。
人件費は機器開発の上でを抑える必要の高いコストだが、生産性・メンテナンス・再利用性の高いJavaを利用し、また技術者を導入することは長期的に見て明らかなコスト削減を生み出す。
無駄のない開発と適材適所な要員配置を行うために組み込み機器にこそJavaが必要なってきたと言っても差し支えは無いだろう。