Newsgroup: it.comp.www.php
Titolo: Java vs Php?

Un saluto a tutti :)
Sono nuovo del ng, anche se sono uno sviluppatore Php da più di un anno.
Conosco invece poco di Java: devo dire che come linguaggio mi piace, ma è
il "mondo Java" ad essere molto complesso imho.
Una cosa che non riesco a capire è perché si dice che Php sia quasi un
linguaggio-giocattolo (nel senso che "è adatto per clienti che vogliono
piccole cose, diciamo fino a 4-5000 euro") mentre Java è "professionale".
Qualcuno di voi mi sa gentilmente indicare qualche risorsa online che
compari i due linguaggi e mi faccia capire in cosa Php sarebbe molto
inferiore (non riesco a capirlo)?
Grazie - saluti :)
Marco

 inferiore (non riesco a capirlo)?
Perche` non c'e` niente da capire, e` puro marketing.
Java ha un'azienda (Sun) alle spalle che lo spinge come "linguaggio 
professionale", ed e` stato adottato da diverse realta` (IBM, Apache, 
RedHat, ecc.) soprattutto per il web. Nota come doveva essere il 
linguaggio universale, invece si trova a funzionare solo come webserver e 
come piccole applicazioni per cellulari, e gli manca tutto il resto 
(desktop, client-side, ecc.)
Il linguaggio Java non ha niente di piu` di PHP, e` solo diverso (a me non 
piace perche` troppo rigido e "burocratico").
Anzi, a livello web ha molto meno (pensa alla gestione delle sessioni, dei 
cookie, ecc.)
Quello che ha spinto Java sono i framework web (struts, hibernate, jsf, 
ecc.) e gli application server (tomcat, jboss e altri) che gli aggiungono 
quello che manca al linguaggio.
Per esperienza (mi tocca mantenere una decina di siti in Java) ti posso 
dire che e' una palla assurda. La VM con JBoss occupa, al boot, quasi 1 
GiB, e si estende in alcuni casi a 4 GiB. Quando modifichi un file (anche 
un'immagine) devi fare il redeploy dell'applicazione (in pratica compili 
gli script java e crei un pacchetto (una directory o un .war monolitico) 
con dentro tutti i file del progetto.
JBoss ogni tanto, dopo troppi redeploy, si pianta e devi riavviarlo, 
tirando giu` tutti i siti.
Se installi una libreria in uno dei siti potrebbe andare a sovrapporsi 
alla stessa libreria ma in versione diverse in un altro sito, e spesso 
genera incompatibilita` difficili da tracciare perche` non sai quale viene 
caricata delle due. Teoricamente dovresti installarla a livello di 
application server, e ritestare tutti i siti che la usano per verificare 
la compatibilita`.
In uno dei server che gestisco sono fermo a MySQL 3.23 e JBoss 3.6 perche` 
se mi azzardo ad aggiornare JBoss alla 3.8 esplode tutto, e se metto MySQL 
4 non funziona piu` il connector per hibernate. La persona che lo ha 
installato si e` licenziata raccomandandosi di non aggiornare niente...
Non vedo l'ora che ci chiedano di rifare quei siti in PHP, ma fino ad 
allora devo arrangiarmi a farlo funzionare.
In pratica puoi vendere i siti a centinaia di migliaia di euro 
giustificandoli col fatto che serve un "amministratore di java" oltre 
all'amministratore di rete e/o a quello di sistema.
Su un altro server ho alcuni siti fatti in PHP3 che funzionano ancora con 
PHP4, e` bastato abilitare gli short-tags e i register_globals (anche 
questi spero ce li facciano rifare, ma intanto funzionano e posso 
aggiornare l'interprete per evitare rogne coi bug), e sono convinto che 
potrebbero funzionare anche col 5 (che attualmente gira in parallelo al 4 
come CGI per tutti i nuovi siti fatti da un anno a questa parte) ma non ho 
mai tempo di fare i test.
E non arrivo a 1 GiB occupati nemmeno se visito tutti i cento e passa siti 
contemporaneamente...
Un vantaggio che posso concedere a Java e` che essendo di natura 
rigidissimo, e` piu` semplice suddividere il lavoro tra piu` 
programmatori, ma c'e' bisogno di una struttura non indifferente, tra cui 
un project manager che definisca chiaramente e precisamente le interfacce 
tra le classi (e se sbaglia sono ca**i) e le assegni ai programmatori in 
modo da far procedere lo sviluppo al meglio. Direi non meno di 5 
programmatori, un PM nel team, senza contare grafici e htmlisti.
Il problema e` che poi di burocrazia rischia di andarti via tanto tempo 
che avresti potuto fare quel lavoro con un paio di programmatori PHP ben 
coordinati tra loro e un grafico e un htmlista.
Bye.

 PHP.
[...]
mamma mia mi hai spaventato con tutte quelle cose orribili 
che ti son successe con java :)
comunque io con php mi ci son trovato benissimo sebbene 
alcune cose mi hanno dato un po' fastidio. :)
Questo articolo rispecchia cio' che penso anchio su php().
http://www.icosaedro.it/articoli/php-analisi-critica.html
su java purtroppo non posso dire molto perche' non ho fatto 
nessun progetto di grossa rilevanza tuttavia le jsp mi son 
sembrate veramente una figata e prima o poi mi decidero' a 
usarle.
A un'altra cosa che ho pensato e' questa:
come mai le banche,le poste non adottano mai php?
Questioni di sicurezza?
Ciao
ps
oddio mi sa che il sito delle poste lo hanno rifatto. non 
capisco in cosa... tuttavia quando vi accedo compare 
estensione aspx.... mmmm

 dire che e' una palla assurda.
questo è vero, ho dovuto modificare un'applicazione jsp che girava su
Tomcat ed è un'assurdità pensare che con php fai una modifica e va mentre
lì ogni volta è una ricompilazione... per non parlare dei file di
configurazione incasinatissimi...
infatti a me piace come linguaggio, mentre tutto il "carrozzone" che si
porta dietro mi lascia molto perplesso...
ti ringrazio per il resto della spiegazione calata nel mondo pratico, mi
serviva anche questa... :)
ciao e grazie,
Marco

 usarle.
io, per curiosità, volevo trovare qualche tutorial o libro cartaceo dove
viene spiegato tutto quanto gravita attorno al mondo java, ovvero:
- framework più famosi: spring, struts, jsf, hibernate, ecc.
- cosa sono tutti quei termini astrusi: java beans, java enterprise beans,
mvc, ecc.,
in pratica, mentre conosco (abbastanza) il linguaggio e non mi dispiace,
c'è tutta una nuvola oscura di oggetti strani che gravitano attorno... php
anche da questo punto di vista mi sembra più semplice, intendo dire anche
"culturalmente": c'è un linguaggio, un interprete e poi (a parte, ma
chiaramente) dei framework...
ciao,
Marco

 ha scritto nel messaggio 
news:466eb67a$0$4789$4faf...@reader4.news.tin.it...

Premesso che io sono sostenitore del PHP, però sinceramente quando leggo 
queste domande sorrido...
Che risposte speri di avere in un gruppo dedicato al PHP? Ovvio che nessuno 
ti dirà che java è professionale e ti elencherà eventuali vantaggi.
D'altronde se giri la domanda in un gruppo java ottieni invece l'esatto 
contrario delle risposte che ti vengono fornite qui e questo può 
ulteriormente confonderte le idee.
Un mio personale parere, molto personale:
- Il vantaggio di Java rispetto al PHP è che si presta a qualsiasi 
applicazione di qualsiasi natura ed è presente in qualsiasi dispositivo 
(siti web e server, desktop, cellulari, applicazioni su tv digitale 
terrestre e via satellite, ecc. ecc) . PHP è nato esclusivamente come 
linguaggio per creare pagine dinamiche in rete, JAVA invece è questo ma 
anche molto altro. E' vero che ci sono varie prove per realizzare 
applicazione desktop in PHP però non mi sembrano nulla di concreto e sono 
anni luce distanti da Java.
- Java è terribilmente più complesso di PHP proprio per il fatto che puoi 
diventare specifico solo in un settore: ti interessano le JSP? le 
applicazioni desktop o vuoi programmare giochini per i telefonini (solo per 
farti qualche esempio)
- Java è più sicuro di PHP, ovvio possono capitare problemi ma fix di 
sicurezza ed aggiornamenti  vengono solitamente rilasciati presto
- Nessuno meglio di Java rappresenta la filosofia della programmazione ad 
oggetti.
- La SUN rilascia certificazioni importanti, ed ha un filosofia che nel 
corso del tempo ha imposto all'attenzione dei professionisti questo 
linguaggio.
Esistono associazioni e LUG dedicate esclusivamente a Java , quindi la 
documentazione così come PHP non manca.
- Dal punto di vista professionale, se fai ad esempio una ricerca su 
monster.it
 scopri che ci sono molte più richiesta di JAVA e 
ASP.NET
  e non 
invece di PHP
Io uso PHP e non JAVA per quando riguarda il web per i seguenti motivi:
- Lo svilluppo tramite JAVA secondo molti è più veloce rispetto a PHP ma 
comunque per sviluppare in modo professionale bisogna conoscere attentamente 
non solo JAVA ma i vari programmi commerciali e opensource  che ti 
facilitano lo svilluppo. Quindi  il tempo di sviluppo di  JAVA è più veloce 
di PHP (ma non quanto 
ASP.NET
) tuttavia richiede un tempo di studio e 
conoscenze superiori rispetto a PHP.
- PHP mi da la possibilità di usufruire di tantissimi CMS, esistono  anche 
per JAVA (uno se non ricordo male è usato dal sito dell'ANSA) ma in misura 
minore
- Se non sono pratico di programmazione ad oggetti e provengo ad esempio dal 
buon vecchio visual basic con PHP posso programmare come voglio, ma questo 
per molti può essere giustamente anche un difetto e dalle aziende è 
considerato un sistema di programmazione poco serio
- Non uso JAVA perchè secondo me in discesa specialmente in ambito desktop a 
causa delle notevoli risorse che richiedono i programmi scritti in java, si 
veda il pesantissimo client di Second Life tanto per citarne un esempio. E' 
probabile che la lotta 
ASP.NET
 - JAVA vada a vantaggio del framework di 
Microsoft per cui oltre al PHP preferisco studiarmi C# e la piattaforma .net 
ed ho abbandonato lo studio di Java.
Se dovessi fare progetti pesanti, probabilmente in alternativa a .NET avendo 
un buon team di persone sceglierei JAVA .
E per progetti pesanti intendo applicazioni web come cartografie, mappe come 
questa (
http://www.slimmit.com/go.asp?67X
) o progetti simili.

 [/CUT]
Premetto che non sono un programmatore di professione ma solo per 
divertimento personale, quindi scusatemi fin da subito se la domanda per 
qualcuno può sembrare stupida, ma perchè la programmazione ad oggetti 
è/sarebbe migliore della programmazione "classica"?
Grazie!
Paolo

 estensione aspx.... mmmm
aspx è l'estensione delle pagina .NET :-)

 
Non mi sembra corretto: tutti i linguaggi se usati male, sono pericolosi!
Se una banca vuol gestire il proprio portale, chi contatta? Sun o 
Microsoft Italia (che "passano" il cliente ai propri partner [1]) oppure 
  la software house che fa i siti web per il macellaio (con tutto il 
rispetto per le piccole software house e il macellaio)?
Questo non significa che il prodotto finale sia migliore ma le premesse 
offrono la possibilità di spalmare le responsabilità su molte spalle 
(larghe!)
	Francesco

 (larghe!)
ecco, questa mi sembra un'ottima spiegazione! :-)

 rispetto per le piccole software house e il macellaio)?
Oltre a questa giusta osservazione, aggiungerei il fatto che un sistema 
di gestione online di home banking deve interfacciarsi con il software 
interno usato dalla banca, ed è ovvio che in questo caso l'utilizzo di 
Java sia più naturale e semplifichi di molto la cosa.
-- 
Ing. Francesco Mazzi
Staff di E-Xoopport - 
http://www.e-xoopport.it
Webmaster AltroPC.it
Direttore Sistemi I.C.T. - ocSinet s.r.l. - 
http://www.ocsinet.com

 mia esperienza diretta.
Quelli non sono considerati bug del linguaggio. un bug del linguaggio e` 
quando se passi una stringa troppo lunga a mail() fai andare in overflow 
l'interprete ed accedi alla macchina coi privilegi del webserver (che in 
alcuni casi e` amministratore).
Quello e` una flessibilita` che ti da` il linguaggio per fare certe cose 
(modificare tutti gli header delle email che invii), e sta a te 
programmatore stare attento a come le usi.
Infatti ci sono decine di classi che "wrappano" la mail() per renderla 
piu` semplice da usare senza dover conoscere a memoria le RFC 822 e 
2822. :)
Altri linguaggi (tra cui Java di base, tra l'altro) non ti danno nemmeno 
la possibilita` di mandare email, e devi usare librerie esterne che 
astraggono l'accesso alla posta del sistema operativo o direttamente lo 
stack TCP/IP per contattare il mail server. Il linguaggio base 
prevederebbe di aprire una connessione TCP al mailserver sulla porta 25 e 
di spararci dentro le stringhe secondo RFC, e di verificare manualmente i 
messaggi di errore.
Ma allora dobbiamo confrontare Java e PHP oppure Java+framework con PHP
+framework. Se confronti PHP con Java+framework e` come confrontare un 
pistone con una Ferrari F1 (anche se per Java avrebbe piu` senso un TIR) : 
non puoi trarre conclusioni, sono due cose diverse.
Bye.

 è/sarebbe migliore della programmazione "classica"?
In assoluto l'asserzione non e` vera di per se.
In molti casi la programmazione "classica" fatta di codice seriale, o di 
codice procedurale, e` ancora oggi molto meglio di quella a oggetti.
Ma per progetti che tendono a diventare grossi, o per riciclare il codice, 
o anche solo per lavorare in team, la programmazione a oggetti e` 
fondamentale, perche` separa in modo piu` netto le responsabilita` di 
diverse parti del codice.
Invece di scrivere ogni volta mysql_connect(), mysql_query(), 
mysql_num_results(), mysql_fetch_array(), mysql_close(), quando devi 
prendere una lista di oggetti dal DB richiami $oggetto->get_list()
Lo puoi fare anche con una funzione, ma e` meno flessibile. Mettendola in 
un oggetto (e progettandolo bene) puoi usare altri tipi di database 
(postgres, sqlite, xml) senza cambiare il codice del tuo sito, gestendo in 
modo trasparente diverse classi che fanno la stessa cosa con backend 
diversi.
Allo stesso oggetto puoi associare altre funzioni (scalare un'immagine e 
memorizzarla nel fs associata alla riga di DB, per esempio).
Puoi modificare il comportamento dell'oggetto senza che l'applicazione se 
ne accorga (per esempio per loggare tutte le query che fai), ecc. ecc.
Bye.

 programmatore stare attento a come le usi.
effettivamente era proprio quello che intendevo nel post precedente,
quando dicevo che php deve essere usato correttamente.
Riconosco di aver sbagliato nel chiamare bug quella che, giustamente,
hai definito flessibilità del linguaggio.
Comunque grazie mille per la spiegazione dettagliata, è sempre utile e
piacevole imparare da chi ne sa di più  :-)
ciao
madleine

 ulteriormente confonderte le idee.
beh, io non intedevo aprire un thread che "tirasse" dalla parte Java o
Php, ma piuttosto che mi spiegasse meglio i pro ed i contro... e l'effetto
è stato ottenuto mi sembra... :)
grazie anche a te del post e delle spiegazioni... :)
Marco

 inferiore (non riesco a capirlo)?
Ciao Marco,
il discorso non è tanto in termini di linguaggio migliore o peggiore,
ma nel tipo di approccio che si usa per risolvere il problema.
In PHP, come in qualsiasi linguaggio di programmazione, puoi fare
praticamente tutto (escluse alcune attività a basso livello, ma questo
poco importa in questo discorso). Le stesse cose le puoi fare in Java,
ASP, Perl, Assembly, C, Pascal.
La differenza, allora, non sta nella capacità di risolvere il problema
(con tutti i linguaggi ci puoi riuscire), ma nel "come" risolvi il
problema.
Java si differenzia dal PHP fondamentalmente per tre motivi:
1) la presenza di un'application server (che gestisce le applicazioni
JAVA installate);
2) il linguaggio esclusivamente ad oggetti;
3) Le pagine sono compilate;
Analizzo punto per punto. La presenza di un'application server
consente di realizzare un legame tra le pagine diverso da quello
possibile con PHP; questo è possibile per la presenza a monte di
un'ulteriore layer astratto tra l'utente e l'applicazione stessa, che
è appunto l'applicazione stessa. Puoi gestire eventi prima che la
pagina sia caricata che dopo.
Punto due. Java non consente un'approccio procedurale al problema. E'
solo ad oggetti. A questo punto non si ha più scelta con Java: si può
solo programmare ad oggetti (a differenza di PHP e C++, per esempio).
E' un linguaggio fortemente tipizzato (a differenza di PHP) e questo
nelle applicazioni complesse aiuta a prevenire facili errori. Il fatto
di essere ad oggetti, se si ha familiarità con questa prospettiva,
apre un mondo completamente nuovo: programmare seriament ad oggetti
significa rendere l'applicazione modulare, scalabile e riutilizzabile.
Questo comporta fatica, ma è assolutamente necessario garantire queste
caratteristiche ad un programma di medie-grandi dimensioni, o comunque
in crescita. In Java bisogna c'e' una decisa ingegnerizzazione del
problema.
Il fatto poi che le pagine sia compilate è un pro ed un contro. Pro
perchè rispetto alle pagine interpretate (PHP) si dovrebbe guadagnare
qualcosa. Un contro perchè bisogna ricordarsi di ricompilare le
classi. Inoltre le pagine compilate consentono di consegnare il
software al cliente (quindi i binari) senza necessariamente consegnare
anche i sorgenti (a meno di offuscarli, in PHP).
Java, come PHP, è ricco di librerie. In più Java vanta un approccio
forte con le applicazioni distribuite, anche se questo comporta un
approfondimento su tutti gli strumenti a disposizione per questo
scopo.
In Java sei quasi costretto ad una separazione netta tra i vari ruoli
dell'applicazione (modello, vista, controllo). Questo consente di
lavorare agevolmente in team, grazie anche alla presenza delle tag
library (usa sorta di XML personalizzato che incorpora funzioni in
Java).
Inoltre in Java hai una completa gestione degli errori tramite le
eccezioni (ora anche in PHP) e la tipizzazione stessa del programma
aiuta a prevenirli. Comodo anche il multitasking, che in PHP manca.
La velocità di avvio di Java non è così lenta come si dice. I tempi
sono maturi, parecchie modifiche in questi 10 anni sono state
apportate alla virtual machine. Ormai i programmi in Java hanno un
tempo di avvio e di esecuzione paragonabile ai compilati. Ovvio, Java
è un linguaggio di programmazione, non può sostituire il programmatore
che, se commette degli errori, può compromettere la velocità del
programma.
Infine, per chiudere, il debug di applicazioni scritte in Java è
supportato da qualsiasi IDE che si rispetti. Per debuggare in PHP devi
andare di echo e var_dump e in applicazioni complesse di cui non si
riesce a capire il malfunzionamento, credimi, fanno davvero perdere la
pazienza. Ma ho visto che ci sono degli IDE a pagamento che affrontano
discretamente questa problematica anche in PHP.
Tutto questo per dire che qualsiasi linguaggio può essere utilizzato
per realizzare un obiettivo: il discorso non è l'obiettivo, ma è come
si realizza.
Ciao,
    Fabrizio
=== 
http://www.negusweb.it
 ===

 tutto il rispetto per le piccole software house e il macellaio)?
Nonostante ciò, fortunatamente, esiste ancora qualcuno che non si limita 
ad ascoltare le chiacchiere.
-- 
Ciao.
Roberto Rossi
Web    : 
http://rsoftware.altervista.org

 ad ascoltare le chiacchiere.
Chiacchiere fino ad un certo punto. Su progetti grandi ed
economicamente rilevanti è fondamentale la garanzia di continuità del
servizio, che generalmente i grandi gruppi riescono a fornire più
agevolmente.


 Java si differenzia dal PHP fondamentalmente per tre motivi:
Ciao Fabrizio,
grazie anche a te per la "panoramica" su alcuni vantaggi Java->Php :)
Marco

 
Sicuramente, si può dire la stesa cosa dell'OpenSource nelle pubbliche 
amministrazioni, della colza al posto del gasolio etc. etc. resta il 
fatto che se un'azienda decide di fare un investimento di centinaia di 
migliaia di euro (e scusami se è poco) preferisce appoggiarsi ad 
un'azienda quotata [1], con una certa sicurezza sulla continuità dello 
sviluppo, con un portafoglio clienti/applicazioni di tutto rispetto
Del resto, e con questo mi tiro la zappa sui piedi (visto che sviluppo 
in php da quasi 10 anni), il php non gode [2] in assoluto di buona fama, 
causa i vari pacchetti insicuri per definizione (i vari *nuke), uno 
scarso interesse da parte dei provider per aggiornare le piattaforme [3] 
quindi debellare i veri bug o insicurezze intrinseche del linguaggio.
Quindi a parità di costo, un responsabile (che la maggior parte delle 
volte non entra mai nell'aspetto tecnico della questione) cosa sceglie 
tra un servizio offerto da Sun/Microsoft [4] e un servizio offerto da xx?
Sono solo chiacchiere?
	Francesco
[1] Il prestigio dell'azienda non è direttamente proporzionale al 
risultato dell'applicativo, spesso è inversamente proporzionale ma il 
"marchio" ha sempre il suo fascino!
[2] In maniera errata si collega spesso e volentieri errori di 
sviluppo/implementazioni da parte degli sviluppatori in 
errori/bug/insicurezze del linguaggio
[3] Se vogliamo utilizzare script scritti 10 anni fa, senza modificare 
una riga, senza voler applicare un minimo criterio di sicurezza nel 
codice, con la pretesa che tutto debba funzionare al primo colpo.
[4] Sottolineo nuovamente che Sun demanda alla softwarehouse partner 
(magari è proprio quella che ha fatto il sito del macellaio, ma il 
committente non lo sa!)