Quercus: PHP in Java
Quercus is Caucho Technology's fast, open-source, 100% Java implementation of the PHP language
Introduction to Quercus
Quercus is Caucho Technology's fast, open-source, 100% Java implementation of the PHP language. Quercus is a featur
What is Quercus
Quercus implements PHP 5 and is internationalization/localization (i18n/l10n) aware. Quercus natively supports Unicode and the new Unicode syntax of the up-and-coming PHP 6. Quercus implements a growing list of PHP extensions (i.e. APC, iconv, GD, gettext, JSON, MySQL, Oracle, PDF, Postgres, etc.) Many popular PHP applications will run as well as, if not better, than the standard PHP interpreter straight out of the box. The growing list of PHP software certified running on Quercus includes DokuWiki, Drupal, Gallery2, Joomla, Mambo, Mantis, MediaWiki, Phorum, phpBB, phpMyAdmin, PHP-Nuke, Wordpress, and XOOPS.
Resin with Quercus
Quercus is much more than just yet another PHP engine. Quercus is the first to tightly integrate the web server with a PHP engine. Quercus runs on top of Caucho Technology's Resin Application Server. As a result, PHP applications can automatically and immediately take advantage of Resin's advanced features like connection pooling, distributed sessions, load balancing, and proxy caching.
A New Java/PHP Architecture
Quercus is pioneering a new mixed Java/PHP approach to web applications and services. On Quercus, Java and PHP is tightly integrated with each other - PHP applications can choose to use Java libraries and technologies like JMS, EJB, SOA frameworks, Hibernate, and Spring. This revolutionary capability is made possible because 1) PHP code is interpreted/compiled into Java and 2) Quercus and its libraries are written entirely in Java. This enables PHP applications and Java libraries to talk directly with one another at the program level. To faciliate this new Java/PHP architecture, Quercus provides an API and interface to expose Java libraries to PHP.
Benefits of Quercus
Quercus and Quercus' PHP libraries are written entirely in Java, thereby taking the advantages of Java applications and infusing them into PHP. PHP applications running on Quercus are simply faster, easier to develop, more capable, more secure, and more scalable than any other PHP solution.
Performance - simply faster
Quercus outperforms straight mod_php by about 4x for MediaWiki and Drupal.
PHP developers can use Java tools like profilers to get in-depth information about the PHP program performance.
Development - fast, safe, and easy
PHP extensions written in Java are fast, safe, and relatively easy to develop compared to those written in C. Since Java is the library language, developers won't need to be paranoid about third-party libraries having C-memory problems or segvs and are freed to concentrate on solving the objectives at hand.
Capability - powerful Java technologies at the developer's fingertips
Quercus has the best of both worlds: PHP and Java. PHP applications can take advantage of Java technologies like JMS, EJB, SOA frameworks, Hibernate, and Spring.
Security - no more pesky C memory bugs
All Quercus extensions libraries are coded in Java. Therefore, developers do not have to worry about C pointer overruns and segmentation faults from PHP extensions anymore.
Scalability - PHP for the masses, literally
Thanks to Resin, PHP applications can beautifully scale to as many servers as desired.
PHP applications can now enjoy connection pooling, distributed sessions, fail-safe load balancing, and proxy caching. These benefits require no change in the PHP code.
Quercus gives both Java and PHP developers a fast, safe, and powerful alternative to the standard PHP intepreter. Developers ambitious enough to use PHP in combination with Java will benefit the most from what Quercus has to offer.
Getting Started with Quercus
Quercus is officially part of 3.1.0. Please go through the Hello World tutorial to get a simple PHP page up and running on Quercus.
Overview, status, and discussions on Quercus, Caucho's Java implementation of the PHP language.
Quercus provides a number of Resin-specific function to integrate with JNDI, JMS, JMX, and provide extra debugging.