Your SlideShare is downloading. ×
JPHP - О проекте на простом языке
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

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

519,644
views

Published on

JPHP is a new implementation of PHP

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
519,644
On Slideshare
0
From Embeds
0
Number of Embeds
392
Actions
Shares
0
Downloads
31
Comments
2
Likes
6
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

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