APIWatch sera développé en langage Java pour bénéficier des avantages suivants :
Maven a été retenu pour gérer l’intégration de APIWatch. Maven est un outil de production de projets logiciels Java comparable au système Make sous UNIX. Maven utilise un paradigme connu sous le nom de Project Object Model (POM) afin de décrire un projet logiciel, ses dépendances avec des modules externes et l’ordre à suivre pour sa production. Il est livré avec un grand nombre de tâches pré-définies, comme la compilation de code Java ou encore sa modularisation.
Pour l’analyse de code source, APIWatch s’appuiera sur ANTLR. ANTLR est un successeur des outils Lex et YACC écrit en Java. Il est distribué sous la licence BSD. Il se base sur l’écriture de grammaires décrivant un langage de programmation. Il utilise ensuite ces grammaires pour générer le code source nécessaire à l’analyse de ce langage. Plus de détails seront donnés sur le mécanisme d’analyse de code source – avec ou sans ANTLR – dans le paragraphe 3.3.3.
L’interface web de APIWatch se basera sur le standard javax.servlet. Ceci permettra un déploiement aisé dans tous les environnements qui supportent ce standard (Apache Tomcat, Jetty Server, JBoss, IBM Websphere, etc.).
Afin de respecter une architecture du type « Modèle-Vue-Contrôleur », la génération des pages HTML se fera grâce au moteur de templates Apache Velocity.
Il a été jugé préférable de découpler au maximum la communication entre APIWatch et le système de gestion de bases de données pour permettre notamment de changer de mécanisme de stockage si nécessaire. Aussi, cela nous affranchit d’écrire les requêtes dans le langage propriétaire dudit système. On a donc choisi d’utiliser un ORM qui permet d’avoir une couche d’abstraction entre le langage de programmation et la base de données sous-jacente. Pour rester cohérent avec les considérations mentionnées au début du chapitre 3.3, un ORM le plus simple et léger possible a été choisi : ORMLite. Il est écrit en Java et supporte le standard JDBC ce qui le rend compatible avec la plupart des moteurs de base de données.