TeknoCerdas.com – Salam cerdas untuk kita semua. JVM atau Java Virtual Machine adalah runtime untuk menjalankan Java bytecode. JVM sudah terbukti kestabilan dan kehandalannya terlebih dikalangan enterprise. Lalu bagaimana jika menjalankan PHP pada JVM, apakah bisa? Jawabannya tentu bisa.
Selain PHP sudah banyak bahasa yang didukung oleh JVM dan itu sudah cukup matang sebut saja Ruby dengan JRuby, Python dengan Jython. PHP sendiri belum memiliki satu project matang untuk implementasi PHP diatas JVM.
Baca Juga
Menjalankan PHP pada .NET Core
Pada tulisan ini saya akan mencoba implementasi PHP pada JVM dari project JPHP. Yang membedakan implementasi JPHP dengan yang lain adalah PHP masih tidak bisa mengakses pustaka standar bawaan Java. JPHP menyediakan sendiri pustaka Java dan paket manajemen untuk digunakan khusus dengan PHP.
Instalasi JPHP pada Linux
Tulisan ini mengasumsikan bahwa anda sudah memiliki instalasi Java pada sistem anda. Tulisan ini menggunakan JPHP versi 0.6.7 versi Linux. Download JPHP untuk lihat pada tautan berikut:
https://github.com/jphp-group/jphp/releases
$ curl -O -L 'https://github.com/jphp-group/jphp/releases/download/jppm-0.6.7/jppm-0.6.7.tar.gz'
Setelah file didownload maka ekstrak file kompresi tersebut ke direktori tertentu. Dalam contoh digunakan /opt
.
$ sudo mkdir /opt/jphp
$ sudo tar xvf jppm-0.6.7.tar.gz -C /opt/jphp
Pastikan direktori /opt/jphp
ada dalam PATH environment variabel.
$ chmod +x /opt/jphp/jppm
$ export PATH=/opt/jphp:$PATH
Sekarang coba jalankan perintah jppm
apakah dikenali pada shell. Jika ya maka instalasi telah selesai.
$ jppm
-> linux
Menjalankan PHP dengan JPHP
Selain sebuah compiler dari PHP ke Java bytecode JPHP juga merupakan package manager. Kita akan menggunakan perintah init
untuk membuat skeleton project JPHP.
$ mkdir $HOME/jphp-test
$ cd $HOME/jphp-test
Lalu jalankan init
untuk membuat skeleton.
$ jppm init
-> linux
-> init
JPHP Packager 0.6.7
Init new package in dir '/root/jphp-test':
Enter name (jphp-test): (default = jphp-test)
Enter version (1.0.0): (default = 1.0.0)
Enter description: TeknoCerdas JPHP Test
Add 'jphp app' plugin? (default = Yes) (Y/n) (default = yes)
(info) Create dir '/root/jphp-test/src'
(info) Create new file '/root/jphp-test/src/index.php'
Success, package.php.yml has been created.
✨ Done.
Modifikasi file src/index.php
sesuai keinginan. Berikut adalah modifikasi yang dilakukan.
echo "TeknoCerdas.com - Berita teknologi yang mencerdaskan"
Jalankan dengan perintah start
. Awalnya akan muncul pesan instalasi paket-paket yang diperlukan.
$ jppm start
-> linux
-> app:run
-> install
-> install jphp-core@1.3.1
--> install jphp-runtime@1.3.1
-> install jphp-zend-ext@1.1.0
--> install jphp-json-ext@1.0.0
TeknoCerdas.com - Berita teknologi yang mencerdaskan
Jika ingin melakukan build untuk menghasilkan JAVA .jar maka gunakan perintah build
.
$ jppm build
> linux
-> app:clean
-> install
-> app:build
(info) Create dir './build'
(info) Create new file './build/jphp-test-1.0.0.jar'
(info) Create dir './build/.app'
-> add jar: ./vendor//jphp-core/jars/jphp-core-0.9.3-SNAPSHOT.jar
(info) Create dir './build/libs'
-> add jar: ./vendor//jphp-core/jars/asm-util-7.3.1.jar
-> add jar: ./vendor//jphp-core/jars/asm-7.3.1.jar
-> add jar: ./vendor//jphp-core/jars/asm-analysis-7.3.1.jar
-> add jar: ./vendor//jphp-core/jars/asm-tree-7.3.1.jar
-> add jar: ./vendor//jphp-core/jars/asm-commons-7.3.1.jar
-> add jar: ./vendor//jphp-runtime/jars/jphp-runtime-1.0.3.jar
-> add jar: ./vendor//jphp-zend-ext/jars/jphp-zend-ext-0.9.3-SNAPSHOT.jar
-> add jar: ./vendor//jphp-json-ext/jars/gson-2.7.jar
-> add jar: ./vendor//jphp-json-ext/jars/jphp-json-ext-0.9.3-SNAPSHOT.jar
-> add dir: /root/jphp-test/src
--> add file: /root/jphp-test/src/index.php
-> create jphp app launcher
(info) Create dir './build/.app/JPHP-INF/'
(info) Create dir './build/.app/META-INF/'
(info) Create new file './build/.app/META-INF/MANIFEST.MF'
(info) Delete file './build/.app'
(info) Create new file './build/jphp-test-1.0.0'
(info) Create new file './build/jphp-test-1.0.0.bat'
Use '././build/jphp-test-1.0.0' to run the result app.
-----
Building time: 0.38 sec.
Building is SUCCESSFUL. :)
-> build
Hasil build akan berada pada direktori build/
.
$ ls -l build/
ls -l build/*
-rw-r--r-- 1 root root 5281 Mar 30 09:55 build/jphp-test-1.0.0
-rw-r--r-- 1 root root 2647 Mar 30 09:55 build/jphp-test-1.0.0.bat
-rw-r--r-- 1 root root 609 Mar 30 09:55 build/jphp-test-1.0.0.jar
build/libs:
total 2600
-rw-r--r-- 1 root root 121836 Mar 30 09:55 asm-7.3.1.jar
-rw-r--r-- 1 root root 33446 Mar 30 09:55 asm-analysis-7.3.1.jar
-rw-r--r-- 1 root root 71548 Mar 30 09:55 asm-commons-7.3.1.jar
-rw-r--r-- 1 root root 52826 Mar 30 09:55 asm-tree-7.3.1.jar
-rw-r--r-- 1 root root 84817 Mar 30 09:55 asm-util-7.3.1.jar
-rw-r--r-- 1 root root 231952 Mar 30 09:55 gson-2.7.jar
-rw-r--r-- 1 root root 505239 Mar 30 09:55 jphp-core-0.9.3-SNAPSHOT.jar
-rw-r--r-- 1 root root 17336 Mar 30 09:55 jphp-json-ext-0.9.3-SNAPSHOT.jar
-rw-r--r-- 1 root root 1257309 Mar 30 09:55 jphp-runtime-1.0.3.jar
-rw-r--r-- 1 root root 268166 Mar 30 09:55 jphp-zend-ext-0.9.3-SNAPSHOT.jar
Untuk menjalankan maka perintah yang harus dipanggil adalah build/jphp-test-1.0.0
.
$ sh build/jphp-test-1.0.0
TeknoCerdas.com - Berita teknologi yang mencerdaskan