IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langages de programmation Discussion :

C vs PHP vs JAVA d'un point de vue réseau


Sujet :

Langages de programmation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 16
    Par défaut C vs PHP vs JAVA d'un point de vue réseau
    Bonjour,

    J'étudie présentement pour une évaluation à venir; je voudrais connaître les avantages de chacun de ces languages : C VS PHP VS JAVA.
    Je parle des avantages du point de vu réseau bien sûr (Interface avec connection aux bases de données).

    Selon moi les avantages du PHP c'est son coût qui est nul et sa facilité de s'intégrer aux pages HTML.

    En C l'avantage c'est la portabilité entre systèmes Linux et Windows.

    Pour ce qui est du JAVA je ne vois pas vraiment d'avantage.

    Merci pour votre aide à ma réflexion

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Le java est beaucoup plus portable que le C, puisqu'il marche partout où il y a une JVM.
    Après pour les performances, les gens sont divisés... Deux écoles s'affrontent, disant que l'un est plus performant que l'autre...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Le java est beaucoup plus portable que le C, puisqu'il marche partout où il y a une JVM.
    Après pour les performances, les gens sont divisés... Deux écoles s'affrontent, disant que l'un est plus performant que l'autre...
    En fait, si on utilise les sockets en C comme un barbare (c'est à dire en utilisant uniquement des appels du type : send, recv qui font directement appel à des appels systèmes), ça va forcement être ralenti (surtout si c'est pour lire 2 caractères à chaque fois)

    En Java, on couple les sockets avec des BufferedInput/OutputStream en général pour bufferiser les entrées (on lit par exemple 5000 caractères d'un coup et au prochain read on lit directement dans le buffer) et les sorties. Ceci de manière totalement transparente.

    Pour le réseau en C classique (sous UNIX avec les sys/socket.h etc. et sous Windows avec les win2sock), il faut en général recoder une couche au dessus pour imiter ce type de fonctionnalités.


    Après, le reste a déjà été dit.

  4. #4
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Le java est beaucoup plus portable que le C, puisqu'il marche partout où il y a une JVM.

    C/C++ sont beaucoup plus portables que le Java... puisqu'en codant proprement et en utilisant un compilateur respectueux des normes, on pourra compiler vers bien plus de plate-formes, et donc faire fonctionner son programme là où on attendrait encore une JVM

    morale de l'histoire :
    il aurait mieux valu utiliser "Java permet une portabilité sans recompilation", et non "Java est plus portable que le C (ou le C++)"

    Citation Envoyé par millie Voir le message
    En fait, si on utilise les sockets en C comme un barbare (c'est à dire en utilisant uniquement des appels du type : send, recv qui font directement appel à des appels systèmes), ça va forcement être ralenti (surtout si c'est pour lire 2 caractères à chaque fois)

    En Java, on couple les sockets avec des BufferedInput/OutputStream en général pour bufferiser les entrées (on lit par exemple 5000 caractères d'un coup et au prochain read on lit directement dans le buffer) et les sorties. Ceci de manière totalement transparente.

    Pour le réseau en C classique (sous UNIX avec les sys/socket.h etc. et sous Windows avec les win2sock), il faut en général recoder une couche au dessus pour imiter ce type de fonctionnalités.
    pas vraiment d'accord.
    sans avoir à se reconstruire une bib, passer par des FILE* pour les accès aux sockets permet d'éviter ce problème... pourquoi toujours partir sur l'hypothèse que les langages bas niveau oblige systématiquement à tout reconstruire
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  5. #5
    Expert confirmé

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Par défaut
    Citation Envoyé par gorgonite Voir le message
    C/C++ sont beaucoup plus portables que le Java... puisqu'en codant proprement et en utilisant un compilateur respectueux des normes, on pourra compiler vers bien plus de plate-formes, et donc faire fonctionner son programme là où on attendrait encore une JVM
    Le problème est là, il existe trop de compilateur C et C++ et dont certains ne sont pas entièrement aux normes, alors que le Java lui peut importe le compilateur que tu utilise ça marchera et en plus tu le compile une fois et c'est tout ce qui est un énorme avantage Et puis cela demande plus de temps au développeur de faire un code entièrement portable en C que en Java. Voir les sockets par exemple comme l'a si bien dit millie.

    Citation Envoyé par gorgonite Voir le message
    morale de l'histoire :
    il aurait mieux valu utiliser "Java permet une portabilité sans recompilation", et non "Java est plus portable que le C (ou le C++)"
    Oui et non je suis un peu mitigé sur ce point de vue car pour moi Java est tout ce qu'il y a de portable, le C aussi mais il est soumis à trop de condition.

    Citation Envoyé par gorgonite Voir le message
    sans avoir à se reconstruire une bib, passer par des FILE* pour les accès aux sockets permet d'éviter ce problème... pourquoi toujours partir sur l'hypothèse que les langages bas niveau oblige systématiquement à tout reconstruire
    Entièrement d'accord, même si il est vrai que le C a été inventé pour justement tout reconstruire car à la base c'étais pour faire un système d'exploitation.

  6. #6
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Citation Envoyé par snake264 Voir le message
    Le problème est là, il existe trop de compilateur C et C++ et dont certains ne sont pas entièrement aux normes,
    Si tu prends les plus populaires il n'y a pas de soucis, en C++ il peut y avoir des différences mais si tu y es confronté c'est déjà que tu sais ce que tu fais.

    Citation Envoyé par snake264 Voir le message
    alors que le Java lui peut importe le compilateur que tu utilise ça marchera
    Mais bien sûr... T'as déjà essayé gcj ?

  7. #7
    Expert confirmé

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Par défaut
    Citation Envoyé par gege2061 Voir le message
    Si tu prends les plus populaires il n'y a pas de soucis, en C++ il peut y avoir des différences mais si tu y es confronté c'est déjà que tu sais ce que tu fais.
    Je suis bien d'accord mais ce que je voulais dire c'est que surtout en C si tu veux utiliser la norme C99 avec gcc tu aura bien du mal car cette norme est encore très loin d'y être entièrement incorporée.

    Citation Envoyé par gege2061 Voir le message
    Mais bien sûr... T'as déjà essayé gcj ?
    A non je n'est jamais essayé. En quoi pose t-il problème ?

  8. #8
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Citation Envoyé par gorgonite Voir le message

    pas vraiment d'accord.
    sans avoir à se reconstruire une bib, passer par des FILE* pour les accès aux sockets permet d'éviter ce problème... pourquoi toujours partir sur l'hypothèse que les langages bas niveau oblige systématiquement à tout reconstruire

    Ca marche FILE* avec les SOCKET de windows ?

  9. #9
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Par défaut
    Citation Envoyé par millie Voir le message
    Ca marche FILE* avec les SOCKET de windows ?
    sans doute... un HANDLE n'est pas si différent d'un descripteur de fichier completé

    un exemple :
    http://web.mit.edu/Source/third/perl/win32/win32sck.c
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  10. #10
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Citation Envoyé par gorgonite Voir le message
    sans doute... un HANDLE n'est pas si différent d'un descripteur de fichier completé

    un exemple :
    http://web.mit.edu/Source/third/perl/win32/win32sck.c
    Effectivement, on dirait qu'on peut Donc même en utilisant un FILE*, il faut recoder un truc pour simplifier l'utilisation des sockets

  11. #11
    Membre émérite
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Par défaut
    Pour le réseau, je dirais que le C n'est pas le meilleur choix. Java est (beaucoup) plus simple dans ce domaine.
    Quant à la portabilité, elle n'est pas si significative en C concernant les sockets.
    Bref, le Java est le meilleur choix à mon avis. Le PHP pourquoi pas... tout dépend du projet exact que tu souhaites réaliser.

    Nas'

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 16
    Par défaut
    Le java est beaucoup plus portable que le C
    Humm vraiment ?? Je comprend pas, le c peut s'éxecuter sans aucune machine virtuelle donc c'est beaucoup plus portable que JAVA non ?

  13. #13
    Membre émérite
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Par défaut
    Citation Envoyé par deaven
    Le java est beaucoup plus portable que le C
    Humm vraiment ?? Je comprend pas, le c peut s'éxecuter sans aucune machine virtuelle donc c'est beaucoup plus portable que JAVA non ?
    Oui, si tu recompiles.... Mais du Java, ça ne se compile pas
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  14. #14
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    De plus, seul le C standard peut être qualifié de portable... Et encore... (voir fonction system())...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  15. #15
    Membre émérite
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Par défaut
    Le point de vue du forum C sera forcément biaisé..
    Pourtant, on a prouvé le contraire dans ce post. Personne n'a défendu le C

    Nas'

  16. #16
    Membre émérite Avatar de reggae
    Profil pro
    Inscrit en
    Août 2005
    Messages
    773
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 773
    Par défaut
    .Net c'est pas mal non plus il parraît... Par contre on a besoin d'une machine virtuelle

  17. #17
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Nasky
    Le point de vue du forum C sera forcément biaisé..
    Pourtant, on a prouvé le contraire dans ce post. Personne n'a défendu le C
    A l'évidence, la question du réseau dépend du système, pas du langage. Aucun langage n'a de gestion de réseau integrée. Certains ont des sur-couches plus ou moins faciles à utiliser. Ca existe aussi en C. Simplement, c'est une bibliothèque tierce commme un des sous-ensembles de GTK+, par exemple...

    Il y en a d'autres, et si ça manque, on peut le faire facilement...

  18. #18
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    Quand tu parles de réseau, de quelle couche (transport, réeseau, liasion physique) parles-tu?

    Parce que java en standard n'a des facilités que pour que la couche transport. Si tu as besoin des couches plus profondes (réseau --> physique), je te conseillerais d'utiliser C.

  19. #19
    Membre émérite Avatar de trattos
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 000
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 000
    Par défaut
    D'un point de vue réseau je ferai intervenir Perl aussi!

  20. #20
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Tout à fait, mais tout dépend de ce que tu entends par "application réseau"... Parce que la présence de PHP me donne à penser que tu ne t'intéresse qu'aux applications qui utilisent HTTP, alors que C n'est absolument pas intéressant dans ce cas. Maintenant si on parle d'une architecture client-serveur classique, PHP est un choix moins intéressant (qui ne concerne qu'une partie de l'implémentation), C devient viable (bien que probablement pas des plus facile à prendre en main dans ce cas), Java devient le leader du marché malgré sa lourdeur et Perl est une alternative très crédible (que je favoriserais au moins pour tous les développements légers à moyens, le Java étant peut-être à privilégier au-delà).

    --
    Jedaï

Discussions similaires

  1. Que choisir : PHP versus Java ?
    Par Sniper37 dans le forum Général Conception Web
    Réponses: 164
    Dernier message: 28/04/2009, 16h50
  2. [Tomcat]échange de session entre php et java
    Par benwa dans le forum Tomcat et TomEE
    Réponses: 18
    Dernier message: 05/06/2007, 17h01
  3. [Applet] Comment envoyer une variable php au java?
    Par abstractor77 dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 09/03/2006, 10h18
  4. PHP ou Java pour un site associatif ?
    Par Flashball dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 02/03/2006, 19h56
  5. [JSP/Tomcat] Intégration de PHP dans Java
    Par milhouz_deglingos dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 17/08/2005, 12h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo