A continuació poso una llista de coses desitjables i/o necessàries d'un llenguatge a l'hora de fer aplicacions web.
---------------
Bug finding:
php, interpretat i no compilat --> pot portar a errors xorra de sintaxis facin petar tota l'aplicacio
java, interpretat pero compilat, arregles els problemes de sintaxis abans de deployar
Deployment:
php, canvi en calent
java, war, upload, reload del aplication context
Includes:
Java, cada class importa nomes els class que necesita
PHP, model guarro en general, es fan includes de pagina, per aixo es mes recomenable fer la base amb orientacio a objectes abans de montar un caos de includes de pagines important.
Runtime:
Java - corre sobre Tomcat, es inestable en entorns de molta carrega, sempre obliga a reiniciar periodicament
PHP - mes estable, no necesita servidor apart, es un modul d'apache
Potencia del llenguatge:
php funcionalitat d'arrays brutal sintaxi mes rapida
java, model d'objectes massa rigit i amb molta complexitat
Llibreries de cerca:
Java, millor en cercadors, Lucene
Entorns de desenvolupament:
Java, entorns de desenvolupaments evolucionats (Eclipse, JDeveloper)
PHP, tambe es pot fer servir eclipse, pero es tendeix a eines mes simples PHPEditor, Notepad++ o UltraEdit
XML/XSL Support:
PHP, Llibreries de XML/XSL que funcionin, nomes a partir de la versio 5 (en 4, fer servir sablotron)
Java, millor en parsing de XML (si fem servir JDOM, el soport estandard DOM etc no serveix per res)
Servlets:
PHP, algo menys potent amb la gestio de sessions, i a més tot son pagines, no existeix el concepte de servlet
Funcionalitats similars en els dos entorns
Model - View - Controller:
Igual java que php, pero en php no es el model habitual, s'ha de forçar la cultura dels developers cap al nou paradigma
Sintaxi:
PHP - Sintaxi guarra, tipus perl, en versio 5 es pot fer servir orientacio a objectes
Java - Sintaxi elegant, tipus C, pero molt mes complexe (sintaxi farragosa per errors en el disseny de classes basiques (String, FileOutputStream, etc.)
Proves unitaries:
PHP - facil de fer testing amb un fitxer dummy, notepad o vi oriented
Java - amb els IDEs es perd força capacitat de fer testings xorres
WebServices:
Java - ampli suport
PHP - ampli suport
Microcalls:
Java - ampli suport (inclos getTransformedContent)
PHP - ampli suport (inclos getTransformedContent a partir de php5)
Execució de comandes de sistema operatiu:
Java - no es simple, tenim una llibreria que ho fa, existeixen una serie de pitfalls al standard que no permeten agafar be la sortida del proces en certs casos.
PHP - trivial
Upload de fitxers:
PHP - trivial
Java - No existeix una llibreria standard que funcioni correctament, ni tant sols les de jakarta-commons, al final tothom es fa el seu upload, basat normalment en una classe de O'Reilly (PATETIIIIIIIIC)
MultiThreading:
Java - molt potent
PHP - hi ha llibreries pero en general no ficaria la ma al foc
Llibreries:
Java - Menys llibreries pero amb base d'usuaris mes amplia en general (jakarta, jdom, etc)
PHP - Milions de llibreries, algunes tambe amb molta base d'usuaris (Pear)
------------------------
Recomanació final:
La meva recomanació per futurs desenvolupaments sería:
BD - Oracle amb PL/SQL i Microcalls
MiddleWare - PHP + Microcalls (a no ser que necesitem multithreading o per cercadors)
Presentacio - XHTML + CSS + AJAX (i evaluar puntualment OpenLazlo)
Tampoc cal ser talibà i tot aixo es combinable i movible o sigui que poden haver altres bases de dades en MySQL o SQLServer i Tomcats que corrin Java Web Applications, pero la base hauria de ser l'anterior.