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!
回到首页