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.
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).
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.
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 :
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.
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.
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.