class ของ java เรียกใช้งานผ่านทาง php ทำยังไง
พอดีมีเพื่อนถามว่า PHP สามารถเรียก class ที่สร้างจาก Java ได้หรือเปล่า
ผมก็เลยลองไปหาดู ใน internet ก็เห็นมีวิธี ที่จะใช้เรียก method ของ java
จาก php ได้เหมือนกัน วันนี้ ก็เลยจะเขียนเรื่องเกี่ยวกับการเรียกใช้
method ของ java จาก PHP ว่าต้องทำยังไงบ้าง
ต้องติดตั้ง J2SE ก่อน เมื่อติดตั้งเสร็จแล้ว
เริ่มกันเลยนะครับ
ขั้นแรกให้ทำการเขียนโปรแกรมด้วย java ขึ้นมาก่อน โดยการ copy code ต่อไปนี้เลย
function_java.java
จากนั้นทำการ compile โดยให้เข้าไปที่ command line แล้วใช้คำสั่ง javac function_java.java
จากนั้นหากว่าไม่มี อะไรผิดพลาดเราก็จะได้ function_java.class เพิ่มขึ้นมาอีกอัน ทีนี้ลองทำการ run ดู โดยใช้คำสั่ง java function_java หากว่าได้ ค่า Hello World I’am Java กลับมาก็แสดงว่าโปรแกรม java ของเราทำงานได้แล้ว
ต่อไปให้คุณทำการ copy function_java.class ไปไว้ที่ D:\www\myweb\ez\example\java\ เพราะว่าผมจะใช้ path นี้ในการเก็บ file .class คุณไปทำไว้ที่อื่นก็ได้ นะครับ
ต่อไปเราก็ทำการ config PHP กันต่อเลย ให้คุณทำการเปิด file php.ini
ให้ทำการค้นหาคำว่า extension=php_java.dll แล้วทำการเอา comment (เจ้าตัว ; ที่อยู่หน้าบรรทัด) ออก
จากนั้นให้หา java.class.path แล้วเอา comment ออกและแก้ข้อมูลตามนี้ครับ
เพิ่มเติมอีกนิดครับ
PHP ที่ผมลงเป็นแบบที่ zip มาไม่ใช้แบบที่เอามา install ฉะนั้นมันจะมี folder extensions เพิ่มขึ้นมาใน folder ที่เราติดตั้ง PHP ด้วย ซึ่ง การใช้ extension= จะเป็นการไปเรียกใช้ file ที่มีนาสกุล .dll ที่อยู่ใน folder extensions เราจึงควรที่จะกำหนด extension_dir ใน php.ini ให้เป็น extension_dir = “./extensions” หรือหากว่าไม่กำหนดที่ extension_dir คุณก็อาจจะทำการ copy file .dll ที่อยู่ ใน folder extension ไปไว้ที่ C:\WINDOW\Ssystem32\ ก็ได้
เมื่อแก้ไข php.ini เสร็จแล้ว ต่อไปเราก็มาเขียนโปรแกรม PHP ให้เข้าไปเรียกใช้ method ที่อยู่เราเขียนเป็น java กันเลย สร้าง file java2php.php โดยมีข้อมูลตามนี้ครับ
java2php.php
จากนั้นลองทำการเรียก java2php.php ผ่านทาง Browser ดู หากว่ามี
ข้อความขึ้นมาว่า Hello World I’am Java ก็ขอแสดงความยินดีด้วยครับ
คุณสามารถที่จะใช้ PHP เรียก method ของ java ได้แล้ว
เขียนมาตั้งนาน บางคนอาจจะสงสัยว่า แล้วจะเอาไปทำอะไรได้นี้ ในเมื่อเราก็สามารถเขียน php ให้ทำได้อยู่แล้ว มันก็จริงครับที่เราสามารถเขียน php ให้สามารถทำนู้นทำนี้ ได้ แต่ลองคิดดูนะครับว่า ถ้าหากเราเขียน function อะไรบางอย่างไว้ แล้วไม่อยากให้คนอื่นรู้ว่าภายใน function นี้ทำงานยังไงถึงได้ผลออกมาแบบนี้ เราก็สามารถที่จะเขี่ยน function นั้นโดย java จากนั้นเราค่อยเขียน php ไปเรียกใช้ function นั้นก็ได้
แต่เดี่ยวก็มีบางคนก็จะบอกได้อีกว่า งั้นผมเอา .class ของคุณไป decompile ก็ได้ อันนี้ผมก็ช่วยไม่ได้ละครับ
ออ แต่มี อีกวิธีหนึ่งคือการทำเป็น .dll แล้วให้เรียกใช้ function ผ่าน php รับรองว่าวิธีนี้ decompile ยากกว่า java แน่ๆ เดี่ยวไว้คราวหน้าเราจะมาลองเขียนโปรแกรม จากภาษาอื่นแล้ว compile เป็น .dll แล้วใช้ php เรียก function มาใช้งานบางดีกว่า
ต้องติดตั้ง J2SE ก่อน เมื่อติดตั้งเสร็จแล้ว
เริ่มกันเลยนะครับ
ขั้นแรกให้ทำการเขียนโปรแกรมด้วย java ขึ้นมาก่อน โดยการ copy code ต่อไปนี้เลย
function_java.java
1 2 3 4 5 6 7 8 9 10 | public class function_java { public static void main(String[] args){ System.out.println(test_str()); } public static String test_str(){ return "Hello World I'am Java"; } } |
จากนั้นหากว่าไม่มี อะไรผิดพลาดเราก็จะได้ function_java.class เพิ่มขึ้นมาอีกอัน ทีนี้ลองทำการ run ดู โดยใช้คำสั่ง java function_java หากว่าได้ ค่า Hello World I’am Java กลับมาก็แสดงว่าโปรแกรม java ของเราทำงานได้แล้ว
ต่อไปให้คุณทำการ copy function_java.class ไปไว้ที่ D:\www\myweb\ez\example\java\ เพราะว่าผมจะใช้ path นี้ในการเก็บ file .class คุณไปทำไว้ที่อื่นก็ได้ นะครับ
ต่อไปเราก็ทำการ config PHP กันต่อเลย ให้คุณทำการเปิด file php.ini
ให้ทำการค้นหาคำว่า extension=php_java.dll แล้วทำการเอา comment (เจ้าตัว ; ที่อยู่หน้าบรรทัด) ออก
จากนั้นให้หา java.class.path แล้วเอา comment ออกและแก้ข้อมูลตามนี้ครับ
1 2 3 4 5 6 7 8 9 10 11 12 | java.class.path = "C:\php\extensions\php_java.jar;D:\www\myweb\ez\example\java\" ;C:\php\extensions\php_java.jar คือ path ของ php_java.jar ซึ่งปกติก็จะอยู่ใน folder extensions ที่เราได้ติดตั้ง PHP ครับ ;D:\www\myweb\ez\example\java\ ตัวนี้คือ path ที่เราจะเก็บ file .class ที่เรา compile ได้จาก โปรแกรม java ของเราครับ java.home = "C:\Program Files\Java\jdk1.5.0_02\" ;C:\Program Files\Java\jdk1.5.0_02\ อันนี้เป็น path ของ J2SE ที่เราลงไว้ในเครื่องนะครับ ของคุณอยู่ที่ไหนก็กำหนดตามนั้นครับ java.library = "C:\Program Files\Java\jdk1.5.0_02\jre\bin\server\jvm.dll" ;C:\Program Files\Java\jdk1.5.0_02\jre\bin\server\jvm.dll อันนี้ก็เป็น path ของ JVM ปกติแล้วก็จะอยู่ที่ \jre\bin\server\ ของ folder ที่เราได้ลง J2SE ไว้ java.library.path = "C:\php\extensions\" ;C:\php\extensions\ ตัวนี้เป็น path ที่เก็บ extensions ของ PHP ครับ |
PHP ที่ผมลงเป็นแบบที่ zip มาไม่ใช้แบบที่เอามา install ฉะนั้นมันจะมี folder extensions เพิ่มขึ้นมาใน folder ที่เราติดตั้ง PHP ด้วย ซึ่ง การใช้ extension= จะเป็นการไปเรียกใช้ file ที่มีนาสกุล .dll ที่อยู่ใน folder extensions เราจึงควรที่จะกำหนด extension_dir ใน php.ini ให้เป็น extension_dir = “./extensions” หรือหากว่าไม่กำหนดที่ extension_dir คุณก็อาจจะทำการ copy file .dll ที่อยู่ ใน folder extension ไปไว้ที่ C:\WINDOW\Ssystem32\ ก็ได้
เมื่อแก้ไข php.ini เสร็จแล้ว ต่อไปเราก็มาเขียนโปรแกรม PHP ให้เข้าไปเรียกใช้ method ที่อยู่เราเขียนเป็น java กันเลย สร้าง file java2php.php โดยมีข้อมูลตามนี้ครับ
java2php.php
1 2 3 4 5 6 | <?php $java = new Java("function_java"); print $java->test_str(); ?> |
เขียนมาตั้งนาน บางคนอาจจะสงสัยว่า แล้วจะเอาไปทำอะไรได้นี้ ในเมื่อเราก็สามารถเขียน php ให้ทำได้อยู่แล้ว มันก็จริงครับที่เราสามารถเขียน php ให้สามารถทำนู้นทำนี้ ได้ แต่ลองคิดดูนะครับว่า ถ้าหากเราเขียน function อะไรบางอย่างไว้ แล้วไม่อยากให้คนอื่นรู้ว่าภายใน function นี้ทำงานยังไงถึงได้ผลออกมาแบบนี้ เราก็สามารถที่จะเขี่ยน function นั้นโดย java จากนั้นเราค่อยเขียน php ไปเรียกใช้ function นั้นก็ได้
แต่เดี่ยวก็มีบางคนก็จะบอกได้อีกว่า งั้นผมเอา .class ของคุณไป decompile ก็ได้ อันนี้ผมก็ช่วยไม่ได้ละครับ
ออ แต่มี อีกวิธีหนึ่งคือการทำเป็น .dll แล้วให้เรียกใช้ function ผ่าน php รับรองว่าวิธีนี้ decompile ยากกว่า java แน่ๆ เดี่ยวไว้คราวหน้าเราจะมาลองเขียนโปรแกรม จากภาษาอื่นแล้ว compile เป็น .dll แล้วใช้ php เรียก function มาใช้งานบางดีกว่า
ไม่มีความคิดเห็น:
แสดงความคิดเห็น