Categorizado PHP
PHP é apenas uma linguagem de cola, como BASH ou Perl. É bom nisso, mas não é bom em qualquer outra coisa, deixando de lado algum trabalho sério. O idioma não foi projetado. Ele é apenas evoluído ao hackear vários códigos juntos de maneira aleatória (código e correção).
Idiomas compilados
Ao contrário do PHP, Java é uma linguagem compilada que foi projetada adequadamente. Existem JSRs que definem a linguagem, muitas estruturas e conceitos de nível corporativo, como EJB, JMS, ESB, Spring, Struts, Hibernate e outros.
Software empresarial
Em termos de sistemas corporativos, o Java EE é uma solução adequada ao objetivo (Enterprise Edition), enquanto o PHP é usado em empresas que estão tentando reduzir custos, contratando mão de obra barata e com qualificações menores.
Houve um esforço considerável para arrastar o PHP para o segmento Enterprise usando várias estruturas. Mais notavelmente, o Zend Framework 2 . O problema fundamental aqui não é a orientação a objetos do PHP, mas é a falta de design, falta de digitação forte, soluções não padrão para problemas padrão (tipo de hacks para tudo) e uma falta completa de qualquer arquitetura prescrita.
Design de software (arquitetura discutida)
Com o PHP, o ônus da arquitetura de software ainda depende inteiramente dos desenvolvedores que estão fazendo um trabalho muito ruim, ou seja, geralmente não possuem nenhuma arquitetura, apenas codificam e corrigem aleatoriamente. Faltam segurança e transações e precisam ser ignoradas pelos desenvolvedores. Em Java, uma solução é EJB anotada. Considere também o fato de que, no PHP, nada acontece se você omitir a captura de exceções ou cometer vários erros. Isso é até o tempo de execução. Com o Java, você receberá avisos e erros diretamente no tempo de design. Isso se chama robustez, mas com o PHP você só pode continuar sonhando.
Multithreading
O PHP não suporta multithreading. O código é sempre um único thread. Isso prejudica seu desempenho em problemas não triviais sob carga mais pesada. Com o Java EE, o multithreading é totalmente suportado, por exemplo, através da interface Runnable.
Suporte e padrões
Considere também a implantação, serviços da Web e outros padrões. Enquanto em Java existem grandes empresas como Oracle, IBM, RedHat, Apache e muitas outras, o PHP possui apenas o Zend.
Conclusão
Para concluir, o PHP é uma péssima linguagem orientada a objetos. A rigor, nem sequer é orientado a objetos, mas híbrido, o que é ruim nas versões> 5 porque o OOP está misturado com a programação procedural. Eu recomendaria apenas o PHP como uma cola como o BASH, mas para trabalhos sérios eu usaria o Java EE.
Pensamentos Relacionados
O principal acordo com o Zend Framework 2 mais recente é que ele está tentando se parecer com o Java EE, mas falha completamente em fornecer pelo menos um conjunto remotamente comparável de pacotes, recursos, ferramentas, automação, verificação de erros, arquitetura, design e tudo.
Na minha experiência, é mais caro usar o PHP para projetos complexos do que com o Java.
Existem também alguns rumores como o de que PHP significa Pretty Horrible Programming . Eu posso confirmar isso.