JPHP - การใช้งาน PHP
JPHP เป็นการใช้งานใหม่สำหรับ PHP ซึ่งใช้ Java VM รองรับคุณสมบัติมากมายของภาษา PHP (7.1+)
มันทำงานอย่างไร? JPHP เป็นคอมไพเลอร์เช่น javac
โดยจะคอมไพล์ซอร์ส php เป็นโค้ดไบต์ JVM จากนั้นจึงดำเนินการผลลัพธ์บน Java VM ได้
- เว็บไซต์อย่างเป็นทางการ: jphp.develnext.org
- JPHP สุดยอดเลย
ในการผลิต
เราพัฒนา IDE ใหม่สำหรับผู้เริ่มต้น เช่น Game Maker
หรือ Scirra Construct
มันใช้ JPHP, JavaFX, Java 8, Gradle และอนุญาตให้สร้างเกมเดสก์ท็อปและแอพสำหรับ Linux, Windows และ Mac (อาจเป็น Android และแพลตฟอร์มอื่น ๆ ในอนาคต) ชื่อโครงการคือ DevelNext
(https://github.com/jphp-group/develnext-ide) สถานะปัจจุบันและเวอร์ชันของโครงการคือ BETA โครงการยังไม่ได้รับการแปลเป็นภาษาอังกฤษ
เป้าหมาย
JPHP ไม่ใช่สิ่งทดแทนเอ็นจิ้น Zend PHP หรือ Facebook HHVM เราไม่ได้วางแผนที่จะใช้ไลบรารีรันไทม์ zend (เช่น Curl, PRCE ฯลฯ) สำหรับ JPHP
โครงการของเราเริ่มต้นในเดือนตุลาคม 2013 มีเหตุผลบางประการดังนี้:
- ความสามารถในการใช้ไลบรารี Java ใน PHP (ส่วนขยายของตัวเอง + อื่น ๆ )
- การแทนที่ไลบรารีรันไทม์ที่น่าเกลียดของ Zend PHP ด้วยไลบรารีรันไทม์ที่ดีกว่า
- การใช้ภาษา PHP ไม่ใช่แค่บนเว็บเท่านั้น
- มัลติเธรดเหมือนใน Java และ C#
- สตริง Unicode (รองรับ UTF-8, UTF-16 เต็มรูปแบบ)
- การสร้างแอปพลิเคชัน GUI Android และเดสก์ท็อปด้วยภาษา PHP
คุณสมบัติ
- PHP 7.1+ (และฟีเจอร์ภาษามากมายตั้งแต่ PHP 7.2, 7.3, 7.4)
- JIT (เร็วขึ้น ~2.5 เท่า PHP 5.6, ~1.1 เท่าเร็วกว่า PHP 7.0, ~13% ช้ากว่า PHP 7.4, ม้านั่งสำรอง)
- การใช้ไลบรารี Java และคลาสในโค้ด PHP
- Unicode สำหรับสตริง (UTF-16 เช่นเดียวกับใน Java)
- การทำเกลียว, ซ็อกเก็ต, สถาปัตยกรรมสภาพแวดล้อม (เช่น อ็อบเจ็กต์แซนด์บ็อกซ์ในส่วนขยาย runkit zend)
- GUI (JavaFX หรือ SWT)
- ระบบแคชแบบฝังสำหรับคลาสและฟังก์ชัน
- ตัวเลือก Hot Reloading สำหรับคลาสและฟังก์ชัน
- ความสามารถในการใช้งานบนระบบปฏิบัติการ Android : jphp-android
JPHP รองรับอะไรจาก PHP 7.2
- คุณลักษณะทั้งหมดยกเว้น RFC: การขยายประเภทพารามิเตอร์
JPHP รองรับอะไรจาก PHP 7.3
- คุณสมบัติทั้งหมดยกเว้น RFC: ไวยากรณ์ Heredoc ที่ยืดหยุ่นและ Nowdoc
JPHP รองรับอะไรจาก PHP 7.4
- Typed Properties 2.0 (บางส่วน ไม่รองรับการอ้างอิง)
- การอ้างอิงที่อ่อนแอ
- ฟังก์ชั่นลูกศร 2.0 (+ ไวยากรณ์หลายบรรทัด)
- อนุญาตให้ส่งข้อยกเว้นจาก __toString()
- ตัวดำเนินการมอบหมายการรวมศูนย์
- numeric_literal_separator
- ตัวดำเนินการกระจายใน Array Expression
ส่วนขยายของตัวเอง
- Standard Library - ไลบรารีมาตรฐานรันไทม์ของตัวเอง
- เซิร์ฟเวอร์ Http (+ ซ็อกเก็ตเว็บ + มัลติเธรด)
- GUI (JavaFX หรือ SWT)
- Git (ขึ้นอยู่กับ JGit)
- JSoup - สำหรับการแยกวิเคราะห์ html ในรูปแบบ jQuery
- SQL (รองรับ MySQL, PostgreSQL, SQLite, Firebird)
- SSH - สำหรับการทำงานกับโปรโตคอล ssh
- Yaml - สำหรับการแยกวิเคราะห์และจัดรูปแบบ yaml
- บีบอัด - สำหรับการทำงานกับ tar, gz, bz2, lz4, ไฟล์ zip
- HttpClient - ไคลเอนต์ http พร้อมสัญญา
- SemVer - สำหรับการแยกวิเคราะห์เวอร์ชันในมาตรฐาน SemVer
- เมล - สำหรับการส่งอีเมลผ่านเซิร์ฟเวอร์ SMTP
- MongoDB - ไดรเวอร์สำหรับ Mongo DB 3.0+
เอกสารประกอบ
- คุณสามารถค้นหาเอกสาร API ล่าสุดได้ที่นี่: jphp-runtime/api-docs
- วิกิที่นี่: อ่าน
การเริ่มต้นใช้งาน (สวัสดีชาวโลก)
- ติดตั้ง jphp package manager (jppm) วิธีการติดตั้ง
- เริ่มต้นโครงการใหม่ (แพ็คเกจ jppm) ด้วยค่าเริ่มต้น:
- ทำงานในคอนโซล
jppm start
คุณจะเห็น Hello World
บนคอนโซลของคุณ แหล่งที่มาของโปรแกรมนี้จะอยู่ใน src/index.php
- (ไม่บังคับ) หากต้องการอัปเดตเวอร์ชัน jphp ของโปรเจ็กต์เก่าของคุณ:
จะรันการวัดประสิทธิภาพได้อย่างไร?
// via jphp
./gradlew bench
// via php
php -f bench/src/bench.php
สร้าง SNAPSHOT จากแหล่งที่มา
ใช้ gradle install
เพื่อสร้างและติดตั้งโมดูล jphp และไลบรารีลงในที่เก็บในเครื่อง Mavel หลังจากนี้ คุณสามารถใช้ jphp ในโปรเจ็กต์ของคุณเป็นการพึ่งพา Maven ได้
org.develnext.jphp:jphp-<module>:<version>-SNAPSHOT