# Développer en Java/Forges et bibliothèques

En tant que développeur Java, vous devez savoir où vous fournir en bibliothèques.

## Le projet Apache

L'objectif du projet Apache est de délivrer des briques logicielles open-source développées de façon communautaire. Toutes ces briques sont mises à disposition selon la licence Apache. Il s'agit notamment de fournir des implémentations de JSR.

### Apache Commons

Apache Commons vise à étendre le JDK en fournissant la plupart du temps des lots de classes utilitaires regroupant des extraits de codes fréquemment utilisés.
Remarquons notamment :

#### BeanUtils

    Manipulation de JavaBeans ;

#### CLI

    Manipulation d'arguments passés en ligne de commande ;

#### Codec

    Différents algorithmes de codage (base64, URL…) ;

#### Collections

    Manipulation des collections ;

#### Daemon

    Intégration avec les services Windows ou les daemon UNIX. Il s'agit de permettre à une application Java censée fonctionner en permanence sur un système de s'intégrer à la gestion des services pour démarrer ou s'arrêter en même temps que l'OS ;

#### FileUpload

    Upload pour les applications Web basée sur Servlet.

#### I/O

    Manipulation des flux d'entrés/sorties ;

#### Logging

    Une API d'abstraction au dessus des différentes bibliothèques de journalisation ;

#### Math

    Mathématiques ;

#### Primitives

    Fournit notamment des implémentations des collections disponibles dans le JDK mais permettant de stocker des types primitifs ;

#### VFS

    Une API pour les système de fichiers virtuels (FTP, archives zip).

### Apache Lucene

Ce projet tourne autour des problématiques de recherche

### Apache Hadoop

Hadoop est un projet ombrelle spécialisé dans le calcul distribué.

### Apache extras

En partenariat avec Google Code, cette forge, dissociée de celle de la fondation Apache, vise à accueillir des projets liés aux projets Apache mais qui ne peuvent y être mêlé pour des raisons diverses. Par exemple, il peut s'agir de projets qui ne peuvent être sous licence Apache.

### Autres projets Apache

Les projets Apache sont nombreux et concernent différents domaines d'application :

#### Construction de projets

    Ant, Maven, BuildR, Ivy

#### Frameworks Web

    Struts, Tapestry, Turbine, Stripes, Wicket, Click

#### Bases de données

    Cassandra, Derby

#### Serveurs d'applications JEE et composants

    Tomcat, OpenEJB, OpenJPA

## JBoss
### Le serveur d'application WildFly (anciennement JBoss)

    parmi les serveurs d'application JEE les plus utilisés ;

### Hibernate

    solution de mapping objet-relationnel très plébiscitée

## CodeHaus

Codehaus n'héberge que des projets sous licence open-sources (Apache notamment). Avant d'être accueillis, chaque projet doit avoir une base de code solide. Codehaus héberge plusieurs projets autour de Java.

## Google

Java est un des langages utilisés chez Google qui propose certains de ses outils, notamment

### Google Web Toolkit

    Framework RIA pour le web. Les interfaces, écrites en Java sont compilées en JavaScript pour être interprétées par le navigateur ;

### Google Guice

    Un moteur d'injection de dépendances, à l'origine d'une spécification ;

### Guava

    Extension de l'API du JDK, à la manière de Apache Commons ;

### Android

    Système d'exploitation pour périphériques mobiles (téléphones, tablettes) basé sur Linux et dont l'API permet de développer des applications embarquées en Java ;

### Google App Engine

    Ce n'est pas une bibliothèque ni un outil mis à disposition par Google mais une plate-forme de cloud-computing capable d'accueillir des applications Java.
S'ajoute à cela les nombreux projets hébergés sur la forge de Google.

## Le consortium OW2

Ce consortium s'intéresse plus particulièrement aux intergiciels (middleware), mais regroupent plusieurs projets open-source.

## Le « Java Community Process » (JCP)
### Les « Java Specification Requests » (JSR)

* toutes les JSR