PHP Categorizzato
PHP è solo una lingua della colla proprio come BASH o Perl. Va bene, ma non va bene in qualsiasi altra cosa, lascia a parte qualche lavoro serio. La lingua non è progettata. Si è semplicemente evoluto hackerando insieme vari codici in modo casuale (code-and-fix).
Lingue compilate
Diversamente da PHP, Java è un linguaggio compilato che è stato progettato correttamente. Esistono JSR che definiscono la lingua, molti framework e concetti di livello enterprise come EJB, JMS, ESB, Spring, Struts, Hibernate e altri.
Software aziendale
In termini di sistemi aziendali, Java EE è una soluzione adatta allo scopo (Enterprise Edition) mentre PHP è utilizzato in aziende che stanno cercando di ridurre i costi assumendo una manodopera a basso costo con meno qualifiche.
C'è stato un notevole sforzo per trascinare PHP nel segmento Enterprise usando vari framework. In particolare, Zend Framework 2 . Il problema fondamentale qui non è l'orientamento all'oggetto di PHP, ma è la mancanza di progettazione, manca una strong tipizzazione, soluzioni non standard ai problemi standard (una specie di hack per ogni cosa) e una completa mancanza di qualsiasi architettura prescritta.
Progettazione software (architettura discussa)
Con PHP, l'onere del software di progettazione è ancora pienamente agli sviluppatori che hanno svolto un lavoro molto scarso, spesso senza alcuna architettura, solo codice e correzione casuali. La sicurezza e le transazioni sono mancanti e devono essere snocciolate dagli sviluppatori. In Java, una soluzione è EJB con annotazioni. Considera anche il fatto che, in PHP, non succede nulla se si omettono di rilevare eccezioni o di commettere vari errori. Questo è fino al tempo di esecuzione. Con Java, riceverai avvisi ed errori direttamente in fase di progettazione. Questo si chiama robustezza, ma con PHP puoi continuare a sognare.
Multithreading
PHP non supporta il multithreading. Il codice è sempre un singolo thread. Questo ostacola le sue prestazioni per problemi non banali sotto carico più pesante. Con Java EE, il multithreading è completamente supportato, ad esempio tramite l'interfaccia Runnable.
Supporto e standard
Considerare anche la distribuzione, i servizi Web e altri standard. Mentre in Java ci sono grandi aziende come Oracle, IBM, RedHat, Apache e molte altre, PHP ha solo Zend.
Conclusione
Per concludere, PHP è un pessimo linguaggio orientato agli oggetti. A rigor di termini, non è nemmeno orientato agli oggetti, ma ibrido che non va bene dalle versioni di > 5 perché OOP è confuso con la programmazione procedurale. Vorrei solo raccomandare PHP come colla come BASH, ma per il lavoro serio userei Java EE.
Pensieri correlati
L'accordo principale con l'ultimo Zend Framework 2 è che sta cercando di essere come Java EE, ma non riesce a fornire almeno un insieme paragonabile di pacchetti, funzionalità, strumenti, automazione, controllo degli errori, architettura, design e tutto.
È, secondo la mia esperienza, più costoso usare PHP per progetti complessi rispetto a Java.
Ci sono anche alcune voci come quelle in cui PHP sta per Pretty Horrible Programming . Posso confermarli.