コンパイルしてからの実行の流れ?JavacとJavaの違いについて

コマンドプロンプトでjavac、javaって入れてバージョンを確認する流れ。2つの違いがいまいちわからないと思って調べたのよ。

Javaプログラミング超入門講座 – Java 8 対応(2) Javaの開発環境のセットアップと動作確認をしてみよう | マイナビニュース

そしたら「javacはソースファイルをコンパイルするコマンド、javaはクラスファイルを実行するコマンドです。」って書いてた。

要はコンパイル環境は「javac」というのはコンパイラことで。コンパイラがあれば、人間が書いたソースコードを翻訳して、電気的な信号が回路を流れて処理するコンピュータが実行できるようになるのね。コンパイルが成功すれば○○.classというファイルができる。
実行環境はJRE(J2SE Runtime Environment)のことで、ある教材には「全てのJavaプログラムの実行環境および開発環境の基本部分を提供し、基本的なクライアント/サーバーシステムやスタンドアロンシステムで構築できる」みたいな説明がされてるから、実行環境があればJavaのアプリケーションを作成して実行できる、と解釈できるな。

軽くコンパイラ環境と実行環境の違いを把握したところで、JDKっていう、アプレットとかアプリケーションを開発するのに必要なコンパイラとかデバッガが入ってる開発ツールをインストールして、Javaの学習を進めた。(これを入れるとJREも入るとか、ふーん)
インストール先は「C:\Program Files\Java\jdk-9.0.4\だったけど…。Java(TM)SE Development Kit 9.0.4(64-bit)を入れる際、機能の説明欄に「JavaFX SDK、プライベートJREおよびJava Mission Controlツール・スイートを含むJava(TM) SE Development Kit 9.0.4(64-bit)。ハード・ドライブに180MB必要です。」と書かれてた。どんな機能かいまいちイメージ湧かんけど…インストールしてる時に「3 Billion Devices Run Java」って、めっちゃアピールしてた。30億、すごいね。

あれ、カスタムセットアップの画面では「C:\Program Files\Java\jdk-9.0.4」になってるな。

そんでJDKってのをただインストールするだけじゃダメで、コンピュータがJavaの開発環境を認識するためにコンピュータの環境変数を設定しないといけないらしい。環境変数って何?すごい面倒臭いな…。Windows10だと、

コントロール パネル→システムとセキュリティ→システム→システムの詳細設定

と、奥深く進んでいくとようやく「環境変数」のボタンが出てきて、ウインドウが出てきたわ‥‥。変数名は任意の名前、変数値には「C:\Program Files\Java\jdk-9.0.4」って入れた。
コマンドプロンプトに「java」って入れたら、変なメッセージがいっぱい出てきた。

C:\Users\●●●●●●>java
使用方法: java [options] <mainclass> [args…]
(クラスを実行する場合)
または java [options] -jar <jarfile> [args…]
(jarファイルを実行する場合)
または java [options] -m <module>[/<mainclass>] [args…]
java [options] –module <module>[/<mainclass>] [args…]
(モジュールのメイン・クラスを実行する場合)

メイン・クラス-jar <jarfile>、-mまたは–module
<module>/<mainclass>に続く引数は、メイン・クラスへの引数として渡されます。

オプションは次のとおりです:

-d32 推奨されていません。今後のリリースで削除される予定です
-d64 推奨されていません。今後のリリースで削除される予定です
-cp <ディレクトリおよびzip/jarファイルのクラス検索パス>
-classpath <ディレクトリおよびzip/jarファイルのクラス検索パス>
–class-path <ディレクトリおよびzip/jarファイルのクラス検索パス>
;区切りリスト(ディレクトリ、JARアーカイブ、
ZIPアーカイブ)で、クラス・ファイルの検索用。
-p <module path>
–module-path <module path>…
ディレクトリの;区切りリスト、各ディレクトリ
はモジュールのディレクトリです。
–upgrade-module-path <module path>…
ディレクトリの;区切りリスト、各ディレクトリ
は、ランタイム・イメージ内のアップグレード可能な
モジュールを置換するモジュールのディレクトリです
–add-modules <module name>[,<module name>…]
初期モジュールに加えて解決するルート・モジュール。
<module name>には次も指定できます: ALL-DEFAULT、ALL-SYSTEM、
ALL-MODULE-PATH.
–list-modules
参照可能なモジュールをリストし終了します
-d <module name>
–describe-module <module name>
モジュールを説明し終了します
–dry-run VMを作成しメイン・クラスをロードしますが、メイン・メソッドは実行しません。
–dry-runオプションは、次の検証に役立つ場合があります:
モジュール・システム構成などのコマンド行オプション。
–validate-modules
すべてのモジュールを検証し終了します
–validate-modulesオプションは、次の検索に役立つ場合があります:
モジュール・パス上のモジュールでの競合およびその他のエラー。
-D<name>=<value>
システム・プロパティを設定します
-verbose:[class|module|gc|jni]
詳細出力を有効にします
-version 製品バージョンをエラー・ストリームに出力して終了します
–version 製品バージョンを出力ストリームに出力して終了します
-showversion 製品バージョンをエラー・ストリームに出力して続行します
–show-version
製品バージョンを出力ストリームに出力して続行します
–show-module-resolution
起動時にモジュール解決出力を表示します
-? -h -help
このヘルプ・メッセージをエラー・ストリームに出力します
–help このヘルプ・メッセージを出力ストリームに出力します
-X 追加オプションのヘルプをエラー・ストリームに出力します
–help-extra 追加オプションのヘルプを出力ストリームに出力します
-ea[:<packagename>…|:<classname>]
-enableassertions[:<packagename>…|:<classname>]
指定した粒度でアサーションを有効にします
-da[:<packagename>…|:<classname>]
-disableassertions[:<packagename>…|:<classname>]
指定した粒度でアサーションを無効にします
-esa | -enablesystemassertions
システム・アサーションを有効にします
-dsa | -disablesystemassertions
システム・アサーションを無効にします
-agentlib:<libname>[=<options>]
ネイティブ・エージェント・ライブラリ<libname>をロードします。例: -agentlib:jdwp
-agentlib:jdwp=helpも参照してください
-agentpath:<pathname>[=<options>]
フルパス名を使用して、ネイティブ・エージェント・ライブラリをロードします
-javaagent:<jarpath>[=<options>]
Javaプログラミング言語エージェントをロードします。java.lang.instrumentを参照してください
-splash:<imagepath>
指定されたイメージを含むスプラッシュ画面を表示します
HiDPIスケールのイメージが自動的にサポートされて使用されます
(可能な場合)。スケーリングされないイメージのファイル名(image.extなど)を
引数として-splashオプションに必ず渡す必要があります。
指定された最も適切なスケーリング済イメージが選択されます
(自動的)。
詳細は、SplashScreen APIのドキュメントを参照してください
@argumentファイル
オプションを含む1つ以上の引数ファイル
-disable-@files
さらなる引数ファイル拡張を無効にします
長いオプションの引数を指定する場合、–<name>=<value>または
–<name> <value>を使用できます。

これ合ってんのかな?まあいいか…Javaの開発環境がようやく整ったな、うん。

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

トップページ(低価格ヒルズ)に戻る

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です