JPHP
Новый движок php для Java VM + JIT
JPHP ‑ что это?
Компилятор для языка PHP•
Компилирует в байт код Java VM•
Java VM использует JIT•
Похож на проекты JRuby, ...
Цели проекта
Использовать Java библиотеки в PHP•
JIT, увеличить производительность•
Заменить уродливую runtime библиотеку ...
Взгляд на конкурентов?
JPHP это не замена для Zend PHP или для Facebook
HHVM.
•
В планах нет реализации Zend расширений (н...
JPHP это другой путь
JPHP ‑ это лишь реализация языка•
Без библиотек zend ‑ curl, pdo, prce и т.п.•
Со своей runtime библи...
Похожие проекты
Querqus (GPL) ‑ написан на Java, транслятор из php в
Java код, требует javac (и JDK), в составе Resin серв...
Уровень поддержки PHP?
Все, что есть в PHP 5.2•
Замыкания (Closures) ‑ php 5.3•
Namespaces ‑ php 5.3•
Spl Autoloading ‑ ph...
JIT и производительность
JPHP быстрее Zend PHP•
В худшем случае не медленее•
JIT позволяет быть быстрее в 1‑10 раз•
На реа...
Что умеет оптимизатор?
Считать константные значения•
Раскрывать статические
константы
•
Считать immutable функции во
время...
Java + PHP? Стек технологий Java
Написание расширений на Java•
Возможность вызывать Java код из php без написания
расширен...
Юникод для строк?
В JPHP юникодные строки (UTF‑16)•
Однако, на уровне движка существуют бинарные
строки для бинарных данны...
Мелкие различия с PHP
Для integer используются 64 битные числа на всех
платформах
•
eval() ‑ слишком медленный, чтобы его ...
GUI? Программы?
Возможно!•
Есть расширение JPHP‑Swing•
Оно позволяет писать GUI программы для
Linux/Windows/MacOS
•
Умеет ...
HTTP Сервер?
Легко!•
Многопоточный? Да!•
С помощью классов•
phpnetSocket–
phpnetServerSocket–
рhplangThread–
phpconcurrent...
Немного о проекте
Разработка начата в октябре 2013 года•
Это был эксперемент•
1 разработчик и 4 месяца активной разработки...
Какое будущее у проекта?
Android ?•
?•
Как попробовать?
Нужен Gradle (http://www.gradle.org/)•
Исходники из репозитария jphp•
Посмотреть исходники проекта jphp‑e...
Чем помочь проекту?
Хорошим словом, предложениями и
пожеланиями
•
Своим кодом, написанием расширений•
Тестированием•
Расск...
Спасибо за внимание
Дмитрий Зайцев aka Dim‑S•
Java/PHP разработчик (опыт работы с Zend API)–
dz@dim‑s.net, d.zayceff@gmail...
Upcoming SlideShare
Loading in...5
×

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

524,452

Published on

JPHP is a new implementation of PHP

Published in: Technology
2 Comments
6 Likes
Statistics
Notes
  • Нет, это не Java с синтаксисом PHP. JPHP решает проблемы php-программистов, а не java-программистов. Задачи JPHP в презентации описаны.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Спасибо за презентацию :)
    Вопрос. Зачем нужен JPHP, если есть JAVA? Какую проблемму решает JPHP? Это JAVA с синтаксисом PHP?
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
524,452
On Slideshare
0
From Embeds
0
Number of Embeds
396
Actions
Shares
0
Downloads
33
Comments
2
Likes
6
Embeds 0
No embeds

No notes for slide

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

  1. 1. JPHP Новый движок php для Java VM + JIT
  2. 2. 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•
  3. 3. Цели проекта Использовать Java библиотеки в PHP• JIT, увеличить производительность• Заменить уродливую runtime библиотеку PHP• Расширить сферы применения PHP• Юникод, многопоточность (threads)•
  4. 4. Взгляд на конкурентов? JPHP это не замена для Zend PHP или для Facebook HHVM. • В планах нет реализации Zend расширений (например Curl, PRCE и т.п.) • Это не конкурент• Не для того, чтобы заменить Zend PHP на web хостингах. •
  5. 5. JPHP это другой путь JPHP ‑ это лишь реализация языка• Без библиотек zend ‑ curl, pdo, prce и т.п.• Со своей runtime библиотекой• Которая построенна на ООП, с использованием namespaces • Однако, часть core функций php реализована• Но в будущем будет удалена как устаревшая•
  6. 6. Похожие проекты Querqus (GPL) ‑ написан на Java, транслятор из php в Java код, требует javac (и JDK), в составе Resin сервера • JPHP на выходе дает байткод, а не java код– Phalanger ‑ написан на C#, компилятор в байткод .NET, завязан на стек технологий Microsoft • А также проекты, не нуждающиеся в представлении:• Facebook HHVM– kPHP от vkontakte–
  7. 7. Уровень поддержки 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+•
  8. 8. JIT и производительность JPHP быстрее Zend PHP• В худшем случае не медленее• JIT позволяет быть быстрее в 1‑10 раз• На реальном коде в среднем в 1.5‑2 раза• Но это не все ‑ оптимизатор помогает стать еще быстрее • О нем далее...•
  9. 9. Что умеет оптимизатор? Считать константные значения• Раскрывать статические константы • Считать immutable функции во время компиляции • Отбрасывать невыполнимые условия во время компиляции • Оптимизировать вызов immutable функций •
  10. 10. Java + PHP? Стек технологий Java Написание расширений на Java• Возможность вызывать Java код из php без написания расширения • Возможность сборки php проекта в jar файл• Компиляция в JVM байткод с возможностью многократной его загрузки • Опционально: HOT reload режим работы движка• Встроенная система кеширования классов и функций•
  11. 11. Юникод для строк? В JPHP юникодные строки (UTF‑16)• Однако, на уровне движка существуют бинарные строки для бинарных данных • Все стороковые операции поддерживают юникод• JPHP использует класс java.lang.String для хранения строк • Строки immutable внутри движка, но снаружи нет• StringBuilder не нужен, .= заменяет его• $string[1] = "A" ‑ медленная операция•
  12. 12. Мелкие различия с PHP Для integer используются 64 битные числа на всех платформах • eval() ‑ слишком медленный, чтобы его активно использовать • Код в глобальном пространтсве медленее чем в функциях и методах (в среднем в 2 раза) • Вызывать магические extract(), get_defined_vars(), compact() через call_user_func() невозможно • В __toString() можно использовать exceptions•
  13. 13. GUI? Программы? Возможно!• Есть расширение JPHP‑Swing• Оно позволяет писать GUI программы для Linux/Windows/MacOS • Умеет грузить формы из xml файлов• Имеет простой апи• Поддерживается автором jphp•
  14. 14. HTTP Сервер? Легко!• Многопоточный? Да!• С помощью классов• phpnetSocket– phpnetServerSocket– рhplangThread– phpconcurrentExecuterService–
  15. 15. Немного о проекте Разработка начата в октябре 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•
  16. 16. Какое будущее у проекта? Android ?• ?•
  17. 17. Как попробовать? Нужен Gradle (http://www.gradle.org/)• Исходники из репозитария jphp• Посмотреть исходники проекта jphp‑example‑project• Запустить его• Детали тут: https://github.com/dim‑s/jphp•
  18. 18. Чем помочь проекту? Хорошим словом, предложениями и пожеланиями • Своим кодом, написанием расширений• Тестированием• Расскажите о проекте своим друзьям• Логотипом, его еще нет• Написанием мануалов, документации•
  19. 19. Спасибо за внимание Дмитрий Зайцев aka Dim‑S• Java/PHP разработчик (опыт работы с Zend API)– dz@dim‑s.net, d.zayceff@gmail.com– Весна, 2014 год–
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×