• 締切済み

何故Javaではなく、C/C++なのか

C++とJavaならJavaのほうがわかりやすくて好きという人が多いと聞きましたが、では何故、世の中の多くのソフトウェア、システムはCで書かれてるんですか?

みんなの回答

  • isle
  • ベストアンサー率51% (77/150)
回答No.10

Javaの仮想マシンはC/C++で作られています。 あとネイティブメソッドの実装コードとか。 環境に依存した処理を共通化するための仮想マシンをJavaで作ることはできません。 Javaで環境に依存したコードが書けることはJavaの思想と矛盾するので、Javaで何でもできるようには絶対にならないはずです。 SWTもネイティブコンパイラもJavaだけでは成り立たないものです。

  • maguro999
  • ベストアンサー率21% (59/273)
回答No.9

気がつかないけどJavaなソフトはあるかもね。 IDEとして有名なeclipseはJavaで作られています。 見た目もJavアプリっぽくないですよね。 それは特有の互換性はちょっと薄れますがSWTという各OS毎に GUIがネイティブ動作するものが利用さています。 また最近はまだ完全とはいえないようですけどJavaのネイティブコンパイラ もあります。(gcj)

  • MrBan
  • ベストアンサー率53% (331/615)
回答No.8

> 20世紀の間違いですよね。 御意。申し訳ない…orz

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.7

> # 19世紀のうちには既にれっきとした言語標準になってました。 20世紀の間違いですよね。 # さすがに明治には、STLはおろか、コンピュータさえ存在しません。

  • don_go
  • ベストアンサー率31% (336/1059)
回答No.6

言語にはそれぞれ得手不得手があります。 Javaは実行環境としてのOSとJVMを必要として、それら のバージョンに依存する場合がありますが、Webアプリ 等を短期で開発する事ができます。 また実行環境を統一させる事が容易にできる為、自社 内で使用する業務アプリの開発にも使用されます C/C++は制御機器開発用のコンパイラを始め、各種OS やハードウエア、開発・実行環境等々の目的に応じた コンパイラが多数出されている事とランタイムやOSを 必要としないプログラム(OS自身も含め)も作成できる ので適用範囲が広くなります。 市販のユーティリティソフトは実行環境のOS、バージ ョン等が特定できない事が多いので環境に依存しない 様にC/C++で作成される場合が多くなります。

  • MrBan
  • ベストアンサー率53% (331/615)
回答No.5

人間の作るものなんてそうそう完璧にはならないわけで、 たいがいの選択にはトレードオフが存在します。 他の方も書かれているように、 Javaは比較的お手軽な分かりやすい路線を選択したために、 いくつか犠牲にしているものもあります。 逆にC++は、取っ付き難く難解な面があるかわりに、 Java以上に細やかな制御が可能で、 結構そういうことが必要だったりもします。 アプリはJavaでミドルはC++なんて組み合わせもままあります。 JavaでできてC++でできないことは理屈としてはありませんが、 C++でできても(VM上の)Javaでは決してできないこともありますから、 そういうケースでは全部Javaってのは現状ありえません。 少なくとも私自身はJavaもC++も使います。 それ以外でも、一般配布だとVMが必要なのがPC上でJavaが 敬遠される大きな理由だと思いますが…。 # STLはStandard template library(標準テンプレートライブラリ)の略、 # 19世紀のうちには既にれっきとした言語標準になってました。 # ただまぁ、初期の頃に処理系の標準準拠度が低かったりしたため、 # 現在に至るもSTLを使わせてくれないお偉いさんや、 # その結果まともにSTLを使ったことのない開発者がいるだけです…。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.4

Windows アプリケーションなら、MFC があるので C/C++ となるでしょう。 最近は .NET Framework があるので C# とかかも知れませんが。

回答No.3

平均的になべて言えば(世の中で作られたJavaベースのシステムとCベースのシステムを比べて平均したら)、Cの方が早いからです。 ※というとjavaをばかにしているように見えるけど、私はjavaも使います。 何でも得手不得手というのがありますが、プログラミング言語にも勿論あります。 javaの方が表面的には入門しやすいでしょう。他の方がかかれている回答もご参考ください。但しあくまで表面的で、まともな仕組みを作るのなら、Cでやってもjavaでやっても、得手不得手はあります。 「世の中の多くの」と言われるところはjavaに比べてcの方が歴史が古いので、必然的に多くなるという事に関しては同意できますが、これから先はそうだとはいえませんよ。javaの仕組みもたくさんあります。

回答No.2

Javaの場合、ランタイムが必ず必要だからでしょう。 C++ならばネイティブなコードですから、基本的にはそのまま動作しますし、その分高速です。Javaの場合は中間コードですので、若干動作速度は低下します。 生成されたバイナリが直接そのマシンで動作しないというのは、やはりちょっと気持ち悪いです。 普段はJavaでコーディングしていることが多いですが メモリ制御をアプリに渡さないJavaのGCが嫌いです。 あとデストラクタがないのも気に入らないです。

回答No.1

Cも多いですが、Javaも多いです。 Javaはグラフィック描画やウィンドウ作成などを標準でサポートしている のに対して、CやC++は外部のライブラリ(WindowsAPIなど)などがな いと簡単な図形の描画すらできません。 一般にJavaが初心者にやさしいと言われるのはこの点についてです。 Cで書かれている理由は実行速度を優先していたり、過去のバージョンの ソフトがCだったから惰性でCを選んでいたりなどが理由でしょう。 あるいは組み込みなどC++やJavaが使えない環境なのかもしれません。 Javaも昔に比べて今は実行速度が飛躍的に向上しているので Cに負けないくらい世の中のソフト開発に使われていますよ。 ただ、C++は標準ではJavaより機能が少ないのですが、 STLという近年標準装備化が進められているライブラリを使うことで Java以上に強力なコードを書くことができるようになると言われています (あくまで一般論ですが・・) Javaもネットワークの制御が比較的楽にできるなどの利点がありますし、 CもJavaも今後ずっと安泰な言語には変わりは無いと思います。 以上、間違いはあるかもしれませんが、お役に立てればと思い書かせていただきました。

関連するQ&A