企業級系統常將核心業務邏輯 (規則引擎、加密、報表、工作流) 以 Java 實現 (EJB、Spring Bean)。PHP 負責 Web 表現層,需跨語言調用 Java 服務。
<?php
$system = new Java("java.lang.System");
echo "Java version = " . $system->getProperty("java.version") . "
";
?>
minij2ee 是早期國產輕量級 J2EE 伺服器,提供 **SJOP (Sample Java ORB Protocol)** 讓 PHP 以 RPC 方式呼叫遠端 Java 物件 (含 EJB)。
<?php
// 靜態方法呼叫
$conn = minij2ee_fetch_connection();
$ver = minij2ee_callstatic_javaobj($conn, "java.lang.System", "getProperty", "java.lang.String", "java.version");
echo "Java version = $ver
";
// EJB 元件呼叫 (需 EJB-PHP 編譯器預編譯)
require("Cart.php"); // 編譯後的 PHP 類別定義
$home = new CartHome(); // Home 介面
$objref = $home->create($cart_name); // 建立 EJB 實例
$cart = new Cart($objref); // Remote 介面代理
$cart->add("some goods"); // 呼叫業務方法
?>
| 方案 | 通訊方式 | 型別安全 | 部署拓撲 | 維護狀態 | 推薦指數 |
|---|---|---|---|---|---|
| PHP Java 擴展 | In-process JNI | 弱 (無多載) | 單機 | ❌ 停止維護 | ★☆☆☆☆ |
| minij2ee SJOP | 私有 RPC | 強 | 分散式 | ❌ 停止維護 | ★★☆☆☆ |
| PHP Java Bridge | Socket / Servlet | 強 (反射+序列化) | 分散式 | ✅ 積極維護 | ★★★★☆ |
| gRPC (Protobuf) | HTTP/2 RPC | 極強 (IDL 編譯) | 微服務 | ✅ 標準化 | ★★★★★ |
| REST/JSON (OpenAPI) | HTTP/1.1 | 中 (契約測試) | 通用 | ✅ 通用標準 | ★★★★☆ |
| Apache Thrift | TCP/RPC | 強 (IDL 編譯) | 微服務 | ✅ 成熟 | ★★★★☆ |
命令列 exec('java -jar') | Process Fork | 無 (字串解析) | 單機 | ✅ 簡單 | ★★☆☆☆ |
| 消息佇列 (RabbitMQ/Kafka) | Async Messaging | 中 (Schema Registry) | 事件驅動 | ✅ 標準 | ★★★★☆ |
grpc-php / guzzle 呼叫。PHP 內建 Java 擴展與 minij2ee SJOP 皆為**歷史產物**,生產環境**嚴禁使用**。現代架構應採用**進程隔離、協定標準化、契約優先**的跨語言通訊模式 (gRPC/REST/Message Queue),並以 **OpenAPI/Protobuf** 為單一真實來源,配合 CI/CD 自動生成客戶端 SDK,確保型別安全與演進相容性。