[40764]  DOSプロンプトでコンパイル
投稿者:ターン さん   2002-04-27 01:11:38
ちょっと気になったので、確認させてください。

急にJavaがやりたくなったので、サンマイクロシステムズ社のサイトからJ2SDK1.4を
DLしてインストールしました。
標準のコンパイラは、DOSプロンプトから実行する形式なのですが、私の山猫+Win98で
問題なく「HellowWorld!」(笑)をコンパイル、実行することに成功しました。

で、気になったことなのですが、DOSプロンプトでPC‐98とAT機の環境が違うのは、
16ビットコードのプログラムだけで、32ビットコードのプログラムに関しては、
両者の違いを気にする必要はない、ということなのでしょうか?
それとも、今回うまく行ったのは、コンパイラがプロセッサ命令しか使用していない
(LHAのように)からでしょうか?

この先、安心してJavaを使っていきたいので、どなたか教えてください。
  1. ターン さん   2002-04-27 01:12:37
    これって、Windows掲示板向けのスレッドだったかもしれませんね。
    すみません。
  2. BlackBox さん   2002-04-27 08:40:40
    簡単に書くと、PC-98やPC/AT互換機のハードウェア環境に依存するプログラムなら実行環境を選びますし、そうでなければどっちでも使えます
    32bit、16bitの区別はあまり関係ありません
    JavaのプログラムはMS-DOSのプログラムとはかなり異なる形で実行されているので、Javaをやるなら調べてみるといいですよ
  3. ターン さん   2002-04-27 09:15:54
    ええと、コンパイルに使用するコマンド、javac.exeは、Javaの実行環境であるJREとは別の
    フォルダにインストールされているものでして、ファイルのプロパティを見てもDOSアプリのPIF編集画面を呼び出さなかったので、「Win32APIにもとづくプログラムではないか?」と考えた次第です。コマンドベースのWin32アプリって、見たことなかったので。

    私は、他のコンパイラ(C++など)を98上で動かしたことはないのですが、他のコンパイラの場合も、プロンプトから実行するのが一般的なのでしょうか?
  4. まりも さん   2002-04-27 09:36:37
    >コマンドベースのWin32アプリ
    意外なところで、xcopy32.exe (Win9x)なんかがありますよ〜。

    >プロンプトから実行するのが一般的なのでしょうか?
    通常は統合環境で扱うのが普通ですから、一般的とは言い難いですが、可能なようにはなっていますね、たいてい。
    私も、Win32 console アプリは、VC++でコマンドラインコンパイルしてます。
  5. DEN_EI さん   2002-04-27 18:38:51
    >で、気になったことなのですが、DOSプロンプトでPC‐98とAT機の環境が違うのは、
    >16ビットコードのプログラムだけで、32ビットコードのプログラムに関しては、
    >両者の違いを気にする必要はない、ということなのでしょうか?
    もう既にある程度は解決しているようなので、補足です。
    ご存知のようにjavac.exeは、直接実行コード(exeなど)を生成するのではなく、
    *.classファイルのような中間コードを生成するのみです。
    #そして、この後別途java.exeでJavaVMをコールして生成したclassを実行するわけですね。

    そのためこの場合実行環境はJavaVM上ですので、JavaVMが違えば
    動作も(性能など)微妙に変わる可能性がありますが、PC‐98とAT機と言った違いを気にする必要はありません。

    また、JavaコンパイラはJDK標準のjavac.exeだけという訳では有りません(IBMのJikes等)ので、
    コンパイラが違えば(中間コードも多少変わってくるので)、実行時の動作が
    (やはり性能等)微妙に変わる可能性がありますね。
  6. ターン さん   2002-04-27 21:59:48
    みなさん、ありがとうございます。

    Javaの名前が出てきたので、「Javaで生成されるコード」の話と混ざってしまったようですね。
    私が書いたのは、純粋にexeやcomなどのマイクロソフト型(?)実行ファイルが、98とAT互換機とで、どういった段階まで互換性があるのか、という点に関してです。
    言葉足らずだったようで、申し訳ありません。
    UNIXではコマンドベースのアプリが現役なのに、新しいWin用のアプリで目にするのは、市販のものもオンラインのものも、GUIベースで作られているものばかりなため、Win32では、コマンドベースの環境に、何か制約でもあるのか、と感じてしまいます。
    そのため、DOSの時代同様に、Win32でもコマンド実行アプリは機種依存性が強いのだろうか?と考えてしまったため、今回の質問になりました。

    私は、HTMLの記述もタグをワープロで手入力するタイプなので、Javaのコンパイルも統合環境を使うより、コマンドスタイルで行うのが性にあってる気がします。
    ちなみに、開発の目的は、WindowsCEで動作するJavaのゲームだったりします。

    どうも、ありがとうございました。
  7. K.Takata さん   2002-04-28 00:34:02
    Windows におけるコンソールアプリと、GUI アプリの違いは、実は、アプリの実行開始時にコンソールが割り当てられるか、そうでないかの違いしかありません。コンソールアプリからウィンドウを開いたりすることも可能です。(わざわざウィンドウを開かずとも DOS 窓にグラフィックを描いたりもできますが・・・どうでもいいですね。)

    > Win32では、コマンドベースの環境に、何か制約でもあるのか、
    コマンドラインシェルの機能が UNIX 系に比べるとずいぶん劣っていますからね。まあ、Win2k になってからはファイル名の補完機能が使えるようになったりして、少しは改善されているようですが。

    > コマンドベースのWin32アプリ
    各社の C/C++ コンパイラは本体はほとんどがコンソールアプリではないでしょうか。

    > DOSの時代同様に、Win32でもコマンド実行アプリは機種依存性が強いのだろうか?
    DOS だとグラフィックなどを扱わない CUI アプリの方が機種依存度が低いでしょう。
  8. ターン さん   2002-04-29 02:16:48
    > コマンドラインシェルの機能が UNIX 系に比べるとずいぶん劣っていますからね。
    Win9x系だと、GUIを立ち上げないDOSモードで、まったくWin32アプリの実行ができないってのも、ある意味問題ですよね。せめて長いファイル名ぐらいは扱えるようにしてほしいです。

    MS-DOSアプリケーションとの互換性を保つためには、しかたないのかな?
  9. K.Takata さん   2002-04-29 12:56:21
    > せめて長いファイル名ぐらいは扱えるようにしてほしいです。
    かなり強引な方法ですが、無いわけではありません。(^^;;;
    http://member.nifty.ne.jp/k-takata/mysoft/lfndos.html
    Win32 コンソールアプリは動きませんが。