# NetBeans

NetBeans est un environnement de développement intégré (EDI), placé en open source par Sun en juin 2000 sous licence CDDL (Common Development and Distribution License) et GPLv2. En plus de Java, NetBeans permet la prise en charge native de divers langages tels le C, le C++, le JavaScript, le XML, le Groovy, le PHP et le HTML, ou d'autres (dont Python et Ruby) par l'ajout de greffons. Il offre toutes les facilités d'un IDE moderne (éditeur avec coloration syntaxique, projets multi-langage, refactoring, éditeur graphique d'interfaces et de pages Web).
Compilé en Java, NetBeans est disponible sous Windows, Linux, Solaris (sur x86 et SPARC), Mac OS X ou sous une version indépendante des systèmes d'exploitation (requérant une machine virtuelle Java). Un environnement Java Development Kit JDK est requis pour les développements en Java.
NetBeans constitue par ailleurs une plateforme qui permet le développement d'applications spécifiques (bibliothèque Swing (Java)). L'IDE NetBeans s'appuie sur cette plate forme.
L'IDE Netbeans s'enrichit à l'aide de greffons.

## Historique

En 1997, NetBeans naît de Xelfi, un projet d'étudiants dirigé par la Faculté de mathématiques et de physique de l'Université Charles de Prague. Plus tard, une société se forme autour du projet et édite des versions commerciales de l'EDI NetBeans, jusqu'à ce qu'il soit acheté par Sun en 1999. Sun place le projet sous double licence CDDL et GPL v2 en juin de l'année suivante.
En septembre 2016, Oracle, qui a racheté Sun, propose de céder le projet à la fondation Apache Software Foundation, ce qui est accepté en octobre 2016.

## Multilingue

NetBeans est disponible en 23 langues (version 7.0 sortie en avril 2011), dont la plupart de ces traductions ont été réalisées par la communauté des utilisateurs.

## Environnement

Netbeans est un IDE qui supporte une large variété de langages de programmation et d'outils de collaboration.

### Environnement de base

L'environnement de base comprend les fonctions générales suivantes :
* configuration et gestion de l'interface graphique des utilisateurs,
* support de différents langages de programmation,
* traitement du code source (édition, navigation, formatage, inspection),
* fonctions d'import/export depuis et vers d'autres IDE, tels qu'Eclipse ou JBuilder,
* accès et gestion de bases de données, serveurs Web, ressources partagées,
* gestion de tâches (à faire, suivi…),
* documentation intégrée.

### Principaux langages supportés

L'éditeur intégré propose des fonctions de complètement, de contrôles syntaxiques et sémantiques, d'avertissements et de conseils, de reprises de code (« refactoring » : renommage, changement des méthodes, gestion des classes, …), de sauvegarde et reprise.
Il supporte principalement les langages suivants :
* Java (Java SE, Java ME<, Java FX, Java EE), Javadoc ;
* Groovy et Grails ;
* PHP (dont les environnements Zend et Symfony) ;
* JavaScript ;
* C, C++, Fortran. Netbeans ne requiert pas l'utilisation d'un compilateur particulier. À noter le support des bibliothèques Qt. Les plates formes supportées sont Microsoft Windows, Linux, Mac OS, Solaris 10 et OpenSolaris ;
* Python (via un greffon développé par la communauté) ;
* HTML, XHTML, RHTML (en) ;
* XML ;
* DTD ;
* CSS ;
* JSP, JSF;
* Ruby (via un greffon depuis la version 7.0 de netBeans) ;

### Gestion de projets

Netbeans supporte les principaux systèmes de gestion de versions : Subversion, Git, Mercurial, ClearCase, CVS. Il intègre par ailleurs des outils collaboratifs (Projet Kenai Team Server).
Il interagit avec les logiciels de gestion de bugs : Jira, Bugzilla.

### Débogage et optimisation

Netbeans comprend un profileur de code Java (analyse des performances CPU, de la génération de charge, analyse de l'utilisation mémoire, …).
Il intègre par ailleurs des outils de débogage Java. Il peut aussi interagir avec des débogueurs PHP (Zend, Xdebug).

### Bases de données

NetBeans comprend un explorateur de bases de données qui supporte toutes les bases de données relationnelles pour lesquelles un connecteur JDBC existe (selon les versions des gestionnaires de bases de données): JavaDB (Derby) MySQL, PostgreSQL, Oracle, Microsoft SQL Server, PointBase (en), JTD engine (en), IBM Redistributable DB2, …
L'explorateur comprend un éditeur de requêtes, un gestionnaire intégré de bases de données MySQL.

### Outils de construction d'applications
#### Applications sur serveurs (applications Web et JAVA EE)

NetBeans supporte une importante variété d'environnements pour l'exécution d'applications web et Java EE : Java Server Pages (JSP), Java Server Faces(JSF), Enterprise JavaBeans (EJB 2.1, EJB 3, EJB 3.1), Apache Struts, Spring Web MVC, Hibernate… Il supporte les standards Java EE 6, Java EE 5, J2EE 1.4, Java Persistence API (JPA 2.0 ), Java Servlet API.
Il permet le déploiement d'applications Java et d'Applets via Java Web Start (JNLP).
Netbeans intègre les fonctions de Hudson (Maven et projets Java SE pour Ant) et de Maven (créer, exécuter, tester et déboguer des projets Maven Apache).

#### Applications sur poste de travail

NetBeans supporte le développement d'applications postes de travail (Java SE), en lien avec JDK 1.1, 1.2, 1.3, 1.4, JDK 5.0 et JDK 6. Il permet l'utilisation des tests JUnit 3 et 4.
Il propose un environnement graphique exploitant Swing, désigné comme Java Swing GUI Builder (ancien projet Matisse). Cet environnement comporte des palettes d'outils de composition d'interfaces (composantes Swing et AWT et composantes spécifiques développées pour les projets). Il est utilisé au travers d'une interface graphique simple (choisir et positionner) qui permet de dessiner des interfaces pour les utilisateurs et de les visualiser à la volée. La construction d'interface graphique est conforme à JSR 296 (Swing Application Framework), et JSR 295 (technologie Beans Binding ).
Il supporte par ailleurs Java FX.

#### Applications Java sur mobiles ou embarquées

Netbeans permet le développement d'applications Java pour mobiles (Java ME) et systèmes embarqués.

#### Web Services

NetBeans propose différents outils pour l'exploitation de web services. Il supporte JAX-WS services, JAX-RS RESTful Web Services, standards JAX-RPC Web Service, SOAP et RESTful Web Services, JBI Java Business Integration, Java Architecture for XML Binding API (JAXB), Mobile Java ME Web services. Il permet l'utilisation des web services Google Maps, StrikeIron, Yahoo News Search. Il supporte par ailleurs l'intégration de services fournis par quelques acteurs clés (Google, Facebook, Yahoo, YouTube, …).

### Plateforme NetBeans
#### Type de plateforme

NetBeans est aussi une plateforme générique pour le développement d'applications pour stations de travail (bibliothèque Swing (Java)). Elle fournit des ressources pour développer les éléments structurants de ces applications : gestion des menus, des fenêtres, configuration, gestion des fichiers, gestion des mises à jour… Des présentations détaillées sont fournies par le centre de documentation de NetBeans.
L'IDE NetBeans comprend toutes les ressources utiles mais il est aussi possible d'installer la plateforme séparément.
Le développement d'applications sur la base de la plate-forme NetBeans consiste en la réalisation de « modules » qui s'insèrent dans la plate-forme et en étendent dynamiquement les fonctions.
Un module est un groupe de classes Java, de portée variée : elle peut consister en une simple classe Java réalisant des fonctions simples (exemple : ajouter une action dans un menu pour éditer le contenu du presse papier) comme elle peut intégrer une application externe complète (exemple : Java profiling suite). Un module peut s'appliquer à l'IDE NetBeans lui-même.
La réalisation des modules s'appuie sur une API normalisée.
Un espace de partage entre développeurs est mis en place.

#### OSGi

La plateforme NetBeans se conforme au framework d'OSGi. NetBeans IDE 6.9 permet de créer des paquetages OSGi pour des applications Java et pour des applications développées depuis NetBeans.

#### Greffons

NetBeans s'enrichit au travers d'un système de greffons.