Forum Programmation.web php vs jsp?

Posté par  .
Étiquettes : aucune
0
5
déc.
2006
Bonjour,
etant moi meme webmaster a mes heures, je me demandais quelle difference y avait-il a choisir d'implementer du php ou des jsp.

En effet, php suffit deja a un grand nombre d'applications (pour ne pas dire toutes), et je vois mal ce que jsp apporte de plus ou de different par rapport a php (si ce n'est la necessite de compiler le script)

Pourriez vous m'eclairer sur la question ?

Je vous en remercie d'avance
  • # Quelle place pour les pages web ?

    Posté par  . Évalué à 5.

    Pour moi, mais ça n'est que mon avis, PHP et JSP ne sont pas vraiment destinés aux mêmes usages.

    D'un côté, je vois PHP comme un langage décent pour des projets essentiellement centrés sur les pages web. Il est pratique pour cette tâche particulière, et propose ce qu'il faut d'API pour s'en tirer autour (accès à une BDD, etc.).

    D'un autre côté, je ne vois pas JSP comme l'élément central de quoi que ce soit. C'est juste un machin annexe pour des projets JEE, celui qui sert à faire l'interface web quand on veut en faire une. Mais le centre, c'est plutôt une logique métier, ou je ne sais quel autre concept fumeux de SSII.

    La vrai question finalement, ça n'est pas de choisir entre PHP et JSP pour tes pages, mais de comprendre si elles sont, ou non, le centre de ton projet :
    - si depuis le début tu penses ton projet par et pour un site web, il est plus que probable que PHP fera l'affaire.
    - si par contre tu ne vois tes pages web que comme une interface à ton projet, alors c'est vraisemblablement qu'il te faut un langage et un framework plus costaud derrière. Et là ça peut valoir le coup de te pencher sur JEE, et donc JSP.

    Bon maintenant, tout ça reste à la fois flou et subjectif (je n'aborde volontairement pas, entre autres, les considérations syntaxiques), et donc très discutable. Je ne serais pas surpris qu'on trouve des blogs en JSP, et des ERP en PHP...
    • [^] # Re: Quelle place pour les pages web ?

      Posté par  . Évalué à 2.

      Je suis tout à fait d'accord avec tgl : site Web "dynamique" versus application avec interface Web.
      • [^] # Re: Quelle place pour les pages web ?

        Posté par  . Évalué à 1.

        Pour dire les choses brutalement, JSP c'est permetre d'utiliser du Java dans du HTML, plus ou moins proprement (utilisation de taglibs, ou pas etc.)
        Ou plus exactement c'est une manière de générer du HTML à partir de Java.

        A la limite on peut comparer Java et PHP, mais JSP et PHP, je ne vois pas trop.

        Si tu veux mon avis, PHP c'est un peu le Perl des langage web:
        facile à mettre en oeuvre en apparence, mais ça devient vite inmaintenable, à moins d'utiliser un framework au dessus de PHP, mais je pense qu'il y a mieux.

        Le Java c'est plutôt le contraire: super lourd à mettre en oeuvre pour les applis web, par contre on a tout ce qu'il faut pour développer du code maintenable (même si certains développeurs arrivent à écrire des choses abominable, ms je dirais, c'est quand même moins pire qu'en PHP)

        Pour moi, le plus agréable à utiliser sont des choses du genre
        http://www.djangoproject.com/
        ou bien http://www.turbogears.org/
        Python me semble le language le plus adapté pour le développement web.

        Je mets pas rails car il n'a pas besoin de pub ;)
        • [^] # Re: Quelle place pour les pages web ?

          Posté par  . Évalué à 2.

          Si tu veux mon avis, PHP c'est un peu le Perl des langage web:
          facile à mettre en oeuvre en apparence, mais ça devient vite inmaintenable
          cela dépend beaucoup du développeur, quelque soit le langage si le développeur n'est pas foutu d'écrire du code propre cela ne risque pas d'être maintenable.


          * design développer en séparant page web et fonctions (utilisation des include) éviter de mettre toutes les classes dans un seul fichier...

          * avoir une bonne doc technique : utilisation de doxygen ou autre pour éviter de refaire 5 fois la même fonction

          * Commenter (en particulier les fonctions, leur utilisation et argument)

          * variables et fonctions qui donne une idée de ce qu'elles sont, éviter les variables $a, $b sauf si c'est des compteurs de boucle ...

          Et la liste n'est pas terminée :-)
          • [^] # Re: Quelle place pour les pages web ?

            Posté par  . Évalué à 1.

            Je suis d'accord avec tout ce que tu dis,
            mais tu aura du mal à me faire croire que PHP est un "bon language"
            • [^] # Re: Quelle place pour les pages web ?

              Posté par  . Évalué à 2.

              Tout dépend de ta définition de bon et par là même de tes goûts :-)

              Tu préféres le typage fort ou faible, l'objet ou le procédurale, la manière dont les blocs sont délimités...

              Tu pourras difficilement croire que php n'est pas un "bon langage ", il est bien adapté aux interfaces webs.

              Juste par curiosité, peux-tu me citer un "bon langage" ?
              • [^] # Re: Quelle place pour les pages web ?

                Posté par  . Évalué à 2.

                Effectivement c'est très personnel et ça dépend des gouts, mais tu ne m'enlèvera pas de l'idée que certains languages ne facilitent pas la maintenabilité.

                Pour moi font partie des "bon langage":
                - Python pour la vie de tous les jours on ne se prends pas la tête avec ;)
                - Haskell et Ocaml pour "s'amuser" et apprendre (là on peut se prendre la tête;)
                - Smalltalk même si c'est mort, c'est avec ça que j'ai saisi ce que c'était que la programmation objet
                - Ruby: Smalltalk en moins bien, mais vivant ;)
                - Java: c'est pas mon préféré, mais ça passe encore

                Les mauvais langage:
                - Perl: syntaxe et sémantique super compliquée
                - Shell: j'aime pas c'est tout
                - PHP
                - VB (facile;)
                - C sauf pour a des fin d'optimisation, ou pour gérer le bas niveau.
                - C++ : inutilement compliqué
        • [^] # Re: Quelle place pour les pages web ?

          Posté par  . Évalué à 2.

          JSP est un lagage de templates comparable à ca
          http://www.djangoproject.com/documentation/templates/

          Ces projets reprennent tous les mêmes concepts.
          Langage de templates, outils de mapping, ....

          La seule différence avec JEE c'est le "paradigme" convention over configuration ou comment remettre au goût du jour les paramètres en dur.

          J2EE externalise tout ce qui est paramètrable dans des fichers de configuration là ou RoR et ses clones imposent leurs conventions.
          Ca a l'avantage d'être plus rapide à mettre en oeuvre mais c'est aussi moin evolutif

          De plus JEE permet de faire du traitement réparti assez naturellemnent et soutient donc la mise en place d'architectures multi-tiers. En résumé on appelle un service dans une page web et le traitement ne sera pas effectué sur le serveur Web mais délégué à un autre serveur (noeud)qui implémente ce service par appel de méthode distant. (RMI, Corba,.. équivalent du RPC en objet)
          Cela permet de mieux absorber la charge car ce même service peut être réparti sur plusieurs noeuds.C'est là qu'interviennenet les serveurs d'applications

          Bien entendu cette architecture est plus lourde qu'une architecture 3 tiers (client - serveur web - base de données) et c'est pourquoi il est mis en place dans les entreprises et pas chez les particuliers.

          La question à se poser pour choisir une techno est donc plutôt: est-ce que je veux créer un petit site perso ou je souhaite créer une application robuste qui demain sera peut être très sollicitée.
          • [^] # Re: Quelle place pour les pages web ?

            Posté par  . Évalué à 2.

            Concernant les paramêtre en dur, c'est bien joué, on à l'impression que la configuration est épérpillée partout dans le code, or c'est faux.

            Ces frameworks reposent sur des langage interprètés, on a donc pas la nécessité d'externaliser la configuration pour éviter la recompilation.
            Pourquoi utiliser un autre langage pour la configuration (XML par exmple), si on en a tout simplement pas besoin?

            Par contre là ou je suis d'accord, c'est que RoR est un peu trop "Convention", c'est pourquoi je préfère Turbogears par exemple, qui utilise moins de "magie"

            Sinon JEE c'est bien, mais c'est pas parqu'on est en entreprise qu'on est obligé de l'utiliser. J'ai souvent vu des appli ou on mettait derrière une archi répartie, avec load balancing, replication des noeuds et tout, alors qu'un trois tiers à base de Python ou Ruby aurait largement suffit.
            Ceci juste parque les gens qui décident ont l'habitude de toujours faire "classique". Ce qui aboutit à une complexité qui n'est pas nécessaire, à tous les niveau: développement, test, integration, production.

            JEE apporte bcp de possibilité dont on a généralement que faire, et peu de gens peuvent prétendre les maitriser, dans la pratique, bcp de developpeurs rament et bricolent. Je suis plutôt pour des solution plus simples quand elles sont suffisante: encore faut-il se poser la question avant d'imposer une architecture pour un projet.
            • [^] # Re: Quelle place pour les pages web ?

              Posté par  . Évalué à 3.


              Pourquoi utiliser un autre langage pour la configuration (XML par exmple), si on en a tout simplement pas besoin?


              Ce qu'il faut surtout plus qu'un langage interprèté c'est l'introspection. Grâce à ca on peut parfaitement charger dynamiquement la classe qui correspond aux paramètrage et cette approche commence à emerger y compris dan sJEE.

              Sinon tu peux aussi joindre le meilleur des 2 mondes à savoir la plateforme JEE avec un langage dynamique et le paradigme "convention" j'ai nommé:
              Groovy On Rails dont le chef de projet est un petit gars de chez nous
              http://grails.codehaus.org/


              Sinon JEE c'est bien, mais c'est pas parqu'on est en entreprise qu'on est obligé de l'utiliser. J'ai souvent vu des appli ou on mettait derrière une archi répartie, avec load balancing, replication des noeuds et tout, alors qu'un trois tiers à base de Python ou Ruby aurait largement suffit.
              Ceci juste parque les gens qui décident ont l'habitude de toujours faire "classique". Ce qui aboutit à une complexité qui n'est pas nécessaire, à tous les niveau: développement, test, integration, production.

              Tu peux parfaitement fiare une appli 3 tiers avec JEE et la fiare evoluer vers un répartie. Ce qui refroidit les daicideurs c'est d'être obligé de de démarrer avec une techno et d'être obligé d'en changer parce que le besoin
              evolue et que l'appli devient plus sollicitée.
              Les daicideurs n'aiment pas devoir faire des choix définitifs.
              Ca me rappelle le projet Nuxeo CPS qui passe de Zope à JEE. Eux aussi pensaient que Zope répondait à leur besoin pour des PME et le succès grandissant ils ont été contraint de revoir tout leur produit.
        • [^] # Re: Quelle place pour les pages web ?

          Posté par  . Évalué à 1.

          non desolé , le meilleur langage pour le web est ruby , loin devant python :D
          avec ca : http://www.rubyonrails.org/
          j'ai deja utilisé TurboGears et django avant , je suis passé a Ruby et Rails ... Huhu ca change !
  • # tentative d'explication

    Posté par  . Évalué à 3.

    Avec des pages PHP tu peux écrire une application Web complète en mélangenat les traitements et l'affichage.

    Pour écrire une application Web en Java, il existe une API: les servlets. Pour simplifier les servlets s'apparentent aux CGI, c'est à dire que tu récupères les infos des requête HTTP dans ton programme java (thread), tu effectues tes traitements et tu écris dans la sortie standard la page html que tu renvoies en formatant avec des commandes java (comme le printf en C).
    Ca donne des trucs du style
    out.println("Titre")
    Ca devient vite penible à maintenir.
    Avec les JSP tu ecris la page html telle que tu veux la renvoyer et tu y insères des balises spéciales qui contiennent le code java pour effectuer tes traitements dynamiques (appel de methodes sur des objets distribués, requêtes Sql => déconseillé dasn une architecture evolutive). Tu peux faire une analogie avec les balises Javascript dans une page HTML sauf que le code est en java et que ca s'exécute coté serveur. La page JSP est digérée et traduite en servlet. Toutes les balises html sont en quelque sorte remplacées par des out.println.

    Ceci présente l'avantage de séparer la logique de présentation de la logique applicative (les traitements peuvent être réutilisés si la présentation change). Pour des besoins simples ceci est plus lourd mais aussi plus évolutif.
  • # en resume

    Posté par  . Évalué à 1.

    donc pour resumer un peu tous les avis:
    -pour un petit site perso = > php
    -pour une application avec interface web qui sera beaucoup sollicitee = > jsp

    je vous remercie tous pour vos commentaires instructifs.

    Bonne journee a tous ;-)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.