Java e PHP: una questione di “complessità”?


Riporto volentieri una riflessione/domanda su Java e PHP di un nostro lettore:

“C’è qualcuno che teorizza confronti tra Java e PHP non analizzando i risultati da conseguire, ma puntando sulla difficoltà a programmare in un linguaggio piuttosto che in un altro e sostenendo che PHP si usa per cose semplici e Java per cose complesse.
A parte l’atteggiamento singolare e l’inutilità di confrontare linguaggi di programmazione, vi siete mai imbattuti nella programmazione per classi e oggetti in PHP5?
Vi assicuro che a difficoltà ce n’è tanto quanto in Java!
In quanto a cose complesse, bisogna capire cosa si intenda, ma vi assicuro che nel mondo ci sono siti che gestiscono movimenti di miliardi di dollari in PHP!
Ci sono siti che in uso di astronomi con relativi calcoli di una complessità “lunare” scritti in PHP!

Infine per capire vi ricordate il primo compitino che si dà ai programmatori principianti? Scrivere il messaggio Hello World!

Ebbene in PHP è:

echo 'Hello World!';?>

In Java è:

import java.awt.Frame;import java.awt.Label;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;

public class HelloWorldFenster extends Frame {   public HelloWorldFenster() {       super("Hello World!");       Label HelloWorldLabel = new Label("Hello World!");       add(HelloWorldLabel);       addWindowListener(new WindowAdapter() {            public void windowClosing(WindowEvent e) {                System.exit(0);            }       });       setResizable(false);       setLocation(350, 320);       setSize(160, 60);       setVisible(true);   }   public static void main(String[] args) {       new HelloWorldFenster();   }}

In conclusione sono stato più bravo perchè ho scritto più codice?
Franco”

22 Responses to “Java e PHP: una questione di “complessità”?”

  1. stefano says:

    Concordo pienamente con la riflessione di franco, php viene usato anche per sistemi molto complessi, e con successo

  2. davide d says:

    Sito realizzato in php 5 con programmazione ad oggetti:
    http://www.fiat500.com/

  3. Antonino V says:

    Bah. Personalmente programmo in Java non perché ami la complessità ma per il motivo banale per cui tutti preferiscono il linguaggio che preferiscono: perché lo conoscono meglio e fanno le cose più velocemente.

    Quanto al codice confrontato, mi sembra un classico caso di pere vs. mele. Il codice riportato in Java si riferisce ad una applicazione GUI desktop, mentre quello PHP ovviamente ad una pagina web dinamica.

    La stessa cosa in Java si realizza attraverso una pagina JSP.

    Il codice è questo:

    out.println(“Hello World”);
    %>

    Le differenze tra Java e PHP ci sono e sono tante. Quella più macroscopica è nel fatto che Java è un linguaggio general-purpose (puoi scriverci tutte le possibili tipologie di applicazione) mentre PHP è orientato esclusivamente alle pagine web dinamiche. Alcune cose sono più semplici in PHP, altre in Java, mentre molte altre in PHP non si possono proprio fare. Detto questo, non credo che si possa mettere in discussione PHP come linguaggio web estremamente potente e allo stesso tempo intuitivo.

    Come dicevo, alla fine credo che la scelta diventi soprattutto questione di gusti e di competenze, sia proprie che delle risorse che si hanno a disposizione.

    Pensate che moltissime persone lavorano in ASP.

  4. Barbara says:

    NB
    non dimentichiamo che PHP è un VERO linguaggio open, non un convertito dell’ultima ora :->

  5. Cecilia Colasanti says:

    Io preferisco PHP. E’ piu’ semplice per il programmatore e ha grandi potenzialità per siti complessi.

  6. francesco a says:

    “Alcune cose sono più semplici in PHP, altre in Java, mentre molte altre in PHP non si possono proprio fare”

    MOLTE ALTRE? QUALI?

  7. Antonino V says:

    “MOLTE ALTRE? QUALI?”

    In generale tutte le applicazioni stand-alone, ovvero che possono essere attivate da un comando del sistema operativo
    Quindi:
    - Applicazioni desktop con GUI, più o meno Rich (dall’applicazione single form all’IDE)
    - Applicazioni batch
    - Server di vario tipo: DBMS, application server, ambienti di esecuzione, etc.
    - Middleware

    Ad esempio tutti gli ambienti di esecuzione per Servlet/JSP sono scritti direttamente in Java. E anche molti IDE.

    Immagino che ci siano dei framework-tool-accrocchi per adattare applicazioni PHP in modalità stand-alone e se ci sono non so quanto siano diffusi. Comunque non sarebbe quello il motivo per cui PHP ha tanto successo.

  8. Rossano says:

    Quoto Antonino V.
    Inoltre aggiungerei che in applicazioni web, c’è anche la possibilità di sfruttare le risorse del client, utilizzando le applet segnate e il plug-in di java per i browser; si evitano problemi di carico applicativo sul server ed eventuali timeout.

  9. dario says:

    /non c’è alcuna guerra tra java e php, dipende dal contesto di sviluppo, devo dire che in moltissimo casi il php non sembra avere rivali/ grazie – dario

  10. Andrea Libratore says:

    penso che in base alle esigenze si deve scegliere per ciascuna problematica il linguaggio che più si addice.
    nella mia esperienza lavorativa, nell’istituto dove lavoro, ho collaborato allo sviluppo di soluzioni software scritte in php 4 e 5, per complesse realtà
    tipo lo sviluppo del calcolo dell’indice della produzione industriale per svolgere acquisizione, controllo, elaborazione, memorizzazione e reportistica dei dati
    ho usato php anche per lo sviluppo di siti web e-shop, sia per la gestione delle riviste e report di un’associazione umanitaria internazionale, anche usando seri e solidi framework come Symfony che adottano l’approccio MVC
    il risultato è sempre stato lo stesso, ottimo

    estendo spesso al PHP l’utilizzo di AJAX per gestire le applicazioni web 2.0
    AJAX è javascript e il javascript deriva da java, un’ottima soluzione per gestire e creare applilcazioni web più dinamiche
    questo è indice che i linguaggi si possono integrare insieme e farli parlare fra loro

    vi segnalo un mio articolo sul numero 153 della rivista Dev.

    http://www.shopinfomedia.com/dev153-p-112.html

  11. francesco a says:

    rispondo ad antonino

    “- Applicazioni desktop con GUI, più o meno Rich”
    - Applicazioni batch
    - Server di vario tipo: DBMS, application server, ambienti di esecuzione, etc.
    - Middleware”

    TUTTO VERO, ma io intendevo fare confronti ove i due software sono confrontabili: la stragrande maggioranza dei siti INNOVATIVI (wikipedia, ecc) sono in php.
    php è ottimo anche per realizzare soluzione complesse, come appunto sostiene l’autore dell’articolo.

    tutto qui, per il resto amici come prima, FA

  12. Anonymous says:

    J A V A
    T U T T A
    L A
    V I T A!

  13. Enrico says:

    Secondo me la questione tra Java e PHP 5 non riguarda la complessità. La capacità di scrivere applicazioni complesse non è legata al linguaggio ma alle metodologie coinvolte durante il processo di sviluppo. Si possono scrivere applicazioni complesse, robuste e manutenibili sia in Java che in PHP 5.
    Se poi analizziamo solo il versante delle applicazioni web based PHP 5 ha una marcia in più dal punto di vista della velocità di sviluppo. Basti pensare solo alla gestione dei dati in XML, agli streams o ai web services. Avete mai provato ad utilizzare SimpleXML o a creare un servizio SOAP in PHP? Bastano pochi minuti…

  14. stefano says:

    Sono d’accordo con il messaggio dell’articolo, vale a dire che la credenza secondo cui con il php [si scrive minuscolo] sia preferibile per gli applicativi semplici è FALSA. Con php infatti è possibile implementare sistemi estremamente complessi e articolati

  15. Anonymous says:

    Gli acronimi in italiano si scrivono sempre in maiuscolo!

  16. Anonymous says:

    Java : PHP = Coppi : Bartali

    Java : PHP = Juve : Inter

    Java : PHP = Valentino : Stoner

  17. Giuseppe Morreale says:

    trovate il mio parere su

    http://programmaremobile.blogspot.com/2008/04/java-vs-php-dovendo-realizzare-un.html#links

    e cmq come già hanno scritto
    l’equivalente php di

    echo ‘hello world’ è
    =”hello world in java

    (ho tolto i tag perchè non inseribili nel commento)

  18. Daniele Frongia says:

    Grazie Giuseppe, molto interessante, segnalo il tuo post anche ai nostri lettori

  19. Anonymous says:

    Java non ha rivali, e se li ha non è certo PHP, mi sembra evidente da.
    http://blog.taragana.com/index.php/archive/java-versus-ruby-versus-php-trends/it/

  20. rastrano says:

    Questo post era partito bene: intendevi sfatare dei luoghi comuni ma poi hai concluso con un luogo comune peggiore: "java fa cagare perchè per fare una cosa semplice devi scrivere 20 linee di codice" ma in realtà l'hello world in java che hai postato è un esempio sbagliato: hai confrontato una pagina web con una applicazione grafica desktop (prova a scriverla in PHP o in C, altro che 20 righe..)

    come ha detto antonio in jsp (java server pages) si fa cosi:

    \<\%out.print("Hello Word");\%\>

    cosa non puoi fare in php?

    -variabili a livello application ad esempio…
    -thread (che funzionino)
    -distribuire un applicazione con un archivio war con tutte le dipendenze inglobate (librerie)
    -reflection
    -potrei continuare…

    inoltre php è meno performate di java perchè php interpretato mentre java è compilato in bytecode, questa è una cosa che molti programmatori del fine settimana ignorano..

  21. michelangelo giacomelli says:

    bah io direi che il linguaggio è solo uno strumento e per ogni compito c'è uno strumento più o meno valido, e credo che sia java che php sono due strumenti da conoscere.
    per rispondere a rastrano:
    l'interprete php trasforma prima il codice in opcode poi interpreta quello, il problema del compilatore è sentito tanto che ci sono stati alcuni tentativi di creare un jit per l'opcode (l'ultimo su llvm) ma sono progetti che stranamente nascono e muoiono velocemente.
    L'unico modo efficiente per guadagnare qualcosa in performance con il PHP è cachare il più possibile quindi cachere l'opcode, cachere i template le viste etc…
    per il resto:
    * le variabili a livello di applicativo si possono simulare con memcached
    * per i processi c'è pcntl_fork e relativa famiglia di funzioni, i thread veri e propri non mi risulta sia possibile crearli
    * invece di distribuire un applicazione con relativo archivio war puoi distribuirla come relativo archivio tar.gz ovviamente la devi scompattare pero' …
    * la reflection c'è eccome in php5, http://nz.php.net/oop5.reflection
    per il resto php non ti obbliga ad installare application server succhia ram.
    secondo me i vantaggi indubbi di java sono:
    * la tipizzazione statica che non porta a inspiegabili cast a cazzo a livello di esecuzione come succede in php
    * scalabilità, mantenibilità del codice, velocità di esecuzione.
    * le api di java sono ad oggetti e sono coerenti fra di loro quelle di php no,
    esempio:
    se hai una stringa non ci puoi usare metodi sopra ma solo funzioni globali e oltretutto:
    strip_tags() // qui ad esempio le parole sono separate da un underscore
    stripcslashes() // qui sono tutte attaccate
    java è stato progettato a tavolino, php è cresciuto aggiungendo di volta in volta funzionalità alle volte senza una vera progettazione strategica.
    comunque ripeto secondo me sono due strumenti da conoscere, e spesso ho visto che dopo i primi scogli programmatori java che programmano anche in php scrivono codice php migliore di programmatori nati e cresciuti col php.
    ma si tratta di opinioni personali ovviamente.