Java命令入门

执行第四章的代码

Java应用程序的类型

在解释使用java命令运行应用程序之前,我们先来看一下Java应用程序有哪些类型。

以下是Java应用程序的大致分类。由于解释都很简单,如果您有兴趣,请自行进行调查。

    • コンソールアプリ

 

    • PromptやTerminalなど、コンソールから対話方式で利用するアプリ。

 

    • デスクトップアプリ

 

    • 1端末内で完結しているアプリ。GUIと言われることもある。

 

    • Webアプリ

 

    • Webサーバとクライアント間の通信により処理を行うアプリ。

 

    • Androidアプリ

 

    • Android向けのデスクトップアプリ。(ものの例えです)

 

    • 組み込み系プログラム

 

    家電など、ハードウェアに直接組み込まれたプログラム。

在Java命令中,主要用于执行控制台应用程序和桌面应用程序。

Java命令的概述是什么?

当执行java命令时,Java应用程序将被启动。
java工具首先启动JRE,并加载由命令指定的类。
通过调用加载的类的main方法,应用程序将在main方法内调用其他类,同时按顺序加载这些类,从而执行应用程序。

指定具有主函数的类的方法有两种:一种是直接指定类,另一种是指定JAR文件。

主要的main方法规约

主方法必须满足以下条件:是公共的(public),是静态的(static),以字符串数组为参数,且不返回任何值的方法。

    public static void main(String[] args) {
        // 何らかの処理
    }

Java命令的基本结构

# java [ options ] class [ argument ... ]
$ java HelloWorld "args1" "args2"

在上述例子中,将调用HelloWorld类的main方法,并将”args1″和”args2″存储在参数args中,args是一个传递给main方法的String类型的数组。

执行类文件

在执行类文件时,需要指定完整的类名。
在上述示例中,由于没有采用包结构,因此可以执行而无需指定包,但如果采用了包结构,则需要指定包并以完整指定的类名来执行。

# カレントディレクトリは/src
# /srcをパッケージルートとし、HelloWorldが/src/com/example/app直下にある場合
$ java com.example.app.HelloWorld

运行JAR文件

如果指定JAR文件,需要在JAR文件中的归档类文件中找到具有main方法的启动类,以确定Main-Class标头在清单文件中的设置。这方面的细节可以在以下文章中找到简明易懂的解释。

参考文章:JAR文件入门@hiwm0126

启动JAR文件需要指定JAR文件的位置(可以是绝对路径或相对路径)。
此外,如果要指定JAR文件作为启动类,则需要添加-jar选项。

# カレントディレクトリは/(ルート)
# /lib/jars/sample-app.jarを実行する
$ java -jar /lib/jars/sample-app.jar

Java命令的选项。

重要的选项

    • -classpath(または-cp) <パス>

 

    • ユーザクラスの検索先を指定する。

 

    • 複数選択時はセミコロン(Windows)、またはコロン(Unix)で区切る。

 

    • -jar <パス>

 

    • 起動クラスにJARファイルを指定する。パスにはJARファイルの配置先を指定する。

 

    • -version

 

    • Javaのバージョン情報を表示する。

 

    • -D<プロパティ名>=<値>

 

    Javaのシステムプロパティを設定する。設定した値は以下のように取得できる。
$ java -Dsun.boot.class.path="/sample/path" SampleApp
// 設定した値「/sample/path」が取得できる
System.getProperty("sun.boot.class.path");

断言类选项

Java的断言启用和禁用选项。
默认情况下,断言是禁用的。

    • -enableassertions(または-ea):<適用範囲>

 

    • アサーションを有効にする。適用範囲の指定には、以下の種類がある。

<パッケージ名>…
指定したパッケージとそのサブパッケージで有効になる。

カレントディレクトリのデフォルトパッケージ(無名パッケージ)で有効になる。
<クラス名>
指定したクラスで有効になる。
引数なし
システムクラスを除く全てのクラスで有効になる。

-disableassertions(または-da):<有効範囲>
アサーションを無効にする。適用範囲の指定は、-enableassertionsオプションと同じ。
-enablesystemassertions(または-esa)
全てのシステムクラスのアサーションを有効にする。
-disablesystemassertions(または-dsa)
全てのシステムクラスのアサーションを無効にする。

调试选项

    • -verbose:{keyword list}

 

    • コンマで区切られたキーワードリストにより指定された情報を通知する。

class
クラスがロードされるタイミングで、クラスに関する情報を表示する。

gc
ガーベジコレクションが動くたびに起動を通知する。

jni
ネイティブメソッドの使用、Java Native Interfaceアクティビティの情報を通知する。

热点设置的选项

熱點(HotSpot)是指嵌入在Java虛擬機(JVM)中用於加速處理的技術總稱。
它是一種即時編譯(JIT)編譯器,提供了專門為了處理最佳化而設計的機制,例如僅編譯被執行一定次數以上的方法等。

HotSpot有两种类型,分别是Java HotSpot Client VM(客户端版本)和Java HotSpot Server VM(服务器版本),它们具有以下特点。

    • クライアント版

 

    • コンパイル対象を重要なクラス、メソッドに絞り、高速なロードを重視する。

 

    • サーバ版

 

    全体的にコンパイルするのでロードは遅くなるが、最適化を重視する。

以下是用于指定要使用的HotSpot的选项。

    • -client

 

    • Java HotSpot Client VMを選択して起動する。

 

    • -server

 

    Java HotSpot Client VMを選択して起動する。

原生代理库的选项 kù de

在Java中,存在一种机制可以使用在Java中以外编写的程序,
这种机制通过Java虚拟机工具接口(JVMTI)与代理(JVMTI的客户端)进行交互来实现使用。
这个代理是用Java以外的语言实现的各种工具。

以下的选项是用于使用这些本地代理库的选项。

    • -agentlib:<ライブラリ名>=<オプション>

 

    • ネイティブエージェントライブラリを指定し、ロードする。

 

    • -agentpath:<ライブラリのフルパス>=<オプション>

 

    フルパスでネイティブエージェントライブラリを指定し、ロードする。

进行

那么,现在我们来执行一下样本代码。

在样本代码中,如果传递了null或者空字符串,该方法将返回”NG”,否则将返回参数字符串。因此,应该输出3行:”NG”,”NG”,”Hello World!”。

# カレントディレクトリは/java-sample/srcです
$ java -cp /java-sample/lib/commons-lang3-3.10.jar:/java-sample/src com.example.app.UseCommons
# 以下、出力結果です
NG
NG
Hello World!

回到首页

广告
将在 10 秒后关闭
bannerAds