jphp - О проекте на простом языке

Post on 12-Jul-2015

523.057 Views

Category:

Technology

12 Downloads

Preview:

Click to see full reader

TRANSCRIPT

JPHP Новый движок php для Java VM + JIT

JPHP ‑ что это?

Компилятор для языка PHP •

Компилирует в байт код Java VM •

Java VM использует JIT •

Похож на проекты JRuby, Jython •

OpenSource, Apache License 2.0, github •

Поддержка PHP 5.3+ (и немного 5.4 и 5.5) •

Написан с нуля на Java •

Не использует библиотеки Zend PHP •

Цели проекта

Использовать Java библиотеки в PHP •

JIT, увеличить производительность •

Заменить уродливую runtime библиотеку PHP •

Расширить сферы применения PHP •

Юникод, многопоточность (threads) •

Взгляд на конкурентов?

JPHP это не замена для Zend PHP или для Facebook

HHVM.

В планах нет реализации Zend расширений (например

Curl, PRCE и т.п.)

Это не конкурент •

Не для того, чтобы заменить Zend PHP на web

хостингах.

JPHP это другой путь

JPHP ‑ это лишь реализация языка •

Без библиотек zend ‑ curl, pdo, prce и т.п. •

Со своей runtime библиотекой •

Которая построенна на ООП, с использованием

namespaces

Однако, часть core функций php реализована •

Но в будущем будет удалена как устаревшая •

Похожие проекты

Querqus (GPL) ‑ написан на Java, транслятор из php в

Java код, требует javac (и JDK), в составе Resin сервера

JPHP на выходе дает байткод, а не java код –

Phalanger ‑ написан на C#, компилятор в байткод

.NET, завязан на стек технологий Microsoft

А также проекты, не нуждающиеся в представлении: •

Facebook HHVM –

kPHP от vkontakte –

Уровень поддержки PHP?

Все, что есть в PHP 5.2 •

Замыкания (Closures) ‑ php 5.3 •

Namespaces ‑ php 5.3 •

Spl Autoloading ‑ php 5.3 •

Type hinting для array, classes, callable ‑ 5.3+ •

Короткий синтаксис для массивов ‑ 5.4 •

Try ... finally ‑ из 5.5 •

и многое другое из 5.3+ •

JIT и производительность

JPHP быстрее Zend PHP •

В худшем случае не медленее •

JIT позволяет быть быстрее в 1‑10 раз •

На реальном коде в среднем в 1.5‑2 раза •

Но это не все ‑ оптимизатор помогает стать еще

быстрее

О нем далее... •

Что умеет оптимизатор? Считать константные значения •

Раскрывать статические константы

Считать immutable функции во время компиляции

Отбрасывать невыполнимые условия во время компиляции

Оптимизировать вызов immutable функций

Java + PHP? Стек технологий Java

Написание расширений на Java •Возможность вызывать Java код из php без написания расширения

Возможность сборки php проекта в jar файл •Компиляция в JVM байткод с возможностью многократной его загрузки

Опционально: HOT reload режим работы движка •Встроенная система кеширования классов и функций •

Юникод для строк?

В JPHP юникодные строки (UTF‑16) •Однако, на уровне движка существуют бинарные строки для бинарных данных

Все стороковые операции поддерживают юникод •JPHP использует класс java.lang.String для хранения строк

Строки immutable внутри движка, но снаружи нет •StringBuilder не нужен, .= заменяет его •$string[1] = "A" ‑ медленная операция •

Мелкие различия с PHP

Для integer используются 64 битные числа на всех платформах

eval() ‑ слишком медленный, чтобы его активно использовать

Код в глобальном пространтсве медленее чем в функциях и методах (в среднем в 2 раза)

Вызывать магические extract(), get_defined_vars(), compact() через call_user_func() невозможно

В __toString() можно использовать exceptions •

GUI? Программы?

Возможно! •Есть расширение JPHP‑Swing •Оно позволяет писать GUI программы для Linux/Windows/MacOS

Умеет грузить формы из xml файлов •Имеет простой апи •Поддерживается автором jphp •

HTTP Сервер?

Легко! •Многопоточный? Да! •С помощью классов •

php\net\Socket –php\net\ServerSocket –рhp\lang\Thread –php\concurrent\ExecuterService –

Немного о проекте

Разработка начата в октябре 2013 года •Это был эксперемент •1 разработчик и 4 месяца активной разработки •Автор проекта: Дмитрий Зайцев (http://habrahabr.ru/users/dim_s/)

JPHP проходит около 300+ тестов от Zend успешно

Адрес проекта: http://github.com/dim‑s/jphp •Поддержка Java 6, 7, 8 (OpenJDK, Oracle) •Для работы JPHP достаточно JRE •

Какое будущее у проекта?

Android ? •? •

Как попробовать?

Нужен Gradle (http://www.gradle.org/) •Исходники из репозитария jphp •Посмотреть исходники проекта jphp‑example‑project •Запустить его • Детали тут: https://github.com/dim‑s/jphp •

Чем помочь проекту?

Хорошим словом, предложениями и пожеланиями

Своим кодом, написанием расширений •Тестированием •Расскажите о проекте своим друзьям •Логотипом, его еще нет •Написанием мануалов, документации •

Спасибо за внимание

Дмитрий Зайцев aka Dim‑S •Java/PHP разработчик (опыт работы с Zend API) –dz@dim‑s.net, d.zayceff@gmail.com –Весна, 2014 год –

top related