November 16, 2010
I discovered Quercus (PHP in Java) a while back and have become quite a fan of the solution. Of cause, one thing is that I personally have shifted to Java from PHP and prefer Java to any interpreting language these days (and that is after having developed the whole Yoxel open source project in PHP) but aside this bias my main reason is “ease of deployment”.
It is sometimes tricky to install PHP software packages because standard PHP configuration that you have on your system may not be enough. For example, Yoxel, depending on the configuration, may require LDAP (–with-ldap), IMAP (–with-imap), JPEG/FREETYPE/PNG (–with-freetype-dir, –with-jpeg-di, –with-png-dir). All that may require custom compilation of PHP itself (and even additional libraries) and complicates life for the person installing the package. I am actually pretty sure many users simply give up because they did not want to compile their PHP from scratch.
With Quercus/Java this problem would be solved. I, as a producer of the software package, can throw all necessary jars into my WAR (including the quercus.jar) and the WAR is ready to be deployed in your app server. No re-compilation of anything required!
One could go even one step further and embed jetty http server in the package then the end user simply starts the app on a port and it runs. No app server is even required! Isn’t this great?
Of cause I have also discovered that some of the 3rd party modules that we use are not working under Quercus so we would have to throw them away and use JVM’s functionality instead. Some rewriting on our side would have to happen if we wanted to keep the full functionality of our software (not much though). But that is probably only better, the package would be leaner.
Anyways, internally we have an installation of Yoxel under Quercus and it works just fine. I hope to productize it some day and make that “easy to deploy” (php for java) package available for download.