OVH Cloud OVH Cloud

[Java vs PHP]

30 réponses
Avatar
Eric Alquier
Bonjour,

Je m'interroge sur les avantages et inconvénients de chacun des deux
langages Java et PHP, ou Javascript/PHP

En effet, je souhaite créer un site intéractif connecté à un base de donnée
(MySQL certainement), mais lequel choisir ?

Merci pour vos infos et conseils.

cordialement,

Eric A. (eric.alquier.berry@wanadoo.fr)

10 réponses

1 2 3
Avatar
Nicolas Delsaux
Le 05.08 2003, Kupee s'est levé(e) et s'est dit "tiens,
je vais écrire aux mecs de fr.comp.lang.java"

Pis il est aussi possible de coder comme un cochon en java. La preuve,
regardez dans les facs le nombre d'étudiants qui vont faire un projet
avec tout static et pas du tout objet ....


On le trouve aussi chez des tonnes d'ingénieur qui codent tout avec d'un
côté les classes contenant les données, et de l'autre les managers
static...
Et c'est malheureusement un design qui se répand.

--
Nicolas Delsaux
Tu as des poils qui te poussent partout sur le corps ?
Ta bibliothèque est plus grande à l'intérieur qu'à l'extérieur ?
Et pire que tout, tu commences toutes tes phrases par Oo en les terminant
par kkkk ?
Pas de doute, tu te transformes en bibliothécaire de l'université
invisible.

Avatar
Raphaël Piéroni
Nicolas Delsaux wrote:
Le 05.08 2003, Kupee s'est levé(e) et s'est dit "tiens,
je vais écrire aux mecs de fr.comp.lang.java"

Pis il est aussi possible de coder comme un cochon en java. La preuve,
regardez dans les facs le nombre d'étudiants qui vont faire un projet
avec tout static et pas du tout objet ....



On le trouve aussi chez des tonnes d'ingénieur qui codent tout avec d'un
côté les classes contenant les données, et de l'autre les managers
static...
Et c'est malheureusement un design qui se répand.

si les methodes static etaient a proscrire, elle ne feraient meme pas

parti du langage.
pour info, les equipes jakarta, dont on ne peut pas douter de leur
connaissance de l'objet utilisent aussi des methodes statiques. mais pas
pour tout faire. de temps en temps, cela se justifie. lorsque par
exemple on a un petit bout de code qui peut etre utilisé souvent, mais
qui n'a sa place dans aucune classe.

de plus quelle est la différence réelle entre un singleton et une classe
dont toutes les methodes sont statiques ?

R


Avatar
Dominique Marie
Kupee wrote:

D'ailleurs moi qui suis autodidacte pour ce qui est de la prog objet,
j'ai constaté que souvent dans une classe une méthode peut soit prendre
des paramètres et retourner une valeur, soit lire des champs et en
modifier d'autres, pour obtenir le meme fonctionnement.
Et si on choisit d'utiliser des paramètres et une valeur de retour, il
arrive souvent que la méthode puisse etre static.
C'est mal ? Cela gene t'il quelque chose ? Ya t'il une raison d'utiliser
une méthode plutot qu'une autre ?


non statique == méthode d'instance.
statique == méthode de classe.

une méthode d'instance sert en principe à manipuler les données encapsulées
par un objet, par exemple :
- les accesseurs ;
- translation d'un objet représentant un point.

une méthode de classe sert en principe à manipuler des données communes à
toutes les instances d'une classe, par exemple :
- un compteur d'instances ;
- des valeurs constantes.
on peut aussi s'en servir pour certains patterns comme le Singleton pour
fournir l'instance partagée...

--
Dominique

remplacer nospam par com dans mon adresse pour m'écrire

Avatar
Dominique Marie
Raphaël Piéroni wrote:


de plus quelle est la différence réelle entre un singleton et une classe
dont toutes les methodes sont statiques ?


tu dis adieu à l'héritage...

--
Dominique

remplacer nospam par com dans mon adresse pour m'écrire

Avatar
Kupee
Dominique Marie wrote:
non statique == méthode d'instance.
statique == méthode de classe.

une méthode d'instance sert en principe à manipuler les données encapsulées
par un objet, par exemple :
- les accesseurs ;
- translation d'un objet représentant un point.

une méthode de classe sert en principe à manipuler des données communes à
toutes les instances d'une classe, par exemple :
- un compteur d'instances ;
- des valeurs constantes.
on peut aussi s'en servir pour certains patterns comme le Singleton pour
fournir l'instance partagée...


Je sais tout ca mais imagine ca :
public class MonPanel extends Panel {
private Label label;

public MonPanel(String name) {
label = creeLabel(name);
add(label);
}

private Label creeLabel(String name) {
return new Label(name);
}
}

dans ce cas creeLabel pourrait aussi bien etre static
on peut aussi faire ca :

public class MonPanel extends Panel {
private Label label;
private String name;

public MonPanel(String name) {
this.name = name;
creeLabel();
add(label);
}

private Label creeLabel() {
label = return new Label(name);
}
}

yen a un qu'est mieux que l'autre ? avec des raisons objectives ou juste
question de gouts ?

Avatar
Kupee
Vincent wrote:
C'est la différence entre une procédure et une fonction.
Imaginons que l'on a un objet voiture avec les méthodes
- avancer(nbKm, boolean aPuAvancer)
- kilométrage()
- tourner(Direction d, boolean aPuTourner)

C'est assez naturel de dire que les méthodes avancer et tourner sont des
procédures. Elles *font une action* : elles agissent sur l'objet et en
modifient son état. C'est le principe d'une procédure. Elles ont des
paramètres de compte-rendu de leur action (ici 'aPuAvancer' et
'aPuTourner').


Euh j'ai du mal a comprendre a quoi pourrait bien servir les paramètres
aPuTourner ou aPuAvancer ...
Si c'est pour dire qu'on peut pas tourner autant ne pas appeler la
méthode carrément. Si c'est pour informer qu'on a tourné ou qu'on a pas
pu, ca risque pas de marcher comme ca ...

Avatar
Vincent
Kupee a pris sa plume et, dans le message

Si c'est pour informer qu'on a tourné ou qu'on a
pas pu, ca risque pas de marcher comme ca ...


Pourquoi donc cela ne pourrait-il pas marcher? Tu peux très bien avoir
un objet qui contient le résultat de ton action. Pour continuer sur
l'exemple de la voiture, imaginons un résultat ayant cette structure là
:
CompteRendu

boolean actionTerminee;
int angleReelDeRotation; // la voiture a tourné réellement de
seulement 'angleReelDeRotation' degrés
}

Pourquoi donc cela n'est-il pas possible?
ah, je viens de comprendre, c'est parce que j'ai mis 'boolean', c'est
ça?
ok...

--
Vincent

Avatar
Kupee
Vincent wrote:

Kupee a pris sa plume et, dans le message

Si c'est pour informer qu'on a tourné ou qu'on a
pas pu, ca risque pas de marcher comme ca ...



Pourquoi donc cela ne pourrait-il pas marcher? Tu peux très bien avoir
un objet qui contient le résultat de ton action. Pour continuer sur
l'exemple de la voiture, imaginons un résultat ayant cette structure là
:
CompteRendu

boolean actionTerminee;
int angleReelDeRotation; // la voiture a tourné réellement de
seulement 'angleReelDeRotation' degrés
}

Pourquoi donc cela n'est-il pas possible?
ah, je viens de comprendre, c'est parce que j'ai mis 'boolean', c'est
ça?


Ba oui un boolean ca passe pas par référence en paramètre donc on peut
rien en faire. et un Boolean étant immuable ca n'aurait pas marché.
Mais si tu passe un objet CompteRendu comme tu dis et que tu le modifie,
alors oui ca devrait aller


Avatar
Dominique Marie
Kupee wrote:


Je sais tout ca mais imagine ca :
public class MonPanel extends Panel {
private Label label;

public MonPanel(String name) {
label = creeLabel(name);
add(label);
}

private Label creeLabel(String name) {
return new Label(name);
}
}

dans ce cas creeLabel pourrait aussi bien etre static
on peut aussi faire ca :

public class MonPanel extends Panel {
private Label label;
private String name;

public MonPanel(String name) {
this.name = name;
creeLabel();
add(label);
}

private Label creeLabel() {
label = return new Label(name);
}
}

yen a un qu'est mieux que l'autre ? avec des raisons objectives ou juste
question de gouts ?


dans le premier cas static s'impose car la méthode ne dépend en rien d'une
quelconque instance. C'est typiquement le cas de méthodes utilitaires que
l'on place en privé dans le corps de la classe pour factoriser un peu de
code.

dans le deuxieme cas, j'aurais mis le add(label) dans creerLabel(), c'est
le genre de macro-instructions que l'on crée, pour alléger le code du
constructeur par exemple.

--
Dominique

remplacer nospam par com dans mon adresse pour m'écrire

Avatar
Kupee
Dominique Marie wrote:
dans le premier cas static s'impose car la méthode ne dépend en rien d'une
quelconque instance. C'est typiquement le cas de méthodes utilitaires que
l'on place en privé dans le corps de la classe pour factoriser un peu de
code.

dans le deuxieme cas, j'aurais mis le add(label) dans creerLabel(), c'est
le genre de macro-instructions que l'on crée, pour alléger le code du
constructeur par exemple.


Enfin dans ce cas ca reste a peu près la meme chose, c'est un peu comme
le bon chasseur et le mauvais chasseur non ?

1 2 3