Java 언어는 강력하므로 PHP에서 Java 함수를 호출하는 것은 많은 경우에 매우 유용합니다. PHP에서 Java 언어를 호출하는 방법에는 두 가지가 있습니다. 하나는 PHP에서 Java 확장 모듈을 사용하는 것이고, 다른 하나는 minij2ee 애플리케이션 서버에서 제공하는 SJOP 프로토콜 구현을 사용하는 것입니다. 아래에서 이 두 가지 방식의 특징을 비교해 보겠습니다.
1.php의 Java 모듈
PHP 릴리스 버전에는 Java 개체를 호출하는 데 사용할 수 있는 Java 확장 모듈이 포함되어 있습니다. 예:
$system=new Java("java.lang.System") ;
print "Java version=".$system->getProperty("java.version")."
";
?>
이 방법을 사용하면 다음과 같은 장점이 있습니다. 더 편리합니다. new Java()를 사용하여 Java 객체를 생성하면 PHP 클래스와 마찬가지로 Java 객체를 호출할 수 있습니다. 그러나 이 방법에도 다음과 같은 명백한 단점이 있습니다.
1. php의 Java 모듈은 php의 데이터 유형에 따라 가장 적합한 Java 방법을 선택하므로 Java 오버로드된 함수를 호출할 수 없습니다.
2.php의 Java 모듈은 현재 Web Server 프로세스에 JVM(Java Virtual Machine)을 로드하므로 시스템 오버헤드가 크고 Web Server 프로세스의 실행 효율성에 영향을 미칩니다.
3. 일부 운영 체제 및 웹 서버 환경에서는 PHP의 Java 모듈이 웹 서버 프로세스를 정지시킵니다. http://www.php.net/bugs.php?id=6122를 참조하세요.
이러한 이유로 인해 PHP의 Java 모듈은 실제 소프트웨어 시스템에 적용되지 못했습니다.
2. Minij2ee 애플리케이션 서버 SJOP 프로토콜 구현
minij2ee 애플리케이션 서버 SJOP 프로토콜 구현을 소개하기 전에 minij2ee 애플리케이션 서버에 대해 간단히 소개하겠습니다. minij2ee 애플리케이션 서버는 PHP를 지원하는 최초의 J2EE 애플리케이션 서버 제품으로, PHP를 사용하여 엔터프라이즈급 애플리케이션 시스템을 개발할 수 있습니다. SJOP의 전체 이름은 간단하고 효율적인 객체 요청 프록시 프로토콜인 Sample Java ORB Protocol(Simple Java Object Request Proxy Protocol)입니다. 예:
$conn=minij2ee_fetch_connection();
print "Java version=".minij2ee_callstatic_javaobj($conn,"java.lang.System","getProperty " ,"java.lang.String","java.version")."
";
?>
SJOP 프로토콜을 구현하는 minij2ee 애플리케이션 서버의 주요 목적은 다음에 대한 액세스를 활성화하는 것입니다. PHP의 EJB 엔터프라이즈 수준 구성 요소이므로 minij2ee는 EJB 구성 요소를 PHP 클래스로 컴파일할 수 있는 EJB-PHP 컴파일러를 제공하므로 EJB 구성 요소를 PHP 프로그램에서 편리하게 호출할 수 있습니다. 예:
require("Cart.php "); file:/ /Cart.php는 Cart EJB를 컴파일한 후 생성된 Cart EJB의 PHP 클래스 정의입니다.
$home=new CartHome(); file://EJB의 홈 인터페이스를 생성합니다.
$objref=$home->create($cart_name); file://장바구니 EJB 생성.
$cart=new Cart($objref);
$cart->add("some Goods") file://장바구니에 항목을 추가합니다.
?>
minij2ee 애플리케이션 서버의 PHP 지원을 사용하면 PHP 및 J2EE 기술을 기반으로 객체 지향적이고 안정적이며 효율적인 엔터프라이즈급 애플리케이션 시스템을 개발할 수 있습니다.