jv CLIリファレンス¶
English | 日本語
jvコマンドラインインターフェースの完全なリファレンスです。
概要¶
jvコマンドは、jvプロジェクトの操作における主要なインターフェースです。プロジェクト管理、コンパイル、開発のためのツールを提供します。
注意事項:
- 引数なしでjvを実行すると、インタラクティブREPLが開始されます。
- jv replで明示的に開始することもできます。
- ファイルやコードスニペットの素早い実行用に、別のjvxバイナリが利用可能です。
グローバルオプション¶
-h, --help: ヘルプ情報を表示-V, --version: バージョン情報を表示--verbose: 詳細出力を有効化--quiet: 必須でない出力を抑制
コマンド¶
jvx¶
jvファイルやスニペット用のスタンドアロン高速実行ツール。
# ファイルを実行
jvx src/main.jv -- arg1 arg2
# インラインスニペットを実行
jvx 'fun main(){ println("Hi") }'
# 標準入力から読み込み
echo 'fun main(){ println("stdin") }' | jvx -
注意事項:
- jv x/jv execの動作をミラーしますが、別のバイナリとして提供されます。
- shebangスタイルやパイプラインワークフローに便利です。
jv repl¶
インタラクティブRead–Eval–Print Loopを開始します。
機能:
- jvスニペットをインタラクティブに解析し、パースエラーを報告します。
- メタコマンド: :help、:quit
- 将来: Javaプレビューと実行フック
jv init¶
現在のディレクトリに新しいjvプロジェクトを初期化します。
オプション:
- --template <TEMPLATE>: 特定のプロジェクトテンプレートを使用
- basic (デフォルト): シンプルなコンソールアプリケーション
- library: ライブラリプロジェクト構造
- web: Webアプリケーションテンプレート
- --package <PACKAGE>: パッケージ名を設定
- --jdk <VERSION>: ターゲットJDKバージョンを指定 (デフォルト: 25)
例:
# 現在のディレクトリに基本プロジェクトを初期化
jv init
# プロジェクト名を指定して初期化
jv init my-project
# ライブラリプロジェクトを初期化
jv init --template library my-lib
# 特定のパッケージで初期化
jv init --package com.example.myapp
生成される構造:
project/
├── jv.toml # プロジェクト設定
├── src/
│ └── main.jv # メインソースファイル
├── test/
│ └── main_test.jv # テストファイル
└── README.md # プロジェクトドキュメント
jv build¶
jvソースコードをJavaにコンパイルし、バイトコードを生成します。
オプション:
- --check: 出力を生成せずにコードをチェック
- --format: 生成されたJavaコードをフォーマット
- --preview: コンパイルせずに生成されたJavaを表示
- --output <DIR>: 出力ディレクトリ (デフォルト: out/)
- --target <DIR>: コンパイル済みクラスのターゲットディレクトリ
- --classpath <PATH>: 追加のクラスパスエントリ
- --jdk <VERSION>: ターゲットJDKバージョン
- --optimization <LEVEL>: 最適化レベル (0-3)
- --debug: デバッグ情報を含める
Sample/@Sampleオプション:
- --sample-mode=embed|load: デフォルトの@Sampleモードを上書き (デフォルト: embed)
- --sample-network=allow|deny: サンプル取得時のネットワークアクセスを許可 (デフォルト: deny)
- --sample-embed-max-bytes=<N>: コードに埋め込む最大バイト数 (デフォルト: 1048576)
- --sample-embed-fallback=load|fail: 埋め込みが制限を超えた場合の動作 (デフォルト: fail)
- --sample-cache=on|off: ランタイムロード用のローカルキャッシュを有効化 (デフォルト: on)
バイナリパッケージングオプション:
- --binary jar|native: コンパイル後に単一ファイルアーティファクトを作成
- jar: <output>/app.jar (または--bin-name)を作成。jarツールが必要。
- native: GraalVMのnative-imageを試行して<output>にネイティブバイナリを作成。インストールされていない場合はエラー。
- --bin-name <NAME>: アーティファクトの出力ベース名 (デフォルト: app)
例:
# プロジェクト全体をビルド
jv build
# 特定のファイルをビルド
jv build src/main.jv src/utils.jv
# フォーマットとプレビューでビルド
jv build --format --preview
# デバッグ情報付きでビルド
jv build --debug
# ビルドとチェックのみ(出力なし)
jv build --check
# ビルドして単一JARにパッケージ
jv build src/main.jv --binary jar --bin-name myapp
# ビルドしてネイティブイメージを試行(GraalVM native-imageが必要)
jv build src/main.jv --binary native --bin-name myapp
ビルドプロセス:
1. 字句解析: jvソースファイルをトークン化
2. 構文解析: 抽象構文木(AST)を生成
3. 型チェック: 型の検証と推論を実行
4. IR生成: 中間表現に変換
5. Java生成: 読みやすいJava 25ソースコードを生成
6. Javaコンパイル: javacでバイトコードにコンパイル
jv run¶
コンパイル済みjvプログラムを実行します。
オプション:
- --classpath <PATH>: 追加のクラスパスエントリ
- --jvm-args <ARGS>: JVMに渡す引数
- --main <CLASS>: 実行するメインクラスを指定
- --args <ARGS>: プログラムに渡す引数
例:
# メインクラスを実行
jv run
# JVM引数付きで実行
jv run --jvm-args "-Xmx1g -Xms512m"
# 特定のクラスを実行
jv run --main com.example.MyApp
# プログラム引数付きで実行
jv run --args "arg1 arg2 arg3"
# 複合例
jv run --main MyApp --jvm-args "-Xmx2g" --args "input.txt output.txt"
jv fmt¶
標準スタイルガイドラインに従ってjvソースコードをフォーマットします。
オプション:
- --check: ファイルを変更せずにフォーマットされているかチェック
- --diff: 行われる変更の差分を表示
- --write: ファイルに変更を書き込み(デフォルトの動作)
- --indent <SIZE>: インデントサイズ (デフォルト: 4)
- --line-width <WIDTH>: 最大行幅 (デフォルト: 100)
- --trailing-comma: 常に末尾カンマを使用
例:
# プロジェクト内のすべてのjvファイルをフォーマット
jv fmt
# 特定のファイルをフォーマット
jv fmt src/main.jv src/utils.jv
# 変更せずにフォーマットをチェック
jv fmt --check
# フォーマットの差分を表示
jv fmt --diff
# カスタム行幅でフォーマット
jv fmt --line-width 80
フォーマットルール: - インデント: 4スペース(設定可能) - 行長: 100文字(設定可能) - ブレース: K&Rスタイル(開きブレースは同一行) - スペース: 演算子周りの一貫したスペース - インポート整理: 自動インポートソートと重複除去
jv check¶
jvソースコードに対して静的解析と型チェックを実行します。
オプション:
- --strict: 厳密チェックモードを有効化
- --null-safety: 拡張null安全性チェックを有効化
- --unused: 未使用変数とインポートをチェック
- --performance: パフォーマンスアンチパターンをチェック
- --security: セキュリティ脆弱性チェックを有効化
- --json: 結果をJSON形式で出力
- --fix: 可能な場合は自動的に問題を修正
例:
# 基本的な型チェック
jv check
# すべての警告を含む厳密チェック
jv check --strict --unused --performance
# 特定のファイルをチェック
jv check src/main.jv src/models/
# セキュリティ重視のチェック
jv check --security --strict
# 機械可読な出力を取得
jv check --json > check-results.json
チェックカテゴリ: - 型安全性: 型の不一致、null安全性違反 - コード品質: 未使用変数、到達不可能コード、複雑性 - パフォーマンス: 非効率なパターン、メモリリーク - セキュリティ: SQLインジェクション、XSS脆弱性、安全でないパターン - スタイル: 命名規則、コード構成
jv version¶
jvとそのコンポーネントのバージョン情報を表示します。
オプション:
- --verbose: 詳細なバージョン情報を表示
- --json: バージョン情報をJSON形式で出力
例:
# 基本バージョンを表示
jv version
# 出力: jv 0.1.0 - Java Syntactic Sugar compiler
# 詳細なバージョン情報を表示
jv version --verbose
# 出力:
# jv 0.1.0 - Java Sugar Language compiler
# Built: 2024-09-05
# Rust: 1.70.0
# Target: Java 25
# Features: null-safety, async, pattern-matching
# JSON出力
jv version --json
jv add¶
プロジェクトに依存関係を追加します。
オプション:
- --dev: 開発時のみの依存関係として追加
- --optional: オプション依存関係として追加
- --registry <URL>: 特定のレジストリから取得
- --version <VERSION>: 特定のバージョンを指定
例:
# jvレジストリから追加
jv add math-utils
# 特定のバージョンを指定
jv add math-utils --version 1.2.0
# Maven依存関係を追加
jv add org.apache.commons:commons-lang3:3.12.0
# 開発依存関係として追加
jv add junit --dev
jv toolchain¶
JDK管理コマンド。
サブコマンド:
- list: 利用可能なJDKを一覧表示
- install <JDK>: 指定されたJDKをインストール
- uninstall <JDK>: JDKをアンインストール
- default <JDK>: デフォルトJDKを設定
例:
# 利用可能なJDKを表示
jv toolchain list
# Java 25をインストール
jv toolchain install 25-temurin
# GraalVMをインストール
jv toolchain install 25-graalvm
# デフォルトJDKを設定
jv toolchain default 25-temurin
# JDKをアンインストール
jv toolchain uninstall 21-temurin
jv db¶
ローカルデータベース管理コマンド。
サブコマンド:
- init <TYPE>: データベースを初期化(sqlite, duckdb)
- migrate: スキーママイグレーションを実行
- seed: テストデータを挿入
- analyze <FORMAT>: データ分析(json, csv, parquet)
例:
# SQLiteデータベースを初期化
jv db init sqlite --file app.db
# DuckDBデータベースを初期化
jv db init duckdb --file analytics.duckdb
# マイグレーションを実行
jv db migrate --target latest
# テストデータを挿入
jv db seed --file seeds/users.sql
# データ分析(CSV出力)
jv db analyze csv --query "SELECT * FROM users" > report.csv
jv dsl¶
DSL管理コマンド。
サブコマンド:
- list: 利用可能なDSLハンドラを一覧表示
- doctor: DSL設定を検証
- register <HANDLER>: 新しいDSLハンドラを登録
例:
# 利用可能なDSLハンドラを表示
jv dsl list
# DSL設定を検証
jv dsl doctor
# カスタムDSLハンドラを登録
jv dsl register --name custom-sql --handler com.example.CustomSqlHandler
jv native¶
ネイティブ関数バインディング管理。
サブコマンド:
- resolve <SYMBOL>: ネイティブシンボルの可用性をチェック
- headers: JNIヘッダーファイルを生成
- test <LIBRARY>: ネイティブライブラリのテスト
例:
# ネイティブシンボルをチェック
jv native resolve calculate_fast --library libmath.so
# JNIヘッダーファイルを生成
jv native headers --output include/
# ネイティブライブラリをテスト
jv native test libmath.so
jv audit¶
セキュリティ監査コマンド。
オプション:
- --fix: 修正可能な脆弱性を自動修正
- --format <FORMAT>: 出力形式(json, table, csv)
- --severity <LEVEL>: 最小深刻度レベル
例:
# 基本的なセキュリティ監査
jv audit
# 脆弱性を自動修正
jv audit --fix
# JSON形式で詳細レポート
jv audit --format json > security-report.json
# 高深刻度のみ表示
jv audit --severity high
jv publish¶
jvレジストリにパッケージを公開します。
オプション:
- --registry <URL>: 公開先レジストリを指定
- --token <TOKEN>: 認証トークン
- --dry-run: 実際の公開を行わずにテスト
例:
# パッケージを公開
jv publish
# ドライラン
jv publish --dry-run
# 特定のレジストリに公開
jv publish --registry https://custom-registry.example.com
jv doctor¶
環境診断コマンド。
オプション:
- --fix: 修正可能な問題を自動修正
- --verbose: 詳細な診断情報を表示
例:
設定¶
プロジェクト設定 (jv.toml)¶
[project]
name = "my-project"
version = "1.0.0"
authors = ["Your Name <you@example.com>"]
description = "jvプロジェクト"
license = "MIT"
[build]
jdk_version = "25"
optimization_level = 2
debug = false
target_dir = "out"
[dependencies]
# jvレジストリ依存関係
math-utils = "1.2.0"
# Maven依存関係
[dependencies.maven]
"org.apache.commons:commons-lang3" = "3.12.0"
"com.fasterxml.jackson.core:jackson-core" = "2.15.0"
[dev-dependencies]
junit = "5.9.0"
[toolchain]
jdk = "temurin-25"
prefer_system = false
[format]
line_width = 100
indent_size = 4
trailing_comma = true
[check]
strict = true
null_safety = true
unused_warnings = true
performance_warnings = true
グローバル設定¶
グローバルjv設定は以下に保存されます:
- Linux/macOS: ~/.config/jv/config.toml
- Windows: %APPDATA%\jv\config.toml
[defaults]
jdk_version = "25"
editor = "code"
format_on_save = true
[toolchain]
auto_install = true
preferred_vendor = "temurin"
[registry]
default = "https://registry.jv-lang.org"
mirrors = [
"https://mirror1.jv-lang.org",
"https://mirror2.jv-lang.org"
]
[check]
default_strict = true
auto_fix = false
環境変数¶
JV_HOME: jvインストールディレクトリJV_REGISTRY: デフォルトレジストリURLを上書きJV_JDK_HOME: JDK検出を上書きJV_LOG_LEVEL: ログレベルを設定 (debug, info, warn, error)JV_NO_COLOR: カラー出力を無効化JV_OFFLINE: オフラインモードで動作(ネットワーク要求なし)
終了コード¶
0: 成功1: 一般エラー2: コンパイルエラー3: ランタイムエラー4: 設定エラー5: ネットワークエラー101: 内部エラー(バグとして報告してください)
シェル補完¶
お使いのシェル用の補完を生成:
# Bash
jv completion bash > ~/.local/share/bash-completion/completions/jv
# Zsh
jv completion zsh > ~/.local/share/zsh/site-functions/_jv
# Fish
jv completion fish > ~/.config/fish/completions/jv.fish
# PowerShell
jv completion powershell > $PROFILE
IDEとの統合¶
VS Code¶
VS Code用jv拡張機能をインストール: - 構文ハイライト - エラー診断 - コードフォーマット - IntelliSenseサポート
IntelliJ IDEA¶
jv言語サーバーが提供: - コード補完 - エラーハイライト - リファクタリングサポート - デバッグ統合
Vim/Neovim¶
jv-vimプラグインを使用するか、nvim-lspconfigなどのLSPクライアントで設定。
トラブルシューティング¶
よくある問題¶
"jv: command not found"
- jvがPATHに含まれていることを確認
- フルパスで実行を試行: ./target/release/jv
"Java 25 required but Java X found"
- Java 25をインストールするかJAVA_HOMEを設定
- JDKバージョン管理にjv toolchain installを使用
クラスパスエラーでビルドが失敗
- jv.tomlの依存関係を確認
- Maven依存関係が利用可能であることを確認
パフォーマンスの問題
- リリースビルドには--optimization 3を使用
- jv check --performanceでパフォーマンス警告をチェック
デバッグモード¶
トラブルシューティング用の詳細ログを有効化:
ヘルプの取得¶
- GitHub Issuesをチェック
- コミュニティDiscussionsに参加