Les librairies d'Apache Software Foundation

Baptiste Wicht

Apache Software Foundation propose une large gamme de librairies facilitant grandement la tâche du développeur Java.
Ce sont ces librairies que nous allons découvrir dans cet article.

- Titre : Les librairies d'Apache Software Foundation

- Auteur : Baptiste Wicht

- Parution : 7 mars 2007

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2009 Baptiste Wicht. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- Introduction

- II. Les librairies Java EE

- Apache Jakarta Commons FileUpload

- Apache Jakarta Commons HttpClient

- Apache Jakarta Commons EL

- Apache Jakarta Commons Jexl

- III. Les librairies IO

- Apache Jakarta Commons IO

- Apache Jakarta Commons Net

- Apache Jakarta Commons VFS

- Apache Jakarta POI

- IV. Les librairies XML

- Apache Jakarta Commons Betwixt

- Apache Jakarta Commons Digester

- Apache Jakarta Commons Jelly

- Apache Jakarta Commons SCXML

- Apache XML Commons Resolver

- Apache XML Security

- Apache XMLBeans

- Apache Xindice

- Apache Xerces2

- V. Les librairies réseau

- Apache Jakarta Commons Email

- Apache Mina

- VI. Les librairies pour les bases de données

- Apache Jakarta Commons DbUtils

- Commons DBCP

- Apache Torque

- Apache Lucene Java

- Apache Derby

- Apache Torque

- Apache Xindice

- VII. Les librairies pour la conception

- Apache Jakarta Commons Chain

- Apache Jakarta Commons Discovery

- VIII. Les librairies de manipulation d'objets

- Apache Jakarta Commons BeanUtils

- Apache Jakarta Commons JXPath

- Apache Jakarta Commons Pool

- Apache XMLBeans

- Apache Torque

- IX. Les librairies de simplificaction du langage

- Apache Jakarta Commons Collections

- Apache Jakarta Commons Lang

- Apache Jakarta Commons Math

- Apache Jakarta Commons Codec

- Apache Jakarta Commons Primitives

- Apache ORO

- Apache RegexP

- X. Libraries facilitant la mise en oeuvre d'une application

- Apache Jakarta Commons Configuration

- Apache Jakarta Commons Daemon

- Apache Jakarta Commons Launcher

- Apache Jakarta Commons Logging

- Apache Jakarta Commons Resources

- Apache Log4j

- Les autres librairies

- Apache Jakarta BCEL

- Apache Jakarta BSF

- Apache Jakarta Commons Attributes

- Apache Jakarta Commons CLI

- Apache Jakarta Commons Transactions

- Apache Jakarta Commons Validator

- Apache Jakarta JCS

- Apache Scout

- Apache Velocity

- Apache XML Graphics Commons

- Les frameworks

- Apache Jakarta MyFaces

- Apache Shale

- Apache Struts

- Apache Tapestry

- Conclusion

- Remerciements

- Liens

Introduction

Apache Software Foundation nous propose une gamme très intéressante de librairies qui peuvent grandement faciliter la tâche du développeur Java, surtout les Commons Librairies. Beaucoup de monde ne connaissent pas ces librairies, je vais donc vous les présenter.

II - Les librairies Java EE

Apache Jakarta Commons FileUpload

Site

Cette librairie permet d'ajouter facilement des fonctionnalités d'upload de fichiers à vos servlets et à vos applications web. Cela vous permet donc de récupérer des flux, de parser des requêtes HTTP d'upload et de récupérer des infos sur les fichiers uploadés. L'Api est très complète, vous avez accès à beaucoup d'options qui vous permettrons d'optimiser l'upload de fichiers.

Apache Jakarta Commons HttpClient

Site

Cette librairie permet d'accéder à toutes les possibilités de l'HTTP. Le package java.net permet de faire bien des choses avec Http, mais reste basique, on ne peut donc pas employer les dernières possibilités de ce protocole qui est le plus employé parmi tous les protocoles internet. HttpClient pallie à ce manque. Cette librairie est basé sur les derniers standards et permet d'accéder à toutes les méthodes HTTP (GET, POST, PUT, DELETE, OPTIONS, ...) et même HTTPS.

Apache Jakarta Commons EL

Site

EL est l'interpréteur d'expressions du langage JSP d'Apache. Elle permet de parser des expressions en langage JSP et de les évaluer.

Apache Jakarta Commons Jexl

Site

Jexl est une implémentation du langage d'expression JSTL. Cette librairie permet d'évaluer des chaînes de caractères (expressions) et de les exécuter en remplaçant certaines parties par des objets.

III - Les librairies IO

Apache Jakarta Commons IO

Site

Commons IO est une librairie contenant de nombreuses méthodes pour aider le développeur Java à utiliser pleinement les fonctionnalités IO. Elle fournit des classes statiques de méthode permettant de faciliter des actions communes, des filtres et de nouvelles implémentations de stream.

Apache Jakarta Commons Net

Site

Cette librairie facilite la gestion des protocoles réseaux tels que le FTP, le POP3, le NNTP, le SNTP et encore d'autres. Avec cette libraire vous allez pouvoir manipuler ces technologies avec simplicité et dans une approche objet et développer vos propres implémentations.

Apache Jakarta Commons VFS

Site

Cette librairie permet de gérer différents systèmes de fichiers de manière très simple. Vous pourrez donc accéder par exemple à des archives ZIP ou Jar, des fichiers d'un serveur HTTP et bien sûr au système de fichier local. Vous pourrez aussi effectuer des mises en cache d'informations sur le système de fichiers que vous traitez.

Apache Jakarta POI

Site

Cette librairie va vous permettre de créer et de lire depuis votre programme des fichiers Excel et Word. La gestion d'Excel est déjà très avancée et permet de faire beaucoup de choses, mais la gestion de Word est arrêtée, car plus de contributeur actuel.

IV - Les librairies XML

Apache Jakarta Commons Betwixt

Site

Cette librairie permet de mapper des JavaBeans dans des fichiers XML. Vous pouvez ainsi persister vos beans dans des fichiers de manière très simple, vous pouvez aussi personnaliser la manière dont seront mappés vos classes.

Apache Jakarta Commons Digester

Site

Cette librairie permet d'effectuer du mapping XML/Objet de manière très simple. Digester vous permet aussi de créer des objets à la volée lorsqu'un certain enchaînement de balises est repéré ou encore d'appeler des méthodes avec des paramètres venant des fichiers XML.

En savoir plus

Apache Jakarta Commons Jelly

Site

Jelly est un moteur de script basé sur le XML et Java. Elle utilise des taglibs un peu à la manière des JSP et peut aussi générer des interfaces graphiques swing au moyen d'un fichier XML.

Apache Jakarta Commons SCXML

Site

Cette librairie permet de générer des diagrammes d'états à partir d'un fichier xml au format spécifique (un fichier SCXML).

Apache XML Commons Resolver

Site

Cette librairie peut être utilisée avec toute une série de parseur XML pour résoudre plusieurs identifiants public ou système dans des URLs pour les utiliser dans votre application. Cet api supporte OASIS XML, OASIS TR9401 et XCatalog.

Apache XML Security

Site

Cette librairie vous permettra de faire des vérifications sur les signatures de fichiers XML ou encore des les encrypter de différentes manières.

Apache XMLBeans

Site

Cette librairie permet de faire du mapping XML/Objet. C'est à dire que vous pourrez manipuler des objets avec des beans Java.

Apache Xindice

Site

Xindice est une base de données en Java basé sur le support XML. Il vous permettra donc de stocker facilement des données XML.

Apache Xerces2

Site

Xerces2 est un parseur XML de la dernière génération du type Xerces d'Apache.

V - Les librairies réseau

Apache Jakarta Commons Email

Site

Cette librairie permet l'envoi d'email. Elle est bâtie sur l'api Javamail, dont elle simplifie l'utilisation de cette dernière. On peut l'utiliser pour envoyer des emails simples, des emails en HTML, des emails avec des attachements, et tout ceci de manière plus simple qu'avec Javamail, via des classes de plus haut niveau.

Apache Mina

Site

Cette librairie permet de simplifier le développement d'application réseau en mettant à disposition une abstraction des différents protocoles réseau. Elle est unifiée pour différentes types de protocoles de transport : TCP/IP, UDP/IP, pipe IN-VM et vous pouvez aussi implémenter votre propre protocole. Il contient une Api de bas niveau (ByteBuffer) et une de plus haut niveau (utilisation d'objet défini par l'utilisateur).

VI - Les librairies pour les bases de données

Apache Jakarta Commons DbUtils

Site

Cette librairie permet de grandement simplifier l'utilisation de JDBC. Elle permet en effet d'automatiser la récupération de données dans des Bean, plus besoin de se taper tous les setXXX à répétition. Elle permet aussi de charger et d'exécuter des requêtes SQL contenues dans un fichier properties. Elle permet aussi de fermer correctement la base de données sans s'occuper des exceptions.

Pour plus d'infos à ce sujet, vous pouvez lire ce tutoriel.

Commons DBCP

Site

Cette librairie permet de créer un pool de connexion JDBC. En effet, dans les programmes ou beaucoup d'utilisateurs travaillent en même, il est impossible de créer une connexion par utilisation, cela demandant trop de temps pour les créer toutes, on emploie donc un pool de connexion, chaque utilisateur qui aura besoin d'une connexion va donc aller chercher dans le pool une connexion et l'utiliser. Ainsi, on ouvre un nombre restreint de connexions et elles ne sont utilisées qu'en cas de requête et donc beaucoup moins longtemps inactives.

Apache Torque

Site

Cette librairie permet de faire du mapping relationnel avec une base de données. Cela veut donc dire que vous pouvez manipuler les données de votre base via des objets Java et non plus via des requêtes SQL. Ce qui facilite grandement le travail. Il utilise pour cela un schéma XML qui sert à faire le lien entre votre base de données et vos objets. On peut aussi utiliser ce schéma XML pour générer automatiquement la base de données.

Apache Lucene Java

Site

Cette librairie met à disposition un moteur de recherche très puissant pour votre application. Ainsi, vous pourrez facilement effectuer des recherches dans votre base de données. Vous pouvez aussi réaliser des recherches avec du texte.

Pour plus d'infos à ce sujet, vous pouvez lire ce tutoriel.

Apache Derby

Site

Derby n'est pas une librairie, mais j'ai quand même tenu à la mettre ici. C'est une base de données embarquée écrite entièrement en Java. C'est donc une base que vous pouvez joindre à votre projet et qui ne nécessite rien d'autre. Cette base de données peut aussi travailler en mode client-serveur. De plus, elle respecte les standards SQL, donc vous pouvez l'utiliser comme n'importe quelle base de données.

Apache Torque

Site

Torque est un outil de mapping objet/relationnel. C'est à dire que vous allez pouvoir manipuler les données d'une base de données sous forme d'objets Java, donc de manière bien plus intuitive qu'avec des ResultSet.

Apache Xindice

Site

Xindice est une base de données en Java basé sur le support XML. Il vous permettra donc de stocker facilement des données XML.

VII - Les librairies pour la conception

Apache Jakarta Commons Chain

Site

Cette librairie est une implémentation du pattern "Chain of responsibility" du Gang of Four. Ce pattern permet d'organiser l'exécution de processus complexes. Cette librairie va permettre de l'utiliser facilement et d'isoler au mieux les différentes responsabilités du programme. Elle se révèle donc très utile pour faciliter son utilisation.

Apache Jakarta Commons Discovery

Site

Cette librairie permet de simplifier le traitement avec des interfaces dans vos programmes Java. Elle permet de trouver des classes implémentant une interface donnée, de simplifier l'l'instanciation des classes en général ou encore de gérer plus facilement le singleton.

VIII - Les librairies de manipulation d'objets

Apache Jakarta Commons BeanUtils

Site

Cette librairie permet de manipuler de manières simples des JavaBean (classes de gettters/setters contenant des données, sans code métier). On a parfois besoin d'accéder à des variables d'un javabean de manière générique sans savoir quelles méthodes il va falloir appeler, on utilise donc pour cela l'introspection, mais cela peut se révéler complexe. BeanUtils nous permet donc de faciliter cela. Vous pourrez donc directement accéder aux valeurs de vos beans de manière très orienté objet et claire.

Apache Jakarta Commons JXPath

Site

Cette librairie fournit un simple interpréteur d'expression XPath que l'on peut utiliser sur des objets Java. XPath est un langage permettant de rechercher des noeuds dans un fichier XML au moyen d'une adresse, une sorte d'URL. Vous pourrez donc maintenant utiliser un tel système d'adressage pour effectuer des recherches dans une collection par exemple.

Apache Jakarta Commons Pool

Site

Cette librairie met à disposition de l'utilisateur un moyen simple de faire du pooling d'objets.

Apache XMLBeans

Site

Cette librairie permet de faire du mapping XML/Objet. C'est à dire que vous pourrez manipuler des objets avec des beans Java.

Apache Torque

Site

Torque est un outil de mapping objet/relationnel. C'est à dire que vous allez pouvoir manipuler les données d'une base de données sous forme d'objets Java, donc de manière bien plus intuitive qu'avec des ResultSet.

IX - Les librairies de simplificaction du langage

Apache Jakarta Commons Collections

Site

Cette très bonne librairie permet de faciliter grandement le travail avec les collections. Elle a été à l'origine développé pour pallier aux manques de la version 1.2 de Java, mais depuis certaines de ces fonctionnalités ne sont plus utiles, car implémentées dans Java. Mais il reste encore beaucoup de choses intéressantes. Elle nous propose notamment une map bidirectionnel (on peut accéder au clé comme au valeur par l'autre élément), des piles FIFO, des Bags (collections contenant un certain nombre de même éléments) et une Map iterable. Elle met aussi à disposition la classe CollectionUtils qui contient beaucoup de méthodes intéressantes pour travailler sur les collections; faire une intersection ou une union entre 2 collections, compter le nombre d'occurrence d'un objet dans une liste ou encore se passer des boucles pour quelque chose de plus orienté objet (un objet pour l'exécution qui sera exécuté à chaque itération, mais pas de boucle que l'on doit faire manuellement).

En savoir plus

Apache Jakarta Commons Lang

Site

Cette librairie permet de faciliter le travail avec les classe du package java.lang, notamment pour la gestion de chaînes de caractères.

Apache Jakarta Commons Math

Site

Cette librairie va permettre au développeur de pallier aux manques du package java.lang.math de l'api standard. Elle va notamment nous fournir des possibilités de calcul de factorielles, des tangentes inverses, des exponentionelles et bien entendu, la gestion des nombres complexes.

Apache Jakarta Commons Codec

Site

Cette libraire met à disposition du développeur une série de codeurs et de décodeurs pour différents formats tels que le base64, l'hexadécimal, le phonétique ou les Url. Vous pouvez aussi développer vos propres encodeurs et décodeurs.

Apache Jakarta Commons Primitives

Site

Cette librairie permet de gérer les types primitifs de manière plus orienté objet tout en restant performant et léger.

Apache ORO

Site

Cette librairie fournit une série de classes permettant de gérer des regex Perl5, des expressions régulières AWK-Like et des expressions Glob. Elle fournit aussi des classes utilitaires permettant de réaliser des substitutions de caractères, des séparations de chaînes ou encore des filtres sur des noms de fichier.

Apache RegexP

Site

Cette librairie fournit un puissant package de gestion d'expression régulière.

X - Libraries facilitant la mise en oeuvre d'une application

Apache Jakarta Commons Configuration

Site

Cette librairie met à disposition une interface générique pour la récupération de valeurs dans des fichiers de configuration de différents types. Vous pouvez charger des fichiers de configuration properties, des fichiers XML, des datasources JDBC ou encore JNDI.

En savoir plus

Apache Jakarta Commons Daemon

Site

Cette librairie permet à une application Java sur Win32 ou Unix d'interagir avec le système d'exploitation et de réagir en cas d'extinction de l'ordinateur pour que l'application puisse effectuer les tâches de fermeture. Cette librairie est faite de deux parties; la première, écrite en C, permet d'interagir avec le système et la deuxième, en java, permet d'indiquer que faire à l'application et de la tenir au courant.

Apache Jakarta Commons Launcher

Site

Cette librairie permet de lancer facilement d'autres applications Java depuis la nôtre. Elle facilite le traitement des erreurs, des paramètres, le passage d'arguments à la JVM et le passage de propriétés spéciales.

Apache Jakarta Commons Logging

Site

Il est très utile pour un programme de garder une trace de différentes informations, telles que les exceptions, les erreurs ou des informations sur l'avancée d'un processus. Or il existe plusieurs différentes manières de logger des informations, cette librairie est un pont entre les différentes techniques de logging existantes, ainsi si un jour vous voulez changez d'api, vous n'aurez pas à tout change, mais seulement la configuration de cette librairie.

En savoir plus

Apache Jakarta Commons Resources

Site

De plus en plus souvent, les programmes se doivent d'être localisés en plusieurs langues. Cette librairie qui se veut simple d'utilisation, permet de faciliter la localisation de vos programmes Java.

Apache Log4j

Site

Log4j est une librairie vous permettant de gérer les logs de votre application d'une manière très puissante. Vous pouvez notamment générer des logs avec un format réglé par un pattern, utiliser des fichiers de logs qui changent avec roulement et tout cela de manière très rapide.

En savoir plus

Les autres librairies

Apache Jakarta BCEL

Site

Cette libraire permet de manipuler des classes Java (.class) sous forme d'objet. Vous pouvez charger des classes existantes, les inspecter, les modifier et ensuite les réécrire dans la classe ou alors, vous pouvez aussi créer des nouvelles classes depuis rien. Une classe est donc représentée par un objet qui contient des variables, des méthodes et du bytecode.

Apache Jakarta BSF

Site

Ce framework permet d'utiliser des langages de script depuis Java et permet aux langages de script d'accéder aux objets java. C'est une sorte d'interface qui permet aux deux langages d'interagir. Elle permet de travailler avec Javascript, Python, NetRexx, Tcl et XSLT. Vous pouvez donc interagir avec des moteurs de scripts externes.

Apache Jakarta Commons Attributes

Site

Cette librairie permet au développeur Java d'utiliser des attributs de style C*/.Net dans leur code. Via des annotations, on peut donc ajouter des attributs aux paramètres d'une méthode, à sa valeur de retour ou aux paramètres d'un constructeur.

Apache Jakarta Commons CLI

Site

Cette librairie permet de faciliter la création d'un système en ligne de commande. On peut définir différentes commandes, avec des options et des parseurs pour récupérer la chaine et donner les bonnes informations à votre commande.

Apache Jakarta Commons Transactions

Site

Cette librairie permet de gérer la programmation transactionnelle en Java de manière simplifiée. Avec cette librairie, vous pourrez facilement utiliser des collections transactions, des accès transactionnels sur des fichiers ou encore des verrouillages de plusieurs niveaux.

Apache Jakarta Commons Validator

Site

Dans la plupart des projets, vous êtes amenés à devoir valider les valeurs qui vous arrivent des utilisateurs ou d'un fichier. Ce travail est souvent long et répétitif. Commons Validator va vous permettre d'effectuer plus rapidement ce travail. Cette librairie met à votre disposition une série de méthodes permettant de valider des champs de différents types.

Apache Jakarta JCS

Site

Cette librairie vous permettra de gérer un système de cache. Vous pourrez donc ajouter des objets dans le cache et les récupérer ensuite.

Apache Scout

Site

Apache Scout est une implémentation de la JSR 93 (JAXR).

Apache Velocity

Site

Apache Velocity est un moteur de template écrit en pur Java, facilement intégrable dans votre application.

Apache XML Graphics Commons

Site

C'est une librairie qui est constitué d'une série de composants réutilisables. Vous trouverez par exemple une librairie PDF, une librairie RTF ou encore des implémentations Graphics2D.

Les frameworks

Apache Jakarta MyFaces

Site

MyFaces est une implémentation open-source des JSF (Java Server Faces) qui mettent en oeuvre le pattern MVC pour des applications Java EE.

Apache Shale

Site

Shale est un framework web essentiellement basé sur la technologie JSF. Il peut aussi s'intégrer avec Spring.

Apache Struts

Site

Struts est un framework web très pratique pour aider les développeurs à avoir une bonne architecture MVC dans leur application. Le développeur pourra séparer clairement les différentes couches de son application pour une maintenance plus facile et une réadaptation plus rapide.

Apache Tapestry

Site

Tapestry est un framework permettant de développer de puissantes et complexes applications Web. Il permet de créer cela à partir de divers composants qui seront réutilisables tout au long de l'application.

Conclusion

En conclusion, nous pouvons dire que l'usage des ces librairies facilitent grandement la tâche du développeur et améliore sa productivité en diminuant ses temps de développement.
Je conseille donc à tous d'utiliser ces nombreuses librairies pour vos développements.

Remerciements

Personne pour le moment.

Liens

- Le site officiel d'Apache

- Les projets d'Apache