JPHP — реализация PHP.
JPHP — это новая реализация PHP, использующая виртуальную машину Java. Он поддерживает многие функции языка PHP (7.1+).
Как это работает? JPHP — это компилятор, подобный javac
, он компилирует источники PHP в байт-код JVM, а затем может выполнить результат на виртуальной машине Java.
- Официальный сайт: 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), текущий статус и версия проекта — БЕТА. Проект пока не локализован на английский язык.
Цели
JPHP не является заменой движка Zend PHP или Facebook HHVM. Мы не планируем реализовывать библиотеки времени выполнения Zend (например, Curl, PRCE и т. д.) для JPHP.
Наш проект стартовал в октябре 2013 года. Причин тому было несколько:
- Возможность использования Java-библиотек в PHP (собственные расширения + другое)
- Замена уродливой библиотеки времени выполнения Zend PHP на лучшую библиотеку времени выполнения.
- Использование языка PHP не только в Интернете
- Многопоточность, как в Java и C#.
- Строки Юникода (полная поддержка UTF-8, UTF-16).
- Создание GUI-приложений для Android и настольных компьютеров на языке PHP.
Функции
- PHP 7.1+ (и многие языковые функции PHP 7.2, 7.3, 7.4).
- JIT (~2,5 раза быстрее PHP 5.6, ~1,1x быстрее PHP 7.0, ~13% медленнее, чем PHP 7.4, стендовый).
- Использование Java-библиотек и классов в PHP-коде.
- Юникод для строк (UTF-16, как в Java)
- Потоки, сокеты, архитектура среды (например, объекты песочницы в расширении Zend Runkit).
- Графический интерфейс (JavaFX или SWT)
- Встроенная система кэширования классов и функций.
- Дополнительная горячая перезагрузка классов и функций.
- Возможность использования на ОС Android : jphp-android
Что JPHP поддерживает с PHP 7.2?
- Все функции, кроме RFC: расширение типа параметра.
Что JPHP поддерживает с PHP 7.3?
- Все функции, кроме RFC: гибкие синтаксисы Heredoc и Nowdoc.
Что поддерживает JPHP начиная с PHP 7.4?
- Типизированные свойства 2.0 (частично ссылки не поддерживаются)
- Слабые ссылки
- Стрелочные функции 2.0 (+ многострочный синтаксис)
- Разрешить выдачу исключений из __toString()
- Оператор присваивания нулевого объединения
- numeric_literal_separator
- Оператор расширения в выражении массива
Собственные расширения
- Стандартная библиотека — собственная стандартная библиотека времени выполнения.
- Http-сервер (+ веб-сокеты + многопоточность)
- Графический интерфейс (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 (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