# MaguyvaのJava対応: エンタープライズリポジトリのためのコードインテリジェンス

Canonical source: https://maguyva.ai/ja/languages/java

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

MaguyvaはAST解析とシンボル抽出によりJavaに対応しており、AIエージェントは大規模なエンタープライズコードベース全体でクラス、インターフェース、コンストラクタ、サービス層をたどることができます。

## 対応状況スナップショット

- 対応レベル: AST・シンボル対応
- プログラミング
- 拡張子: .java
- 構文を考慮した検索と構造コンテキストのための実際のAST解析。
- 名前付きシンボルはセマンティック検索と相互参照に利用されます。関係抽出が有効な場合は、グラフナビゲーションも利用できます。
- この言語は、グラフを考慮した検索にシンボルと関係情報を提供します。対応するエッジの種類は、その言語固有の構文要素によって異なります。
- AST解析とシンボル抽出の両方に対応しています。

## 最適な用途

- コントローラー、サービス、リポジトリ、メッセージング層、社内ライブラリが複数のモジュールにまたがって広がる、大規模なJavaリポジトリ。
- クラスや共有コントラクトを変更する前に、AIエージェントを使ってエンタープライズのサービスフローを理解するチーム。
- Javaがより古いシステムと隣り合い、両者の受け渡しパスを明確に保つ必要があるモダナイゼーション作業。

## エージェントワークフロー

- 編集する前に、コントローラーからサービス、永続化層へとリクエストをたどる。
- インターフェース、クラス、コンストラクタのパターンがモジュール横断でどこで再利用されているかを特定する。
- 変更が既存の慣習と整合するように、隣接するサービス実装同士を比較する。

## 大規模なJavaリポジトリで重要なこと

Javaは、多くのAIコードツールが最も厳しい現実に直面する場所です。コードベースは大規模で層が深く、ローカルな編集は安価でも、パス全体を理解することはそう簡単ではないほど古びています。単純なリクエストと実際の挙動の間には、コントローラー、サービス、リポジトリ、イベント、社内フレームワーク、モジュール横断のコントラクトがすべて挟まっています。

したがって重要な問いは、MaguyvaがJavaをパースできるかどうかではありません。他のチームが依存しているコードを変更する前に、あるクラスがどこに位置づけられるかを理解するのに十分なグラフコンテキストを、エージェントが保てるかどうかです。

## MaguyvaがJavaで実際に抽出するもの

Maguyvaは、クラス、インターフェース、コンストラクタ、メソッド、列挙型を別個の構造として抽出します。また、オブジェクト生成、配列生成、そして`::new`のようなコンストラクタ参照をインスタンス化のシグナルとして扱います。これは、エンタープライズのサービスコードにおいてグラフを実用的なものに保つのに役立つ種類の工夫です。

この設定において特に良い兆候の1つは、`map`、`filter`、`collect`のような一般的なストリーム系メソッドが、破棄されるのではなく許可リストに載っている点です。これは重要です。というのも、Javaのビジネスロジックの多くはこれらのメソッドを通過するため、それらを取りこぼすとグラフは実際のコードよりも実態を表さないものになってしまうからです。

## Javaのサービスに役立つMCPワークフロー

レビューとリファクタリングの作業の大半は、次の3つの実践的な入り口でカバーできます。

- `find_symbol` — サービス、リポジトリ、インターフェース、DTOの名前が分かっているとき。
- `dependency_search` — 共有コントラクトや中心的なサービスクラスを変更する前に。
- `get_task_context` — 「コントローラーから永続化層まで支払い承認を追跡する」のようなプロンプトで、複数ホップの要約をすばやく得たいとき。

## このページが役立つ場面

「これは大規模なJavaコードベースの中でエージェントが安全に作業する助けになるか?」という問いを持っているなら、ここから始めてください。周囲の資産により古いメインフレームのロジックが含まれる場合は、[COBOL](/ja/languages/cobol)も読んでみてください。比較の対象がよりエンタープライズ向けのOOスタック全般である場合は、[C#](/ja/languages/csharp)の方が近い比較対象になります。

## エンジンの詳細

- Javaはクラス、インターフェース、コンストラクタ、メソッド、enumをそれぞれ独立した構造的な概念として捕捉します。
- オブジェクト生成、配列生成、`::new` のようなコンストラクタ参照はインスタンス化として扱われます。
- `map`、`filter`、`collect` のような一般的なストリーム・関数型メソッドは明示的に許可リストに含まれており、グラフ上で確認できます。

## 役立つMCPエントリーポイント

- `find_symbol`: サービス、リポジトリ、インターフェース、DTOの名前について、正確なシンボルとその参照が必要なときに使用してください。
- `dependency_search`: 中心的なサービスやcontractを変更する前に実行し、どのモジュールがそれに依存しているかを確認してください。
- `get_task_context`: レイヤー化されたスタックにおいて、「コントローラーから永続化層までの支払い承認フローを追跡する」といったプロンプトに適しています。
