質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

5回答

4150閲覧

JAVAの「Write once, run anywhere」って大体の言語がそうなのでは?

退会済みユーザー

退会済みユーザー

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

2グッド

0クリップ

投稿2018/07/12 21:52

Pythonで書かれたプログラムはPythonのある環境で動きますし、Cで書かれたプログラムはCのある環境で動くのでは?
JAVAだけ強調されてるのは何故ですか?

Q10, yohhoy👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

もともと Java が登場する前は、C/C++ が主流でした。
Java の「Write once, run anywhere」は、まさに C/C++ に対するアドバンテージとして喧伝されたものです。

C/C++ はコンパイルにより、機械語に変換された状態で提供され、実行されます。つまり環境に強く依存するのであり、別環境に持っていくにはその環境に合わせてビルド(コンパイル・リンク)する必要があります。
※当時でも IBM 360 シリーズのように、ハードウェアが(CPUアーキテクチャレベルで)異なっても同じプログラムが動く環境はあるにはありました
Java はそこに、「コンパイルは一度だけ、できたものはどこでも動かせる(Java Runtime さえあれば)」という世界を提示したのです。

もっとも、このために Java Runtime を経由する分、速度面で不利になります。特に初期の Java Runtime は、コンパイルではなくインタプリタ(Javaマシンのエミュレーション)だったので、非常に遅かったです。
Java が実用的になったのは、Just In Time コンパイルにより、実行中に機械語に変換することで速度面で遜色がなくなってからです。

投稿2018/07/12 23:55

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

コンパイラが生成したバイナリがどこでも動く。
コンパイラ:javacが吐いたバイナリ:~.classは(原則)マシン/OSに依存しない。

Cなんかだとマシン/OSに依存したバイナリを吐くため、たとえばLinux/gccでコンパイルしたものはWindowsでは動かない。

投稿2018/07/12 22:12

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/07/13 07:03

>コンパイラが生成したバイナリがどこでも動く。 これってメリットなんでしょうか。 Cなんかには大体コンパイラ、クロスコンパイラがあるでしょうしJAVAだって特定のマシン/OS用のJVMがないと動かせないわけですよね。 だったらC,C++でもいいんじゃないかという気がします。
euledge

2018/07/13 07:11

今は、仮想環境やクラウドの環境が充実していますし、開発時にも複数のOS環境で開発することが簡単に出来ますが、昔は開発環境のOSというと決まったものしかなくて、おそらく今の開発者が想像できないくらいコンパイルするということにコストがかかっていたのではないかと思います。そういう環境の前提で提唱された当時は夢のようなことだったのでしょうね。
episteme

2018/07/13 09:47

デバッグに実機を必要としないのは大きなメリットですよ。
guest

0

解決済みのようですが。一応。

Javを作ったのは、UNIX屋であるSunです。
UNIXは主にサーバーで使われている、元々機種に依存し難い世界でしたが、
CPUの違いやらライブラリの差異を吸収する為に、それぞれの環境でコンパイルし直していました。
なので、C/C++への対抗で「Write once, run anywhere」とSunが宣伝していただけのものです。

ただ、当たり前ですが、クライアント系環境なぞは違いがありまくりの世界ですから、そんな訳はありません。
無理にやろうとしたら、PCでも携帯でもどこでも使える機能しか出来ません。
同じデスクトップPCでもWindows, Linux, Macで色々差異があるので、
どの環境でも動くようにすると、それぞれの環境特有の機能が使えない、数段使えないアプリにしかなりません。

ちなみに、この「Write once, run anywhere」に騙された有名どころがジャストシステムです。
ワープロで最大シェアを誇っていたのに、全てをJavaで書き直す!なんて言い出して、
結局、テキストエディタに毛が生えた程度のものしか作れず、
騙されたと気づいた時には、マイクロソフトに市場を奪われた後でした。

投稿2018/07/14 07:54

編集2018/07/14 07:55
aquaS

総合スコア191

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

PHP,Perl,Ruby,Pythonなどはコンパイル言語ではないのでソースコードさえあれば動きますが、Javaの「Write once, run anywhere」はコンパイル言語(おそらくその当時の言語としては C言語)に対してのプロパガンダだと思いますよ。

投稿2018/07/12 23:26

euledge

総合スコア2404

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

これは、動作コンピュータごとのコンパイルが不要という意味です。

投稿2018/07/12 23:04

HogeAnimalLover

総合スコア4830

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問