Introdução
Quando eu estudei JSP pela primeira vez, no inÃcio do ano de 2002, foi que eu escutei falar pela primeira vez em uma empresa chamada Caucho, a criadora do contâiner de servlet Resin. Se me lembro bem, naquela época o resin era considerado um contâiner bom, mas ele não era gratuito, o que me fez partir para o lado do Apache Tomcat e nunca mais procurei por informações do resin.
Conhecendo o quercus
Há alguns meses atrás, eu li uma notÃcia que me chamou a atenção:
“Resin agora interpreta PHP e é centenas de vezes mais rápido do que
o mod_php”. Pensei comigo mesmo: “Eu preciso ver se isso é verdade”.
Eu dei uma pesquisada, mas nada profundo e deixei pra lá. Bem, estes dias lembrei disso e fui no site da caucho para verificar e aà eu tive a surpresa e ver a chamada para o quercus, que é uma implementação do PHP em JAVA para rodar preferencialmente sob o resin, mas pode ser usado em outros servidores web também. Segundo a caucho, a implementação deles é mais rápida e mais estável do que a implementação oficial do PHP, escrita em C, o que duvido muito, visto que JAVA não é um primor em se tratando de velocidade.
Uma coisa que me chamou a atenção, é que no site deles, consta que durante o month of PHP Bugs eles observaram os BUGs relatados e constataram que a maioria dos BUGs encontrados no PHP não afetavam a implementação deles simplesmente porque era
escrita em JAVA, faz sentido, mas não porque é feita em JAVA e sim porque é uma reimplementação durante a reimplementação, alguns bugs podem ter sido corrigidos.
Atualmente, diversos sistemas escritos em PHP já estão portados para rodar sob o quercus/resin, como por exemplo o Joomla, Mambo, PHPBB, Wordpress, Drupal, entre outros e diversos módulos do PHP já foram portados para ele como o PDO, Gettext, JSON, entre outros, e pelo que pude observar a maior parte do código PHP funciona sem necessidade de nenhuma alteração. Ou seja, você pode pegar seu script que hoje está funcionando sob o Apache HTTPD e colocar para rodar sob o quercus/resin.
Todo o código PHP ao ser compilado pelo Quercus, é compilado para código bytecode JAVA, que permite uma integração de PHP com JAVA bem mais amigável do que a oferecida atualmente pelo PHP (excluindo a solução da Zend:Zend Platform) o que pode ser interessante para quem está ecessitando de algo parecido.
Compatibilidade com outros servidores de aplicação JAVA
O Engine do Quercus pode ser configurado em qualquer servidor de aplicação JAVA, sendo assim seu script PHP pode rodar sob qualquer um desses servidores.
Tirando o fato de os servidores de aplicações JAVA serem devoradores de memória e processamento, em alguns casos pode ser interessante para algumas corporações ter os seus sistemas em PHP rodando sob essa plataforma principalmente se tiver o interesse em utilizar os pools de conexões administrados por estes servidores.
Meus testes
Atualmente estou bastante ocupado com minhas atividades profissionais e também com a organização do evento PHPDF Roadshow, portanto, não pude realizar testes mais apurados, o que eu farei assim que possÃvel.
Eu realizei um pequeno teste que já me deixou com um pé atrás, porque ao executar a primeira vez, o script é executado com sucesso, mas ao dar reload na página, é gerado uma stacktrace JAVA e aà o script não funciona de forma nenhuma.
Em relação à velocidade, eu não pude fazer nenhum benchmarking, mas pelo que observei nos meus pequenos testes, é que realmente a velocidade não deixou a desejar, só que os testes que eu fiz não podem servir de parâmetro para estes quesitos.
Mas, de um modo geral, eu creio que vai demorar ainda para que as empresas e órgãos
do governo migrem para esta plataforma, se é que algum dia o farão.
Segue abaixo o código-fonte do meu teste:
class Teste {
private $nome = NULL;
public function setNome($nome)
{
$this->nome = $nome;
} public function getNome()
{
return $this->nome;
}
public function mostra()
{
echo “O nome do infeliz eh: “.$this->nome;
}
}
$obj = new Teste();
$obj->setNome(”Marmelada”);
$obj->mostra();
print_r($obj);
var_dump(get_class_methods(”Teste”));
Licença
Quercus é Open Source sob a licença GPL
Considerações finais
Eu achei esta implementação interessante. Este é mais um exemplo de que o PHP é um padrão para desenvolvimento WEB e isso está mais que comprovado.
As empresas que atuam nesta área sabem disso e estão fazendo o que podem para poder tirar o melhor proveito dessa situação.
Para o PHP como um todo, pode ser interessante estudar esta implementação para que a integração do PHP com JAVA, na distribuição oficial do PHP um dia seja mais estável.
Enfim, acho válido qualquer esforço que possa consolidar o PHP como a melhor linguagem para desenvolvimento WEB da atualidade.