---
schema_version: "1"
id: a88ce209fd86d98c2076c05221e168f202c8fbb8787a10ea6e527cf59f746543
title: "Mule 4 の概要: Java インテグレーション"
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/mule-runtime/4.9/intro-java-integration.md
canonical_url: https://docs.mulesoft.com/jp/mule-runtime/4.9/intro-java-integration
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 381e4af19cc97c5d0618e2d65f5d2f9e74fc8a75c3b7d99eeb299c870fd580b1
description: MuleSoft Documentation Site
release: "4.9"
latest: false
---
# Mule 4 の概要: Java インテグレーション

## [](#式かコードか)式かコードか

経験豊富な Mule ユーザーであれば、Mule 4 ではアプリケーションの構造化について、式言語を使用すれば実行可能なことが制限されるアプローチを敢えて採用していることに気が付くでしょう。その目的は、フローロジックと、コードから抽出されるビジネスロジックを明確に分けておくことです。

フローのデータを抽出、クエリ、変換、その他の方法で処理する場合に推奨されるツールは、DataWeave の式と変換です。カスタムロジックの作成、Java オブジェクトのインスタンス化、任意のメソッドのコールを行う場合の MuleSoft の推奨方法は、このコードをスクリプトまたはクラスにカプセル化して、挿入やテストを簡単に実行できるようにすることです。

このため MuleSoft では Expression コンポーネントと Expression トランスフォーマーを排除し、代わりにロジックをスクリプトまたは Java クラスに明確に分離することを奨励しています。

## [](#dataweave-からの静的-java-メソッドのコール)DataWeave からの静的 Java メソッドのコール

データを書式設定または解析するために Java ロジックをコールアウトしようとする場合に、DataWeave で静的メソッドをコールアウトできるようになりました。次の Java メソッドについて考えてみます。

```java
package org.acme;
public class MyCompanyUtils {
  public static String reformat(String input) {
    return …;
  }
}
```

このメソッドは次の DataWeave コードでコールできます。

```dataweave
import java!org::acme::MyCompanyUtils
---
{
  date: MyCompanyUtils::reformat(payload.input)
}
```

## [](#scripting-module)Scripting Module

Mule 3 の Scripting コンポーネントが Scripting Module になりました。Mule 4 のこのモジュールでは、Groovy、Ruby、Python、JavaScript などのスクリプトを Mule フロー内に埋め込むことができます。新しい ​`parameters`​ 設定属性を使用して、Mule メッセージのデータをコードに挿入できます。

```xml
<script:execute engine="groovy">
    <script:code>
         return "$payload $prop1 $prop2"
    </script:code>
    <script:parameters>
         #[{prop1: "Received", prop2: payload.body}]
    </script:parameters>
</script:execute>
```

Scripting Module を使用するには、Studio パレットを使用してアプリケーションに追加するか、次の連動関係を ​`pom.xml`​ ファイルに追加します。

```xml
<dependency>
  <groupId>org.mule.modules</groupId>
  <artifactId>mule-scripting-module</artifactId>
  <version>1.1.0</version> <!-- or newer -->
  <classifier>mule-plugin</classifier>
</dependency>
```

このモジュールについての詳細は、​[「Scripting Module ドキュメント」](https://docs.mulesoft.com/jp/scripting-module/latest/)​を参照してください。

## [](#java-module)Java Module

Scripting Module は、ランダムな命令セットを実行して Java との連動を可能にする極めて強力なツールですが、単にクラスをインスタンス化したり、1 つのメソッドを実行するだけで事足りることも少なくありません。こうした場合、Mule 3 では通常 MEL を利用しますが、Mule 4 ではこのユースケースのために Java Module が導入されました。Java Module が Scripting Module に勝る他のメリットとして次の点が挙げられます

- [DataSense](https://docs.mulesoft.com/studio/datasense-explorer)​ をサポート: メソッドを実行するたびに、出力種別とメソッドの入力引数の DataSense を取得します。
- UI をサポート: 各クラスで使用可能なメソッドやオートコンプリートなどの視覚補助を備えています。

### [](#新しい-java-インスタンスの作成)新しい Java インスタンスの作成

Mule 3 の場合:

```xml
<set-payload value="#[new com.foo.AppleEater()]" />
<set-payload value="#[new com.foo.AppleEater('some string arg', flowVars.apple)]" />
```

Mule 4 の場合:

```xml
<java:new class="com.foo.AppleEater" constructor="MyClass()"/>

<java:new class="com.foo.AppleEater" constructor="MyClass(String, Apple)">
  <java:args>#[{name: 'some string arg', apple: vars.apple}]</java:args>
</java:new>
```

### [](#インスタンスメソッドの呼び出し)インスタンスメソッドの呼び出し

Mule 3 の場合:

```xml
<expression-component>
  flowVars.appleEater.chew(500)
</expression-component>
```

Mule 4 の場合:

```xml
<java:invoke class="com.foo.AppleEater" method="chew(Integer)" instance="#[vars.appleEater]">
  <java:args>
    #[{chewingTime: 500}]
  </java:args>
</java:invoke>
```

`invoke`​ 機能は、DataWeave の関数でも実行できます。

```xml
<set-payload value="#[Java::invoke('com.foo.AppleEater', 'chew(Integer)', vars.appleEater, {chewingTime: 500})]"/>
```

Java Module を使用するには、Studio パレットを使用してアプリケーションに追加するか、次の連動関係を ​`pom.xml`​ ファイルに追加します。

```xml
<dependency>
  <groupId>org.mule.module</groupId>
  <artifactId>mule-java-module</artifactId>
  <version>1.0.0</version> <!-- or newer -->
  <classifier>mule-plugin</classifier>
</dependency>
```

## [](#関連情報)関連情報

- [Scripting Module](https://docs.mulesoft.com/jp/scripting-module/latest/)
- [Java Module](https://docs.mulesoft.com/jp/java-module/latest/)