ここから本文です

JAVAエンジニアについて。 JAVAエンジニアについて調べているのですが、 「パ...

アバター

ID非公開さん

2019/4/1017:26:45

JAVAエンジニアについて。

JAVAエンジニアについて調べているのですが、
「パソコンのプラットフォームに依存せずに動作する」というところが
ピンときていません。

(Java仮想マシン)

他の言語はパソコンのプラットフォームに依存しているのでしょうか?
自分はPHPやC#を勉強しています。

具体的な例などあったら教えていただけますでしょうか。

よろしくお願いいたします。

閲覧数:
77
回答数:
6

違反報告

ベストアンサーに選ばれた回答

さん

2019/4/1017:52:03

Java仮想マシンは、あなたが書いたJavaのコードをOSが知るためのネイティブコードに変えてくれる。翻訳機のようなもの。

ここまでOK?

で、Java仮想マシンは自分自身を入れているOSが何かを知っている訳だ。
WindowsならWindowsに分かるようなネイティブコードにしてくれて、
LinuxならLinux,MacならMacのネイティブコードに変えてくれる。

だから「パソコンのプラットフォームに依存せずに動作する」。

他の言語はJava仮想マシンみたいなOSに応じて翻訳してくれる代物は基本的にいなくて、書いたコードを直接特定のOSのネイティブコードに翻訳する。
Windowsのネイティブコードに変換しちゃったら、そのプログラムはWindowsでしか動かない。

で、翻訳機がある言語は大きなカテゴリでコンパイラ言語っていう。JavaとかC#とかのことね。コンパイラ言語はコンパイラが特定のOSでしか動作しなければ、他のOSでは動かせない。

PHPやJavascriptは、ブラウザ上で動作する言語だからまた話は別。
強いて言えばブラウザを開けるOSなら何でも動く。

つまり、ブラウザ上で動作する言語は「パソコンのプラットフォームに依存せずに動作する」が「ブラウザに依存して動作する」。

具体例を求めるようだけど、知識が無い状態では一言で片付くような魔法の言葉は存在しない。なので、コンピュータ科学(計算機科学)を勉強しよう。例えばこういう本とか読もう。
https://www.amazon.co.jp/dp/4822283151/

Javaだけに限らず「一般的なプログラムはどうやって動いているのか」みたいなもう少し広くて基本的な内容を知ると知見が広まる。

  • さん

    2019/4/1017:53:32

    >コンパイラが特定のOSでしか動作しなければ、

    コンパイラっていうのの説明が抜けていたけど、先の説明に挙げた翻訳機のことね。

    書いたコードをネイティブコードに変換してくれる特殊なプログラムと考えれば良い。

  • その他の返信(4件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

アバター

質問した人からのコメント

2019/4/16 18:26:10

みなさまご回答ありがとうございました!
お陰様でだいぶ理解できました。
ベストアンサーは最初にご回答いただいた方に。
ありがとうございました。

ベストアンサー以外の回答

1〜5件/5件中

並び替え:回答日時の
新しい順
|古い順

bas********さん

2019/4/1414:06:53

Javaは厳密にはOS依存がないっていうより、長い目で見ると...っていう感じですね。

これ( https://teratail.com/questions/184040#reply-273773 ) のBeatStar ってあるところを根拠として、

Java.exe がMain.classやそれ以外のクラスパスから解釈して処理する。

だから、Java.exe が読める言語ならなんでもいいのです。

人間向けのJavaで書いて、Javac.exe が『中間言語』と呼ばれる言語に変換。これをコンパイルという。

ある意味、Java用の暗号って感じ?

そして、Java.exe で起動するときにそのOSの種類をJava.exe が調べ、そのOSごとの解釈にする。

だから、『どのOSで書いても一緒になる。よってOS依存度はほぼゼロである』と言われるのです。

meigr01さん

2019/4/1018:48:44

JAVAがプラットホームに依存しないのは、その差を吸収するjava.VM(Java仮想マシン)を介在させているからです。
詳しくは、下記を見てください。
https://wa3.i-3-i.info/word12705.html

.さん

2019/4/1018:15:21

>「パソコンのプラットフォームに依存せずに動作する」というところが
>ピンときていません。

JAVAは”1度作ればどこでも動く”というのがウリです
だからネット上で普及した

パソコンでも動く
ゲーム機でも動く
テレビ上でも動く
スマホでも動く
タブレットでも動く
UNIXでも動く
LINUXでも動く
家電製品の中でも動く

PHPで作ったものはネットのブラウザ上でしか動かない
C#で作ったものはパソコン(ウインドウズ)だけでしか動かない(最近は少し違うが)

しかしJAVAはどこでも動くのが最大の武器

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

プロフィール画像

カテゴリマスター

原沢信道さん

2019/4/1018:08:04

JavaはJavaVM上で動いているので、そのプラットホーム用のJavaVMが有れば実行プログラムをそのまま動かす事も出来る訳です。C#も.NET FrameworkやMONO上で動いているので、Javaと同じです。又、PHP等のスクリプト言語も、そのプラットホーム上で動くインタプリタソフト上で動くので、こちらはソースプログラムがそのまま動きます。ただし、OSの仕様の違う部分は対応していることが前提です。

プロフィール画像

カテゴリマスター

あみやさん

2019/4/1017:56:38

Javaがプラットフォームに依存しないというのは、Javaという言語そのものの話では無く
Javaというプログラムの実行環境の話です。

一般的に、各環境(機種やOS等)に固有のコード(ネイティブコード)を生成するものは、環境に依存します。
JavaやC#は、その上に仮想の実行環境を重ねる事で、その下の環境には依存しません。
また、phpやjavascriptのようなスクリプト言語もまた、
それを解釈して実行するソフト(ブラウザやサーバー等)を用意することで、
やはりその下のOS等には依存しません。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる