Java vs Php - una mia opinione

Java Vs Php

(articolo risale al 2008) 
Dovendo realizzare un progetto web, quale piattaforma scegliere?
La risposta è: "Dipende!".
Innanzitutto il confronto dovrebbe essere più specifico, dovremmo chiederci Java EE o Php?
E forse pensandoci un pò meglio dovremmo identificare all'interno di Java EE la sottotecnologia confrontabile con Php ovvero JSP.
Io personalmente dovendo realizzare un piccolo progetto, ovvero pochi script che dovrebbero girare su un web server veloce e leggero opterei per php, viceversa qualora dovessi realizzare un progetto "enterpirse" scegliere senza ombra di dubbio java ee.
Innanzi tutto pensando di utilizzare il paradgma di programmazione che và per la maggiore, ci troviamo di fronte da una parte Java che nasce come linguaggio di programmazione object oriented e dall'altra Php che diventa object oriented nella versione 5, trascinando ancora alcuni concetti di programmazione procedurale.
Ad esempio, se volessimo conoscere l'ip del client che stà contattando la pagina web, in java dovremmo chiamare il metodo dell'oggetto HttpRequest (quindi il dato ip viene incapsulato e trasportato all'interno di un oggetto) in php dobbiamo ancora chiamare una delle variabili globali messe a disposizione dal modulo.
Poi, una cosa secondo me molto importante è l'ambiente di sviluppo: l'IDE.
Riguardo la piattaforma Java è molto più facile trovare degli ambienti di sviluppo che offrono una serie di feature non indifferenti.
Giusto per fare due importantissimi esempi, basti pensare al debugger o al profiler.
Certo in php è possibile trovare dei tool per effettuare, ad esempio il debugging, ma trovare tutto il necessario in un unico ambiente di sviluppo ai livelli di netbeans è difficile.
Altro punto a favore di Java è la grande varietà di sottotecnologie della piattaforma Java EE, giusto per fare una grande distinzione, abbiamo le JSP per generare la gui fondendo html e codice java, gli EJB per la logica di business(ottenimento e elaborazione dati ),e le servlet per realizzare l'elemento di coesione tra model e view. Quindi, se ad esempio, si vuole seguire il pattern MVC si hanno già delle linee che aiutano a realizzare del software ben strutturato.
In php è anche possibilissimo fare altrettanto, soprattuto nella ver 5, ma la piattaforma di certo non ti guida in questo.
Altro punto a favore di Java EE è la gestione dei web-service molto migliore rispetto a quella di php.
Basti pensare che le librerie soap di php, non provvedono ancora alla generazione automatica del wsdl(informazione verificata 2 mesi fà).
Ancora Java, per ciò che concerne l'interazione con i db, esistono diverse librerie (Hibernate, TopLink, Kodo, OpenJPA,..) per la gestione della persistenza dei dati.
E' possibile avere una visione ad oggetti di un database relazionale grazie al mapping O/R, avere una gestione automatizzata delle transazioni (committ e rollback), e la portabilità rispetto al dbms usato. Grazie al linguaggio, EJB-QL, infatti sono le librererie che si occupano della pesistenza a convertire le query nei vari dialetti (mysql, postgree, oracle, sqlserver, apache derby, db2..etc.).
A favore di php, c'è da considerare la velocità del deploy di un'applicazione web, basta infatti copiare gli script da aggiornare nella corretta directory, senza effettuare analisi, scompattazione di file jar, ear, war etc.
Per php è necessario un web server(Apache) a differenza di Java EE che spesso necessita di un Application server(Glassfish, JBoss, Geronimo, etc.), in tal caso il server è molto più snello e veloce per php, garantendo migliori performance e tempi di riavvio.
Certo quest'ultimo è un confronto poco significativo in quanto si dovrebbe confrontare tomcat e apache.. ma volendo sfruttare a pieno le potenzialità della piattaforma Java EE(che non siano solo servlet e Jsp) la scelta ricade su un application server con le conseguenze di cui parlavo.
Altro punto a favore di php, è la maggiore rapidità con la quale si impara. Java EE è più vasto e mette a disposizione diverse sottotecnologie quindi richiede dei tempi più lunghi per impare a scegliere e usare le varie componenti.
Anche la documentazione è più ostica per Java (parlo dei javadoc) rispetto ai phpdocs, ma ciò è dovuto alla conformazione ad oggetti del linguaggio e relative librerie di java.
Se la scelta, php-java la dovessi effettuare a prescindere dal progetto, e quindi dai requisiti del software richiesto, investirei su Java.
Sia perchè nel mondo del lavoro, lo sviluppatore Java è pagato meglio, sià perchè investendo su Java si investe automaticamente su una tecnologia presente non solo sul web ma anche su applicazioni desktop, mobile, etc. etc.
Inoltre è anche possibile usare entrambe le tecnologie, in grosso progetto ad esempio si potrebbe usare Java EE per la logica di business, e php per il frontend.
Vorrei concludere dicendo che, con entrambe le soluzioni si può sviluppare quasi ogni tipo di progetto web, ovviamente la cosa più importante è la buona progettazione del software.
Forse ho scritto questo articolo solo per portare un pò di gente sul mio blog!!!

5 comments:

Giovanni.Cuccu << at >> gmail.com said...

ciao, per chi fosse interessato ho scritto sullo stesso argomento
java vs. php 1
e

Anonymous said...

visto e ti ho anche risposto là!

ciao!

Daniele Frongia said...

Grazie Giuseppe, post molto interessante, l'ho segnalato anche sul nostro blog (dove, come sai, abbiamo trattato lo stesso argomento: http://segnalazionit.blogspot.com/2008/06/java-e-php-una-questione-di-complessit.html)

Matt_85 said...

Ottimo post,scritto in modo chiaro e coinciso!

in 2 parole si è condensata l'esperienza e le considerazioni che maturerebbero sicuramente non dall'oggi al domani ;)

Giuseppe Morreale said...

Il tuo commento mi lusinga! thx