1. Java命令
Java 虛擬機的工作是運行 Java 應(yīng)用程序纸镊。和其他類型的應(yīng)用程序一樣衡怀,Java 應(yīng)用程序也需要一個入口點奶栖,這個入口點就是我們熟知的 main() 方法。如果一個類包含 main() 方法冀瓦,這個類就可以用來啟動 Java 應(yīng)用程序贯底,我們把這個類叫作主類丰辣。最簡單的 Java 程序是只有一個 main() 方法的類,如著名的 HelloWorld 程序。
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, world! ");
}
}
那么 Java 虛擬機如何知道我們要從哪個類啟動應(yīng)用程序呢笙什?對此飘哨,Java 虛擬機規(guī)范沒有明確規(guī)定。也就是說琐凭,是由虛擬機實現(xiàn)自行決定的芽隆。比如 Oracle 的 Java 虛擬機實現(xiàn)是通過 java 命令來啟動的,主類名由命令行參數(shù)指定统屈。java 命令有如下 4 種形式:
java [-options] class [args]
java [-options] -jar jarfile [args]
javaw [-options] class [args]
javaw [-options] -jar jarfile [args]
可以向 java 命令傳遞三組參數(shù): 選項摆马、主類名(或者 JAR 文件名) 和 main() 方法參數(shù)。選項由減號(-)開頭鸿吆。通常,第一個非選項參數(shù)給出主類的完全限定名 (fully qualified class name)述呐。但是如果用戶提供了 -jar 選項惩淳,則第一個非選項參數(shù)表示 JAR 文件名,java 命令必須從這個 JAR 文件中尋找主類乓搬。javaw 命令和 java 命令幾乎一樣思犁,唯一的差別在于,javaw 命令不顯示命令行窗口进肯,因此特別適合用于啟動 GUI (圖形用戶界面) 應(yīng)用程序激蹲。
2. 編寫命令行工具
2.1 Rust 版本
(base) ? Downloads cargo -V
cargo 1.70.0 (ec8a8a0ca 2023-04-25)
(base) ? Downloads rustc -V
rustc 1.70.0 (90c541806 2023-05-31) (built from a source tarball)
2.2 創(chuàng)建項目
? hub cargo new rjvm
Created binary (application) `rjvm` package
? hub cd rjvm
? rjvm git:(master) ? ll
total 8
-rw-r--r-- 1 stg staff 173B Jun 15 17:00 Cargo.toml
drwxr-xr-x 3 stg staff 96B Jun 15 17:00 src
2.3 打開項目
IDEA 安裝 Rust 插件
我的 MacBookPro 是 M2 ,brew 安裝的 Rust , 配置 Rust 目錄
/opt/homebrew/Cellar/rust/1.70.0
2.4 項目分包
用 Cargo 的 workspaces 功能來組織代碼江掩。workspaces 允許將多個相關(guān)的 Rust 包組合成一個單一的邏輯單元学辱,以便更輕松地管理和構(gòu)建。
3. 編寫一個簡單的 javac
用 clap 來解析命令行參數(shù)