Newsgroup: it.comp.www.php
Titolo: Confronto Puro Php e Java in Php

Ho scritto una classe che mi tornava utile.
Per controllarne la funzionalità in win mi sono messo Php su un Win XP ed ho
visto che non andava (una funzione non implementata in Win32).
Allora ho scritto la stessa classe in Java e me la sono caricata da Php, e
direi..
1) Mi fa incazz che una classe Php non sia 100% portabile su Win
2) La classe Java funziona a perfezione sia su linux che su Win caricandola
da Php ($class=new Java("nome_classe","parametri") etc etc)
Quindi, quello che mi viene da dire:
Il codice java dentro Php è più portabile che non il codice Php stesso.
Conclusione: mitico JAVA
Premesso che ho 'rattoppato' (perdendo funzionalità) lo script Php per
funzionare anche su Win,
ci sono state delle piccole differenze di prestazioni:
CASO OTTIMO
*) Script php che carica classe PHP : Esecuzione 0 secondi circa (non mi
interessavano i microsecondi, vedi tempi del java)
*) Script php che carica classe JAVA: Esecuzione 11 secondi circa
CASO PESSIMO
*) Script php che carica classe PHP : Esecuzione 1 secondi circa (non mi
interessavano i microsecondi, vedi tempi del java)
*) Script php che carica classe JAVA: Esecuzione 22-28 secondi circa
QUESITO
Premesso che la classe Java manteneva perfettamente le funzionalità mentre
la classe Php perdeva la funzione principale
(la classica funzione che rende la classe quasi perfetta sostituendola con
una 'non sempre vera')
Conviene una classe JAVA che ci mette 20 e rotti secondi ma che funziona, o
una Php che se va, va da dio, e se non va è da patchare ?
Ciao
Julien

 funziona, o una Php che se va, va da dio, e se non va h da patchare ?
Posta il codice della classe PHP che sotto windows non funziona e
vediamo se e' possibile renderla efficiente e portabile.
-- 
I'am what I'am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/1


20-30 secondi sono un'eternità! finisce per esser più lento dello stesso
java!


La classe java in ambiente java ci mette qualche secondo meno ma è comunque
lenta
J

 vediamo se e' possibile renderla efficiente e portabile.
Setec, a meno che tu non implementi una RFC un po' incasinata, che prevede
l'uso di BYTE e calcoli tipo 'bit sinistro e destro' non implementi niente.
Php usa alcune funzioni linkate alle librerie del C di linux che in Windows
non ci sono.
Inoltre essendo librerie legate ai DNS, saprai bene che Win ha una gestione
tutta sua in proposito...
Nel mio caso non volevo esprimessi un giudizio su di me come programmatore,
ma sul lavoro fatto con i dati espressi.
Come dire, esprimenre un concetto data una ipotesi - che poi i miei dati
siano falsati, non validi, etc etc potremmo discuterne.
J

 gestione tutta sua in proposito...
Certo, ma e' comunque possibile implementare funzioni alternative per
rendere il codice portabile.
Non ce l'ho con te, ovvio. Come e' ovvio che java sia piu' portabile di
PHP (WRITE ONCE, RUN EVERYWHERE).
Posta il codice PHP che non e' portabile (o almeno un estratto) e
vediamo se realmente non si puo' renderlo portabile sotto win.


 vediamo se realmente non si puo' renderlo portabile sotto win.
Tutto si può fare - Non posso postare il codice per una questione di
business logic, ma il concetto è che la classe usa una funzione
non presente su Win32. Re-implementare la funzione, usando i bit mi fa
cadere le braccia. Se hai voglia di implementarmela tu, scrivimi in privato
:-D eheheh
Julien

 vediamo se realmente non si puo' renderlo portabile sotto win.
NB Esiste una classe pear che risolve la questione eh cioč, non credere.
Ma il fatto č che non la rendi portabile, ma funzionante. che č diverso.
J

 ha
scritto:

Ciao,
cosa deve fare esattamente la classe non compatibile?
A quale classe PEAR fai riferimento?
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Se hai voglia di implementarmela tu, scrivimi in privato :-D eheheh
Questo e' il mio terzo messaggio in cui te lo chiedo. Dimmi quale
funzione ti manca e scommetto che in meno di 2 ore ti trovo la
soluzione o presente in rete fatta ad hoc.


 soluzione o presente in rete fatta ad hoc.
Non č questo il punto. Capiamoci. So cercare, e farmi le cose da solo.
E' un discorso un po' piů concettuale che non legato ad una stupida funzione
non implementata.
E' cosa essa rappresenta.
J

 A quale classe PEAR fai riferimento?
http://pear.php.net/package/Net_DNS

 funziona, o una Php che se va, va da dio, e se non va h da patchare ?
La mia risposta e' semplice: 
scrivi codice portabile direttamente in PHP, si puo' fare e non e'
complicato.
Se poi preferisci utilizzare JSP a PHP, e' una tua scelta, ma non
basare questa scelta sul fatto che ritieni PHP meno portabile di Java
basdandoti su codice che non e' stato scritto per essere portabile.
E' come pretendere che codice PHP 4 sia portabile su PHP 3 senza
toccare una rigo o codice scritto con register_globals = on sia
portabile in un sistema off.



Cavolo...mi hai costretto a fare la caccia al tesoro tra i tuoi post per
capire di cose si trattava :P
Comunque sě, non č certo l'esempio migliore per poter dire che Php č
multipiattaforma. Possiamo parzialmente consolarci all'idea che NET_DNS sta
per essere portata da PEAR a PECL
Saluti,
Fabio


 portabile in un sistema off.
Ma di cosa stai parlando ?
Ahhhhhhhh ora ho capito a cosa ti riferivi in tutti questi POST !!! :-))
Non riuscivo a capire... tu ti riferisci a 'portabilità' intesa come la
possibilità di far andare script tra ambienti magari impostati in modo
diverso...
beh mi spiace ma hai le idee confuse (non te la prendere).
Se uno script è stato scritto per register_globals = on e non funziona su
off per me non è questione di portabilità
La portabilità è un'altra roba.
Julien

 per essere portata da PEAR a PECL
Evviva gli sviluppatori che mettono le pezze dove Php perde acqua :-D
J

 La portabilit` h un'altra roba.
Es.
http://www.mozilla.org/hacking/portable-cpp.html#portability_rules
Per la Mozilla Organization per scrivere codice portabile C++, ad
esempio, NON SI DEVONO utilizzare le eccezioni.
Ora le eccezioni non sono una funzione od altre amenita' bensi una
parte del costrutto del linguaggio.
Questo significa che la portabilita' non riguarda riguarda il
linguaggio in se ma la sua implementazione sulle varie piattaforme.
E visto che riguarda l'implementazione allora significa che e'
possibile scrivere codice PHP portabile, almeno secondo quella che e'
la "filosofia" (se cosi' possiamo chiamarla) della Mozilla Organization
facendo solo attenzione a quali funzioni/costrutti si utilizzano.
Riferimenti delle linee guida per codice PHP portabile:
http://url.repository.biz/go/Q


 
http://url.repository.biz/go/Q
A parte che il tuo link porta a google dove c'è tutto e niente, il primo
link riporta:
Make Your PHP Code Portable
Make sure your program can run on different PHP setups by distributing a
custom environment setup.
Ovvero fa riferimento a setup diversi di Php (penso a register globlas, safe
mode etc etc) ma questa non è portabilità. Non si parla infatti di
implementazioni diverse dello stesso ambiente.
E' solo scrivere codice che non sia dipendente da particolari configurazioni
dell'ambiente di esecuzione è ben diverso che parlare di portabilità.
Ciao
J

 ben diverso che parlare di portabilit`.
Bene, abbiamo chiarito quale e' per te il concetto di portabilita'. 
Per cui abbiamo la certezza che i tuoi script non funzioneranno con
configurazioni differenti da quella della tua macchina di sviluppo.
E questa per te' e' portabilita'?


 configurazioni differenti da quella della tua macchina di sviluppo.
Neppure i tuoi. Ragiona e rileggi.
Se non metti le GD su un server non andrà neppure su una configurazione
identica sue due macchine diverse. E allora è colpa del programmatore ?
Stiamo perdendo tempo.
J

 No, non sono accoppiate. traduci meglio.
Quello che seque e' una serie di regole linee guida ed esempi che sono
stati trovati utili per rendere il codice C++ portabile su diverse
macchine e compilatori.
[mi quoto]
implica anche la possibilita' di incoerenza tra lo stesso compilatore
su macchine differenti. 
[/i quoto]


 E io che rispondo pure...
Ma lo hai letto lo script?
function getmxrr_portable ($hostname = "", &$mxhosts, &$weight)
{
	if (function_exists("getmxrr"))
	{ $result = getmxrr ($hostname, $mxhosts, $weight); }
	else
	{ $result = getmxrr_win ($hostname, $mxhosts, $weight); }
	return $result; 
}
Sai che cosa c'e scritto qui sopra? Sai quale e' il significato di
function_exists?
Se utilizzi getmxrr_portable sotto windows o sotto linux avrai lo
stesso risultato, il che significa che il codiche che utilizza la
funzione getmxrr_portable (e getmxrr_portable2) al posto di getmxrr
diventa portabile sotto piattaforme linux e windows senza dover fare
modifiche.



Significa solo che implementi delle funzioni di un ambiente non portabile
mettendo una pezza che chiama una funzione presente nel sistema operativo.
A casa mia questa non è portabilità
Se per te lo è, accontentati pure.
Julien


Ripeto, questa non è portabilità. Questo è scrivere codice che usa funzioni
'base' presenti ovunque oppure roba già fatta per il sistema operativo.
Se fosse portabile andrebbe anche su MacOSX - ora dimmi che basta installare
nslookup sul mac e allora comincio a ridere...
Fai una classe in java che rispetti le specifiche delle JVM di Sun,
compilala e lanciala su Mac, Win, Linux, Ibm, etc etc e capirai cosa è del
codice platform independent e paltform free.
Ora dato che per oggi ne ho sentite anche troppe, chiudiamola così:
Php NON è un ambiente di programmazione che permette la portabilità del
codice, ma il codice può essere scritto in modo che funzioni in
multipiattaforma a condizione di utilizzare solo le funzioni implementate in
tutti i sistemi operativi (non solo win e linux sennò ci prendiamo in giro).
J

 ci prendiamo in giro).
L'esempio di getmxrr era solo indicativo, volendo potevo tranqullamente
implementarlo utilizzando solo funzioni PHP come ad esemempio fsockopen
etc.


 Stiamo entrando nel comico.
Parla per te.


 etc.
Ecco bravo limita tutto il discorso ad una funzione... ma sai cosa è una
chiamata a sistema operativo ?
Rispondi alle parti interessanti al posto di insistere con uno scriptino.
Questo non ti potrà mai dare ragione perchè non è di uno script o di una
funzione che stiamo parlando.
Cerca di centrare il motivo per cui ho postato all'inizio, fai un paio di
test e porta la tua esperienza.ù
Se non ce l'hai, allora lascia perdere, non sei obbligato a rispondere ad
ogni post.
Ciao
J

 Parla per te.
Infatti io sto già ridendo.
J

 Non stai facendo bella figura
Secondo te chi di noi due non sta facendo una bella figura?


<cut>
Il thread č inutile.
Continua da solo.

 Continua da solo.
PS: Quotare bene non significa solo scrivere le cose al posto giusto, ma
anche rispettare il significato del messaggio di chi l'ha inviato. Senza
comprensione del testo un messaggio non puņ essere quotato, quindi ti prego
di postare per intero il mio messaggio originale o non tagliarlo se non sai
come rispettare il mio pensiero. Grazie.

 portato per ora, speriamo nei type)
Dove e' che non avrei rispettato "il significato del messaggio di chi
l'ha inviato."?
Ho quotato tutto il necessario per "rispettare il tuo pensoiero", ho
indicato il message ID ti ogni quote in modo che chi legge il quoting
sia in grado di ritrovare il messaggio completo.



Hai pure la pretesa di aver ragione sul pensiero altrui.
Non ho altro da dire.
Sulla questione message ID etc ste cose dille ai ragazzini. Io coi message
ID e quotando come voglio
ricostruisco un testo della divina commedia dagli atti degli apostoli.
J

 commedia dagli atti degli apostoli.
Bene, visto che ne sei tanto convinto dimostralo quotando 3 o piu'
parole consecutive di questo thread
(mKzJb.41962$_
P.18...@news4.tin.it
) e riportando un passo della
divina commedia o degli atti degli apostoli che avresti ricostruito.


Bene, visto che ne sei tanto convinto dimostralo quotando 3 o piu'
parole consecutive di questo thread
(mKzJb.41962$_
P.18...@news4.tin.it
) e riportando un passo della
divina commedia o degli atti degli apostoli che avresti ricostruito.
A me basta notare che dalla questione principale del thread, tu sia finito a
voler aver ragione su una cosa che non centra nulla perchč, come hai
dimostrato dall'inizio, esprimi giudizi
su quello che vuoi tu, totalmente Off Topic rispetto al thread. In compenso
di tutte le motivazioni, smontate a una a una (vedi exec) non c'č traccia
nei quote...
Rimane il fatto che una classe Php e una class Java, una non portabile (che
pure utilizza solo funzioni del php e non chiamate esterne al sistema
operativo) e l'altra sě funzionano in modo diverso.
Una ci mette meno di 2 secondi (se modificata per funzionare - vedi thread
originale, non mi serve una exec per farla andare) l'altra piů di 20.
Questo č l'argomento del thread che ho postato, e non quello che col tuo
quote pretendevi che fosse, e neppure ho chiesto un giudizio sul mio stile
di programmazione.
Se hai intenzione di continuare, questo č l'argomento, altrimenti evita.
Julien

 mio stile di programmazione.
ma continui a non portare a dimostrazione della tua tesi il codice che
ritieni chiarificatore. Per conto mio ho dimostrato la possibilita' di
scrivere codice portabile sotto windows, tu per contro non hai ancora
dimostarto l'imposssibilita' di cio', anzi, a meta' del thread hai
dichiarato che:
[quoto tNAJb.42361$_
P.18...@news4.tin.it
]
Esiste una classe pear che risolve la questione eh cioh, non credere.
[/quoto]
Questo dimostra che non e' PHP in quanto tale a rendere impossibile
portare il codice bensi' il fatto che e' la TUA classe a non essere
portabile.


"Setec Astronomy" <setec@_NO_NOSPAM_freemail.it> ha scritto nel messaggio
news:2oUJb.229474$e6.90...@twister2.libero.it...

Stai quotando un messaggio sbagliato.
Ciao

 Stai quotando un messaggio sbagliato.
Ti sbagli.



Finalmente siamo in loop.
Stai quotando un messaggio sbagliato.
Ciao
J

 obsoleto) non rende lo script portabile.
Ho postato il codice di una funzione chiamata "getmxrr_win" per
dimostrare che e' possibile scrivere codice PHP portabile anche se
mancano le implementazioni di alcune funzioni sotto windows, sequendo
quello che era stato il tuo primo post e TU hai ritenuto fosse una

Poi parli anche di:











-- 



porobabile se vengono fatte chiamate a word o ai programmi M$
la classe o codice NON e' portabile a meno di un reverse
di word per rendere portabile il com



 io ci andrei piano con queste dichiarazioni. Spulciando su internet
e parlando con persone che hanno avuto esperienza diretta ti posso
garantire che per applicazioni di un certo livello (parlo di aziende
medio-grandi)
Java è lo standard seguito con diversi punti di scarto da .Net.
Di certo non sarà una scheggia ma non puoi nemmeno dire che fa schifo.

 di word per rendere portabile il com
Certo, ma volendo si possono utilizzare le classi Java per la creazione
di documenti binary Word ed Excel (
http://jakarta.apache.org/poi/
) o in
alternativa si utilizzano formati come RTF e CVS.


 comunque esistono su PHP funzioni NON portabili
Questo è ciò su cui batto dal primo post. Pur essendoci delle grosse
differenze a livello di prestazioni (velocità) c'è però da dire che java va
ovunque.
Però volevo affrontare la cosa partendo dai miei dati (la velocità e la
portabilità) per andare oltre, non per arrivare a giudizi su java (molto
soggettivi)
J


Concordo.
"E' meglio un applicativo che va piano ma a perfezione (e senza troppi
problemi di sicurezza) o uno che va veloce ma instabile, con bug, e magari
problemi di sicurezza ?"
Questa è la domanda per chi deve capire la filosofia java.
A titolo di esperienza personale, ho un applicativo business online su più
macchine (è un server software) e dal primo giorno che è online (a parte
aumenti di funzionalità) non ha
mai avuto un solo crash. E' java. Non ho altro da aggiungere.
J

 ################################################################
Si noti che questa implementazione deve essere usata con cautela.
La variabile $hostname infatti viene passata al sistema operativo cosě com'č
senza nessun tipo di pulizia, rendendo aperto a 'malizie' il codice.
L'esito č un mancato controllo da parte del programmatore di cosa puň essere
passato al server.
Usare quella funzione per un dominio 'strano' porterebbe a brutte
conseguenze.
Buon lavoro
Julien