コンテンツにスキップ

jv CLIリファレンス

English | 日本語

jvコマンドラインインターフェースの完全なリファレンスです。

概要

jvコマンドは、jvプロジェクトの操作における主要なインターフェースです。プロジェクト管理、コンパイル、開発のためのツールを提供します。

jv [COMMAND] [OPTIONS] [ARGUMENTS]

注意事項: - 引数なしで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 repl
# または単純に
jv

機能: - jvスニペットをインタラクティブに解析し、パースエラーを報告します。 - メタコマンド: :help:quit - 将来: Javaプレビューと実行フック

jv init

現在のディレクトリに新しいjvプロジェクトを初期化します。

jv init [OPTIONS] [PROJECT_NAME]

オプション: - --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にコンパイルし、バイトコードを生成します。

jv build [OPTIONS] [FILES...]

オプション: - --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プログラムを実行します。

jv run [OPTIONS] [MAIN_CLASS] [PROGRAM_ARGS...]

オプション: - --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ソースコードをフォーマットします。

jv fmt [OPTIONS] [FILES...]

オプション: - --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ソースコードに対して静的解析と型チェックを実行します。

jv check [OPTIONS] [FILES...]

オプション: - --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とそのコンポーネントのバージョン情報を表示します。

jv version [OPTIONS]

オプション: - --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

プロジェクトに依存関係を追加します。

jv add [OPTIONS] <PACKAGE>

オプション: - --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管理コマンド。

jv toolchain <SUBCOMMAND>

サブコマンド: - 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

ローカルデータベース管理コマンド。

jv db <SUBCOMMAND> [OPTIONS]

サブコマンド: - 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管理コマンド。

jv dsl <SUBCOMMAND> [OPTIONS]

サブコマンド: - 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

ネイティブ関数バインディング管理。

jv native <SUBCOMMAND> [OPTIONS]

サブコマンド: - 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

セキュリティ監査コマンド。

jv audit [OPTIONS]

オプション: - --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レジストリにパッケージを公開します。

jv publish [OPTIONS]

オプション: - --registry <URL>: 公開先レジストリを指定 - --token <TOKEN>: 認証トークン - --dry-run: 実際の公開を行わずにテスト

例:

# パッケージを公開
jv publish

# ドライラン
jv publish --dry-run

# 特定のレジストリに公開
jv publish --registry https://custom-registry.example.com

jv doctor

環境診断コマンド。

jv doctor [OPTIONS]

オプション: - --fix: 修正可能な問題を自動修正 - --verbose: 詳細な診断情報を表示

例:

# 基本的な環境診断
jv doctor

# 問題を自動修正
jv doctor --fix

# 詳細診断
jv doctor --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でパフォーマンス警告をチェック

デバッグモード

トラブルシューティング用の詳細ログを有効化:

JV_LOG_LEVEL=debug jv build --verbose

ヘルプの取得