PHP 5 ou Java EE (J2EE) ?

Confrontons sommairement Java Entreprise (Java EE : Enterprise Edition - anciennement nommé J2EE) à PHP 5 qui inclue la programmation orientée objets.

Quel environnement ?

Tous les deux tournent sur des multi-plateformes (Windows, Linux, Mac) en 32 et/ou 64 bit.

Librairie(s)

Librairie riche et extensible ?

Java EE

Java ne fournit de nombreuses méthodes, mais sa version EE avec le package "javax" étends véritablement ses possibilités. Ensuite, en incluant n'importe qu'elle librairie supplémentaire, on additionne les classes et leurs méthodes.

En plus du System.out.println, on retrouve Logger permettant de logguer, et c'est le serveur qui s'occupe de choisir la méthode d'écriture du log (fichier, mail, ... et son système de rotation : tous les X jours, ou taille de fichier ...)

PHP

Nativement, PHP est fournit avec de nombreuses fonctions, on peut activer des extensions incluses (si compilés avec). On peut également ajouter des extensions PHP tels que les PECL (PHP Extension Community Library). Ensuite, à tout moment on ajoute les librairies PHP que l'on souhaite avec un simple include/require.

Librairie documentée ?

Java EE

Les documentations Java, n'ont pas vocation à être verbeuse (ni en Français et encore moins illustrées d'exemples), celle de EE, pas forcément mieux. Heureusement, les Java DOC sont là (correctement explicites ou non), et pour les déploiements Java EE, si vous utilisez les plus gros projets de libraires (Hibernates, ...), eux sont généralement suffisamment documentés (toujours en anglais).

La communauté Java parle Anglais ! Bien que l'on trouve quelques astuces en Français et l’excellent travail de Jean-Michel DOUDOUX : Développons en Java (qui aborde la quasi-totalité de Java avec des généralités tout comme des notions avancées).

PHP

La documentation de référence de PHP est suffisamment illustrée, francisée et à jour, qu'un simple copié collé vous permet souvent d'avancer dans votre code.

(Im)possibilités et (dés)avantages des librairies

Java EE
  • +
  • le typage des données
  • surcharge possible
  • héritage multiple possible : le multiple "extends"
  • datasource (pool de connexion à votre base de donnée, toujours connecté, donc pas de perte de temps à établir la connexion)
  • les ORM natif (EJB3 JPA avec Hibernate par exemple)
  • déploiement (pouvant être pris à chaud - auto deploy) avec un seul fichier .war
  • avec un IDE tel les erreurs sont immédiatement détectées
  • -
  • pas de procédural, tout est objet
  • la gestion des variables GET/POST de type tableaux (à 1 ou plusieurs dimensions, par exemple $_POST[]['language'] = "PHP")
  • pas d'hébergeur à bas coût
  • pas de paramètre nommé dans les requêtes JDBC
PHP
  • +
  • procédural et/ou objet, tout est permis pour coder
  • la gestion facile des collections dans un tableaux
  • l'accessibilité des variables globales (même au sein d'une fonction) => pouvant toute fois permettre de ne plus rien comprendre à son code
  • les fonctions prenant de 0 à n arguments
  • la gestion des variables GET/POST de type tableaux (à 1 ou plusieurs dimensions, par exemple $_POST[]['language'] = "PHP")
  • pas besoin de typer les données, et auto gestion du null/vide => pouvant provoquer des effet de bords à cause de l'auto-casting
  • le debug visuel facile avec var_dump
  • le nombre d'hébergeur low-cost
  • connecteur (abstrait) base de données : PDO permet d'utiliser les paramètres nommés, et divers modes de FETCH simplifiant la vie
  • -
  • pas de surchage : impossible de faire la même fonction avec des types ou nombre différents, il faut passer par des valeurs par défaut
  • héritage multiple est impossible en PHP : pas possibilité d'étendre (extends) une classe sur plusieurs niveaux
  • pas de fork/thread
  • pas de scheduler/cron (obligé de passer par le cron système : attention aux taches non terminées que vous relancez ...)
  • le debug propre dans des logs (et non pas en sortie écran)

Quels IDE ?

PHP 5 ou Java EE (J2EE) ? Conclusion !

Essayez (sous Linux) de générer un document Excel qui inclue un case à cocher "checkbox", et vous choisirez par vous même !

Ressources

Oracle

PHP

Wikipédia

Jean-Michel DOUDOUX

Developpez

Autre

Java EE
  • Java EE par Pierre-Yves Gibello (Mise à jour : Septembre 2011)
PHP