組み込み系にJavaを採用する理由とは?メリットやデメリット
- システム
エンジニア - 組み込み系とはどのようなシステムのことなのでしょうか。
- プロジェクト
マネージャー - ハードウエアにソフトウエアを組み込んだシステムです。
組み込み系とは?
組み込み系とは、ハードウエアにソフトウエアを組み込んだシステムです。実は組み込み系のシステムは、私たちの身近に存在しています。例えば、スマートフォンや携帯電話、家電製品、自動車、工場の機械などは、すべて組み込み系システムです。
近年の通信技術の発達により、組込み系システムの中でもインターネットと接続し遠隔操作などが可能なものも出てきました。今後さらに組み込み系システムの需要が増えていくと考えられます。
組み込み系で使われる言語は?
組み込み系システムで使われる言語は、C、C++、C#、Java、アセンブラなどがあります。この中で主流なのがCとC++になります。CとC++は、シビアなタイミング制御や少ないメモリを効率よく使うといったことが得意なので、組み込み系システムで広く使われています。
しかし現在ではハードウエアのCPU性能の向上やメモリの大容量化に伴い、シビアな制御が不要になり、開発しやすいJavaが組み込み系システムで採用されてきています。
Javaとは?
Javaは1990年代にアメリカのSun Microsystems社がCやC++をベースにして開発した言語です。現在ではGoogleの3大開発言語の中にも含まれています。(Googleの3大開発言語:Java、C++、Python)
Javaは基本的にはどんな環境でも使用できるところが特徴です。Web開発やアプリケーション開発、組み込み系開発など、さまざまな開発環境で使用することができます。
Javaの起動方法
Javaを起動する大まかな流れは次の通りです。
1.ソースプログラム作成
2.コンパイルしてクラスファイルを作成
3.クラスファイルの実行(Javaプログラムが起動する)
Javaのコンパイラやクラスファイルを実行する際に必要なjavaコマンドは、JDK(java Development Kit)をインストールすると使用することができます。
1.ソースプログラム作成
Javaのソースプログラムの拡張子は「java」です。例えば、”Test.java”というファイルを作成し、ファイルにプログラムを記入してプログラミングします。
簡単なプログラムを例にすると、「Why not」と表示されるプログラムは以下の通りです。
1
2
3
4
5
|
class Test{
public static void main(String[] args){
System.out.println("Why not");
}
}
|
2.コンパイルしてクラスファイルを作成
プログラミングした”Test.java”をJava仮想マシンで実行できる内容に変換するのがコンパイルという行為です。コンパイルはコマンドプロンプトで”Test.java”のある場所に移動し、「javac」コマンドを入力することで実行できます。
例えば、”Test.java”をコンパイルする場合のコマンドは以下のようにします。
1
|
javac Test.java
|
3.クラスファイルの実行
コンパイルが正常完了すると、”Test.class”が生成されています。この”Test.class”のことをクラスファイルと言います。クラスファイルの実行は「java」コマンドを使用します。
例えば、”Test.class”を実行する場合のコマンドは以下のとおりです。
1
|
java Test
|
「java」コマンドでは拡張子(.javaや.class)は指定せず、”Test”のみになることに注意してください。
組み込み系システムにJavaを採用する
当初はJavaは組み込み系システム開発には不向きと言われていました。なぜなら、Javaは動作速度が遅くメモリ消費が大きいためです。組み込み系システムはシビアなタイミング制御や少ないメモリで効率よく動作させる必要があります。
しかし、ハードウエアのCPU性能向上やメモリ容量の増大により、Javaが使用できる環境が整ってくると、Javaの特徴である高いセキュリティやマルチプラットフォームが利用できるため、Javaが採用されるようになってきました。
その特徴を次に説明します。
高いセキュリティ
Javaは元々セキュリティを考慮した仕様となっており、第三者が作成したアプリケーションを安全に実行することができます。
Javaは仮想マシンでアプリケーションを実行するため、システム内のアクセスしてはいけないメモリ領域にアクセスできないような仕組みになっています。したがって、意図的にシステムダウンを引き起こしたり、重要データを読み出したりすることができないようになっています。
マルチプラットフォーム
マルチプラットフォームとは、ある1つのアプリケーションを複数の異なる機種やOSで同じように動作させられることです。
Javaで作成したアプリケーションはマルチプラットフォームです。さまざまなハードウエアやOSが使用されている組込み系システムで、同一のアプリケーションを動作させることができます。そのため、アプリケーション開発の低コスト化、短納期化が実現できるようになります。
開発時の生産性が高い
Javaにはソフトウエア開発の生産性を向上させるため、さまざまな工夫がなされています。例えば、CやC++で使うポインタの仕様が排除されていたり、ガーベージコレクタでメモリ解放を自動化していたり、Missの少ない生産性の高いプログラミングができるようになっています。
Javaが急速に普及した理由は、この「開発時の生産性が高い」という特徴のためです。
Javaを採用するメリットとデメリット
組み込み系システムのCPU性能の向上やメモリ容量の増大により、組み込み系システムでJavaが採用されるようになってきていますが、「動作速度が遅い」、「メモリ消費が大きい」などのデメリットが解消されたわけではありません。
ここでは、Javaを採用するメリットとデメリットについて説明します。
Javaを採用するメリット
Javaを採用するメリットは先ほどご紹介した「高いセキュリティ」、「マルチプラットフォーム」、「開発時の生産性が高い」という点です。
Javaは生産性を考慮して設計された言語なので、再利用性が高いアプリケーションを作成するのに適しています。企業情報システム分野でJavaがよく利用されているのは、この生産性の高さが理由です。
Javaを採用するデメリット
Javaを採用するデメリットは、やはり「動作速度が遅い」、「メモリ消費が大きい」という点です。ただ、Java登場時と比べると、JIT(Just In Time)コンパイラなど、高速化技術が取り入れられ、技術的な課題が解消されつつあります。
この高速化技術とハードウエアの性能向上より、現在ではJavaのデメリットは薄れてきています。
Javaの懸念事項
デメリットではないですが、組み込み系システムにJavaを採用する場合、懸念事項があります。それは「Java APIの標準化」が進んでいないということです。Java APIとは、ハードウエアとアプリケーションのインターフェース部分を担うプログラムのことです。
現在では特定の分野、例えば、携帯電話やカメラなどは、Java APIの標準化は進んでいますが、その他の分野では、ハードウエアごとに作成しているので、「Java APIの標準化」が今後の課題となります。
Javaの組み込み系システム事例
Javaが組み込み系システムに使われるようになってきましたが、どのような事例があるのかご紹介します。
1つ目の事例は、Blu-rayプレーヤーです。Javaは「Blu-ray Disk ROM」を再生するBlu-rayプレーヤーに使われています。「Blu-ray Disk ROM」の中には映像だけでなく、Javaアプリケーションも記録されています。
2つ目の事例は、NTTドコモの携帯電話です。携帯電話にJavaを使用することで、アプリケーションをダウンロードするという方法が生まれました。
- システム
エンジニア - 組み込み系にJavaを採用する理由やメリットやデメリットがよく分かりました。
- プロジェクト
マネージャー - 将来は組み込み系システムの需要が高くなると予想されています。この機会にぜひ組み込み系システムへの理解を深めておきましょう。
Javaの組み込み系システムの将来性は?
「IoT(=Internet of Things)」という言葉が指すように、今後は身の回りのあらゆるモノがインターネットにつながるようになってきます。そうなると、組み込み系システムの需要が高まり、ますます生産性の高さが重要になってきます。
そのため、組み込み系システム開発にJavaの採用がどんどん広がってくるので、この機会に組み込み系Javaへの理解を深めておきましょう。
FEnetJava・Javaコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
Java新着案件New Job
-
官公庁向け業務システム開発/Java/東京都千代田区/【WEB面談可】/テレワーク
月給39万~44万円東京都千代田区(永田町駅) -
販売管理システム開発/Java/東京都中央区/【WEB面談可】/テレワーク
月給49万~55万円東京都中央区(京橋駅) -
生命保険会社向けシステム開発/Java/東京都千代田区/【WEB面談可】/テレワーク
月給42万~48万円東京都千代田区(大手町駅) -
社会保険システムのパッケージ開発/Java/東京都港区/【WEB面談可】/テレワーク
月給42万~48万円東京都港区(新橋駅) -
金融機関向けシステム更改/Java/東京都江東区/【WEB面談可】/テレワーク
月給46万~51万円東京都江東区(豊洲駅) -
大手通信会社者向けWebシステム改修/Java/東京都港区/【WEB面談可】/テレワーク
月給42万~48万円東京都港区(品川駅)