OVH Cloud OVH Cloud

PHP versus Java

28 réponses
Avatar
charly
Bonjour,

J'ai l'habitude de développer des sites en PHP et je viens de terminer
un projet de site web en Java cette fois-ci.
Nous avons utilisé des taglibs, des beans, un modèle MVC pour
centraliser les requetes, des objets sessions etc...

Mnt que le projet est fini, je me pose une question : quels sont les
avantages de développer en Java un site web par rapport au PHP ?

Je précise que :
le projet Java comporte les mêmes fonctionalités qu'un simple site PHP
Nous l'avons fait en Java car contrainte de l'école pour nous former.

Ma question porte plus sur le marché du travail : prq utiliser Java pour
faire ce que PHP fait très bien ?
Je trouve que le développement PHP est bcp bcp plus rapide que Java pour
les sites...

Merci de bien vouloir m'éclairer ....

10 réponses

1 2 3
Avatar
Bruno Desthuilliers
charly wrote:
(snip)
Je ne suis pas là pour dire que PHP est mieux que Java, je veux juste avoir
des arguments qui me ferait dire : pour tel site web, il vaut mieux le
développer en java qu'en PHP. Pour l'instant je n'en vois pas (ah si,
manier des objets en java, c'est + rigolo que des fonctions mais ca compte
pas vraiment comme argument :) )


D'autant moins qu'on peut aussi bien faire de la POO en PHP (et AMHA
mieux, étant donné la nature plus dynamique du langage).

Quoi qu'en pensent les fervents de Java, et quoi qu'en dise une certaine
propagande, Java n'est certainement pas une merveille d'orientation
objet. CLOS propose un modèle objet autrement plus riche.

Je vais aussi aller sur Java.advocacy histoire de me faire taper dessus :)


Masochiste !-)

Bruno

Avatar
Bruno Desthuilliers
Seb wrote:
(snip)

Oui, c'est vrai en règle général PHP peux paraître plus simple et l'est....
dans la majorité des cas PHP suffit pour faire ce que tu veux ....
La force de Java, c'est le fait d'être pure objet :


Lol ! Une fonction Java est-elle un objet ? Si tu veux du 'pur objet',
va regarder du côté de Smalltalk.


mais pour du service web, quel intéret ?


bouh!!!!!
C'est bien ca tout l'intérêt ..... les principaux détracteurs de Java argent
que Java est lent et c'est vrai si on se réfère par exemple au développement
d'applications Java graphiques par exemple, Java n'est pas véritablement
fait pour ca mais Java excelle dans le cas de développement web (car c'est
bien de cela dont tu voulais parler je suppose car ce que l'on appelle web
service est encore différent). Le grand nombre d'api est un avantage bien
sur mais c'est surtout l'architecture (on parle d'architecture J2EE) de
l'ensemble qui est un atout et qui permet d'avoir des solutions web robustes
et d'avoir une très bonne monté en charge (point primordial dès que tu
attaques un gros projet web)



Là, par contre, l'argument semble tenir la route.

Je ne suis pas là pour dire que PHP est mieux que Java, je veux juste


avoir

des arguments qui me ferait dire : pour tel site web, il vaut mieux le
développer en java qu'en PHP. Pour l'instant je n'en vois pas (ah si,
manier des objets en java, c'est + rigolo que des fonctions mais ca compte
pas vraiment comme argument :) )



Ben si ca compte comme argument ....... C'est un peu comme la différence
entre l'assembleur et le C++ par exemple : fait moi un programme en C++ ....
puis essai de me le refaire en assembleur. Bon ok, c'est un mauvais exemple


<troll-alert>
<troll pilosite='max'>
Oui, C++ étant à peu de chose près un assembleur portable et plus ou
moins orienté objet !-)
</troll>

<troll pilosite='medium'>
Un meilleur exemple serait AMHA 'fait un programme en Python et essaie
de le refaire en C++' !-)
</troll>
</troll-alert>

mais les objets ne servent pas uniquement à "faire rigolo", par exemple,
tente de créer un pool de connections à ta base de donnée : facile en Java
mais plus difficile en PHP car PHP justement est beaucoup plus procédural.
Java permet ainsi (grâce au objets) d'avoir un niveau d'abstraction beaucoup
plus grand et permet une modélisation très pointu. En particulier, le modèle
MVC est largement utilisé dans les architecture J2EE (et java en général) et
permet de séparer la vue (ta page web HTML en gros), des datas et de la
logique applicative.


Infaisable en PHP, en Python, ou autre ? Je ne suis pas sûr.

Bref, Java apporte (et oblige à avoir) une approche plus conceptuelle du
projet web sur lequel tu travailles en séparant distinctement les couches
(vue - logique applicative et data), cette modélisation préalable peut
paraître fastidieuse et longue comme tu le faisais remarquer mais en réalité
tu gagnes du temps sur le long terme.


Encore une fois, il me semble que c'est un problème plus lié à
l'approche du projet et de la programmation en général qu'au langage en
lui même.

En réalité, dans la majorité des projets, PHP est suffisant car la plupart
des projets ne demandent pas une modélisation poussée, donc pas besoin de
séparation entre la logique applicative et la représentation visuelle.


Je voudrais quand même que tu m'explique en quoi cette séparation est
impossible - que ce soit dans l'absolu ou en raison d'une telle
complexité que cela n'en vaille pas la chandelle - en PHP.

Il existe également de très gros site fait un PHP, il y a 1 an, Yahoo est
meme passé de J2EE à PHP (pas comprit pourquoi d'ailleurs)


Peut-être parce que PHP est un langage de plus haut niveau, et permet
donc de coder plus vite ?

Bon, je ne veux pas dire que Java soit forcément un choix stupide pour
un projet Web (ni que C++ est un mauvais langage non plus...), et il
faudrait probablement que je teste un peu les solutions Java dans ce
domaine pour avoir un avis plus objectif. Mais pour le moment, j'avoue
ne toujours pas être convaincu.

Bruno


Avatar
Seb
Lol ! Une fonction Java est-elle un objet ?


Pas comprit

Si tu veux du 'pur objet',
va regarder du côté de Smalltalk.


Java est full object, et probablement meme inspiré de Smalltalk

<troll-alert>
<troll pilosite='max'>
Oui, C++ étant à peu de chose près un assembleur portable et plus ou
moins orienté objet !-)
</troll>

<troll pilosite='medium'>
Un meilleur exemple serait AMHA 'fait un programme en Python et essaie
de le refaire en C++' !-)
</troll>
</troll-alert>


Mouai comme dit plus haut, c'est provocateur et réducteur...
c'etait surtout pour mettre en valeur la modélisation entre les deux
langages.

mais les objets ne servent pas uniquement à "faire rigolo", par exemple,
tente de créer un pool de connections à ta base de donnée : facile en
Java


mais plus difficile en PHP car PHP justement est beaucoup plus
procédural.


Java permet ainsi (grâce au objets) d'avoir un niveau d'abstraction
beaucoup


plus grand et permet une modélisation très pointu. En particulier, le
modèle


MVC est largement utilisé dans les architecture J2EE (et java en
général) et


permet de séparer la vue (ta page web HTML en gros), des datas et de la
logique applicative.


Infaisable en PHP, en Python, ou autre ? Je ne suis pas sûr.


Bien sur que non,
Je répond également pour les messages précédents :
la mise en oeuvre du modèle MVC (bon ok il n'y a pas que MVC, disons que je
suis borné :) ) est très simple dans le modèle Java car :
-on encapsule la logique applicative dans un bean ....
- on encapsule les données dans une classe prévu à cet effet
Au passage, on a toute latitude pour gérer la persistance des objets (donc
des données), la synchronisation, les sessions....
il est très simple d'encapsuler les données dans une classe Java (partie
model dans le MVC) alors qu'en PHP, cette solution est beaucoup moins souple
et d'ailleurs il me semble que le seul moyen d'encapsuler les données est
justement de créer un objet PHP (j'espère ne pas me tromper) alors meme que
les objets PHP semblent être des objets "bâtards" (désolé) justement crée à
ce seul effet mais sans véritable possibilité de persistance par exemple.
Comment peut on parler dans ce cas de modélisation MVC....
La puissance de PHP repose en grande partie sur l'interfaçage avec mysql
(rapide) : simple, très efficace dans la majorité des cas (quoique mysql
soit également limité malgres sa grande rapidité)
J2EE permet de rajouter aisément une couche de persistance (cache) grâce aux
objets encapsulant les données... Ainsi, on réduit les accès en base et
cette architecture permet logiquement de ce simple fait d'avoir une très
forte monté en charge.
C'est donc plus l'architecture qui permet les performances de J2EE plutôt
que le langage. Et cette architecture est difficile à imiter dans le cas de
PHP puisque pas de persistance des objets.
D'ailleurs meme si effectivement il est possible de séparer la logique
applicative de l'interface graphique en PHP, en pratique c'est rarement fait
ainsi.
Ce simple constat permet de faire pencher la balance vers Java lors de gros
projets.

Je rajouterai que ASP et PHP sont très similaire dans le principe de
fonctionnement, la nouvelle architecture .NET de microsoft (se voulant un
peu l'évolution de ASP) se rapproche beaucoup plus du standard J2EE
(modélisation, encapsulation, persistance...)


Avatar
Armel FAUVEAU
Remarque : le fameux modèle MVC est une méthode de développement qui
n'est ***en rien*** réservée à java.


Je confirme et c'est toujours bon de le rappeler.

Et histoire d'enfoncer encore un peu le clou, MVC n'a pas attendu Java pour
exister. MVC est bien plus ancien.

Quant à savoir si c'est la panacée d'utiliser cette méthode plutôt qu'une
autre (et donc un bon argument à mettre en avant), j'y vois surtout une
nouvelle tarte à la crème de plus, sans doute trop médiatisée, avec pour
objectif : si vous utilisez MVC alors vous êtes des gens bien :p

Comme les autres, elles a ses points forts et ses points faibles et n'a en
tout cas rien d'universel. A utiliser donc après reflexion, si besoin, mais
pas pour faire genre sous peine de basculer rapidement dans un monde
merdique :p

Armel.

Avatar
Laurent Seguin
"Seb" , le 03 août 2003 17:19:16, écrivait
ceci:

La puissance de PHP repose en grande partie sur l'interfaçage avec
mysql


Non mais ca va pas non ? Faut arrêter de dire de bêtises pareille.

J2EE permet de rajouter aisément une couche de persistance (cache)
grâce aux objets encapsulant les données... Ainsi, on réduit les accès
en base et cette architecture permet logiquement de ce simple fait
d'avoir une très forte monté en charge.


Ca serait bien si c'était visible du coté de l'internaute...
Je visite souvent quelques sites sur architecture J2EE (tvmag.com par ex)
et franchement je les trouve lents, très lents...

Avatar
Bruno Desthuilliers
KEvin wrote:
Denis Beauregard a proclame :

Ceci dit, il y a des différences notoires. PHP est exécuté par le
serveur seulement alors que Java est normalement exécuté par le
client



ben non java peut aussi etre execute du cote serveur tout comme PHP, ca
s'appelle les jsp (JAVA Server Page) et elles presentent les meme
possibilites que php ou asp mais avec le style java (objet,


Pas spécifique à Java...

fortement
type ...)


Non, pas fortement, 'statiquement'.

Le java sur le client (applet) n'est qu'une autre declinaison du
langage ...


Quelque peu antérieure à l'utilisation de Java côté serveur, mais bon,
passons.

Bruno


Avatar
john gallet
Re,

PHP n'a rien à envier à java de ce côté là, bien au contraire, surtout
avec la facilité d'ajout de librairies existantes en C/C++. J'ai intégré
la même lib C en PHP et en java. Intégration PHP : 2 semaines.
Intégration JNI/java : 2 mois et demi.


Pas un bon argument : cela reflète juste que tu es bien meilleur programmeur
PHP que Java


Pas du tout : dans les deux cas, c'est du langage C ! Et le C ça va, je
connais ! (rappel :extention php = langage C, JNI / Java Native
Interface langage C pour faire interfaçage de java vers C et réciproquement).

Réécriture de la lib en full java
: en cours, déjà plusieurs semaines consommées.
Quel genre de Lib?

Ultrapropiétaire avec connexions persistantes par thread/process. Et

c'est pas moi qui le code mais quelqu'un qui connait bien java.

On y revient : un pool de connexion c'est utile pour des deamons,
inutile pour des 'cgi-like' (que sont les jsp aussi).


Oui enfin c'est très réducteur de limiter simplement J2EE au JSP.


Mais c'est le sujet d'origine de la discussion hein, ne l'oublions
pas... Je cite :
"quels sont les avantages de développer en Java un site web par rapport
au PHP ?"

la réutilisation des objets t'évite de réinventer la roue chaque fois


Et une fonction bien conçue t'évite tout autant de réinventer la roue à
chaque fois. Un jour peut-être les développeurs objet qui n'ont jamais
vu une fonction comprendront qu'une méthode c'est une fonction
restreinte à une classe...
Donc idée reçue numéro 1 : MVC = java -> complètement faux. Idée reçue
numéro 2 : hors de l'objet point de réutilisabilité du code ->
complètement faux aussi.

Évidemment que si c'est pour faire 2 ou 3 requêtes à ta base de données,
inutile de modéliser ou de faire du n-tiers


Et dans un site web dynamique on fait QUOI dans 99% des cas ? Il peut
vous le dire : on accepte 4 pauvres arguments en entrée, on tripatouille
un sgbd ou une socket ou un fichier et on balance un flux de sortie en
ascii ou au plus évolué en binaire (pdf, jpg etc...). Ceux qui arrivent
à faire un arbre d'héritage à 5 niveaux pour ça devraient vraiment se
faire ausculter le neurone.


mais Java impose effectivement plus souvent de faire une modélisation
préalable et je crois que c'est une bonne chose.
1) A condition de dénormaliser un peu quand nécessaire. C'est comme la

différence entre MCD et MPD, le premier est une vue de l'esprit, le
second est utilisable pour coder. La différence entre les deux, c'est la
forme normale appliquée.
2) moi ça me fait plutôt penser que ça veut dire que seuls des assistés
utilisent ce langage mais bon... c'est un avis personnel. Je n'ai pas
besoin que le langage m'impose de faire une analyse pour la faire, c'est
une question d'Hommes pas de langage.

La connaissance du langage est également très importante dans le choix de la
technologie
Oui au sens que quand on doit monter un projet sur une équipe existante

on doit composer avec les connaissances de l'équipe.

a++
JG


Avatar
Matchenul
"charly" a écrit dans le message de news:
3f2bb19b$0$2123$
Bonjour,
Merci de bien vouloir m'éclairer ....
he ben, j'éspère qu'avec tout ça tu vas t'y retrouver ...

Je ne suis pas une pointure en PHP comme certains ici mais j'ai choisi ce
langage car je suis issu de système mainframe et je trouve qu'il se
rapproche beaucoup de certains langages d'exploitation.
On y réinvente ce qui existe depuis bien longtemps sur les gros systèmes (et
il y a encore du chamin à parcourir...c'est pasionnant) mais en changeant de
support (le reseau c'est agrandi!) et ça me va bien.
Il y a quand même quelque chose qui me turlupine.
J'ai reçu ça aujourd'hui dans la news letter de Damien Seguy :

6] Les classes Java en PHP
------------------------------------------------------------
La communauté n'a pas attendu que Zend et Sun se rapprochent
pour rassembler PHP et Java. Il y a notamment le projet
JAPHA (mélange de JAvA et PHp), qui a pour but de livrer
une version PHP des librairies d'objets Java. L'idée de
base est de pouvoir passer d'un langage à l'autre, sans
effort.

Et aussi, pourquoi PHP veut absolument convertir tout le monde à la POO ?

Vous ne pourriez pas tomber tous d'accord ?

amicalement
JC

Avatar
Armel FAUVEAU
Bonsoir,

Il y a quand même quelque chose qui me turlupine.
J'ai reçu ça aujourd'hui dans la news letter de Damien Seguy :

6] Les classes Java en PHP
------------------------------------------------------------
La communauté n'a pas attendu que Zend et Sun se rapprochent
pour rassembler PHP et Java. Il y a notamment le projet
JAPHA (mélange de JAvA et PHp), qui a pour but de livrer
une version PHP des librairies d'objets Java. L'idée de
base est de pouvoir passer d'un langage à l'autre, sans
effort.


Bah allons-y...mélangeons PHP et Java.
On n'en est pas à une connerie (oops, pardon) pret.

Pourquoi ne pas y ajouter une soupcon de Rebol (aka le langage des
couillus), de Python et de Ruby. Puis faire une merge avec .Net dans la
foulée. Au final, on baptise le tout "supra-langage" (pour faire marketing
parceque ca pète bien). Evidement, on préconise l'utilisation d'un hybride
de MVC, UML et Extreme Programming comme méthodologie. Cela va de soit.

Et ensuite, on regarde exploser Ariane V, dont l'ensemble du développement
logiciel aura évidement hérité de ce "supra-langage" à la mode...

Et aussi, pourquoi PHP veut absolument convertir tout le monde à la POO ?


Ah bon ?
Moi j'en connais au moins deux qui resisteront encore longtemps :)
Et personne n'est tenu de faire comme les autres, si complot massif vers la
POO il y a.

Vous ne pourriez pas tomber tous d'accord ?


Est-ce si important ?

Armel.

Avatar
Laurent Seguin
"Armel FAUVEAU" , le 05 août 2003 01:33:55,
écrivait ceci:

Bah allons-y...mélangeons PHP et Java.
On n'en est pas à une connerie (oops, pardon) pret.


Clair a croire que Zend s'est fait racheté récemment par Sun....

Pourquoi ne pas y ajouter une soupcon de Rebol (aka le langage des
couillus),


Bof rebol n'est pas /si/ compliqué que ca. Perso je le trouve plus simple
que Java mais moins pratique à utiliser que PHP ou Perl.

Et aussi, pourquoi PHP veut absolument convertir tout le monde à la
POO ?
Ah bon ?



Ben c'est un peu mon impression aussi quand je regarde de plus près PHP5.

Moi j'en connais au moins deux qui resisteront encore longtemps :)


Des noms ;-)

@++


1 2 3