前述で、C言語欠点からのJavaというテーマで違いを比較しました。
しかし、だからと言って C言語を使う必要がなくなった! という訳ではありません。
Javaという言語は、JVM(Java Virtual Machine)で動作するため、この起動の時間で遅いという欠点があります。
また、JVMの仕様は、さまざまなOS(Operating System)の上で動作させるため、さまざまなOSの最大公約数の仕様になっています。
つまり、あるOS独特の機能を使おうとしても、Javaだけでは無理があります。
その場合は、Javaから例えばCで作成した関数を呼び出すようなことを行わなくてはなりません。
対してC言語の開発環境は、OSごとに異なるもので、一般にOSが提供する全てを使えるのが普通です。
(その場合は標準関数ではなく、OSが提供するAPI:Application Program Interface を呼び出す形式になります)
つまり、作成するソフトによって使い分ける時代になっています。
ソフトに高速性やその実行環境であるOSが指定され、開発時間に余裕があって、スキルを持つプログラマならC言語です。
うまく作れば、C言語で作成したものが最も速く動作できるでしょう。(アセンブラよりは遅いが、簡単にリンクできます)
しかし、バグがあると直すのが大変ですし、それを考えると、総合的にC言語の開発効率は悪いと言えます。
対して、JavaはC言語よりバグができ難い構造になっています。クラスファイルさえできれば、
JVMが動く環境で、どのOSでも動作できます。以前に作成したクラスの利用も容易です。
既存のクラスを利用することで、短い時間で作品が作れる言語と言えます。
(クラスが自由に利用できればですが・・・)