Notre savoir

Langage de programmation : Java

Java est un langage de programmation orienté objet et un environnement d'exécution, développé par Sun Microsystems. Il fut présenté officiellement en 1995. Le Java était à la base un langage pour Internet, pour pouvoir rendre plus dynamiques les pages (tout comme le JavaScript aujourd'hui). Mais le Java a beaucoup évolué et est devenu un langage de programmation très puissant permettant de presque tout faire. Java est aujourd'hui officiellement supporté par Oracle, mais certaines entreprises comme IBM font beaucoup pour Java.

Pourquoi Java ?

  • Langage et environnement de développement open source (aucun coût de licence)
  • Langage et environnement de développement multi-plateformes ( Linux, Mac, Unix, Windows, . . .)
  • Langage puissant, orienté objet et de haut niveau
  • Forte communauté et nombreuses librairies tierces
  • Nombreuses implémentations, JVM et compilateurs, libres ou non
  • Supporté par de nombreuses entreprises telles que Oracle ou encore IBM et des projets comme Apache

Principaux Framework Java

En programmation informatique, un framework est un kit de composants logiciels structurels, qui servent à créer les fondations ainsi que les grandes lignes de tout ou d'une partie d'un logiciel (architecture).

Serveur web : Tomcat

Apache Tomcat est un conteneur libre de servlet Java 2 Enterprise Edition. Issu du projet Jakarta, Tomcat est désormais un projet principal de la fondation Apache. Tomcat implémente les spécifications des servlets et des JSP de Sun Microsystems. Il inclut des outils pour la configuration et la gestion, mais peut également être configuré en éditant des fichiers de configuration XML. Comme Tomcat inclut un serveur HTTP interne, il est aussi considéré comme un serveur HTTP.

Pourquoi Tomcat ?

  • Serveur Web open source (aucun coût de licence)
  • Serveur Web multi-plateforme ( Linux, Mac, Unix, Windows, . . .)
  • Possibilité de «load balancing» (lissage réseaux)

Tomcat permet un équilibrage de charge (parfois appelé répartition de charge ou en anglais load balancing). Cela consiste à distribuer une tâche à un pool de machines ou de périphériques afin :

  • de lisser le trafic réseau, c'est-à-dire de répartir la charge globale vers différents équipements;
  • de s'assurer de la disponibilité des équipements, en n'envoyant des données qu'aux équipements en mesure de répondre, voire à ceux offrant le meilleur temps de réponse.

Les avantages du load balancing sont donc multiples et notamment une meilleur performance du service demandé: les requêtes sont réparties sur les différentes machines.

Base de donnée : PostgreSQL

PostgreSQL est un système de gestion de base de données relationnelle et objet (SGBDRO). C'est un outil libre disponible selon les termes d'une licence de type BSD. Ce système est concurrent d'autres systèmes de gestion de base de données, qu'ils soient libres (comme MySQL et Firebird), ou propriétaires (comme Oracle, Sybase, DB2 et Microsoft SQL Server). Comme les projets libres Apache et Linux, PostgreSQL n'est pas contrôlé par une seule entreprise, mais est fondé sur une communauté mondiale de développeurs et d'entreprises.

Pourquoi le SGBDRO PostgreSQL ?

  • Robuste, puissant et évolutif
  • Open source (aucun coût de licence)
  • Multi-plateforme (Linux, Windows, ...)
  • Nombreuses fonctionnalités (Gestion des transactions, des séquences, des expressions régulières, ...)

Architecture en couches

Les choix architecturaux d'une application sont décisifs dès lors qu'ils interviennent sur les performances, l'évolutivité, les temps de développement, et bien sûr les coûts. Les sages d'aujourd'hui prônent une séparation en différentes couches des applications, et parlent alors d'applications multi niveaux (n-tier applications).

Ces couches devant être indépendantes, dès que les spécifications fonctionnelles de chacune d'entre elles seront établies, leur développement pourra se faire en parallèle, et la maintenance de l'application n'en sera que plus aisée.

Les enjeux

  • Programmation par composant (et par interface)
  • Isolation des traitements et découplage des composants
  • Séparation des problématiques métier et techniques
  • Récupération des composants dépendants
  • Externalisation des problématiques techniques, configuration des composants (dans des composants génériques ou des frameworks techniques).

Les implications

  • Encapsulation et isolation des traitements
  • Possibilité tester unitairement les composants
  • Ré-utilisabilité
  • Maintenabilité
  • Évolutivité