Java et logiciel libre

Java est partiellement libre et open source (depuis le voir plus loin), et sa licence a permis l'éclosion d'un grand nombre d'outils libres dans les domaines les plus variés.

Licence no 1

La licence de Java (Sun Community Sourced License - SCSL) permet :

  • L'acquisition gratuite sur le site de Sun de la JRE (machine virtuelle accompagnée des bibliothèques de base) ;
  • La redistribution gratuite de la JRE si elle accompagne une application écrite en Java à destination d'un ordinateur de bureau ou serveur à usage général, sont donc soumis à royalties les machines spécialisées pour un seul usage (comme les téléphones, les consoles de jeu, les voitures etc.) ce que l'on appelle « logiciel embarqué ».

La licence Java ne permet pas :

  • La décompilation, la modification de la plate-forme Java.

Cette licence ne permet pas de considérer la technologie Java comme libre. Elle permet en revanche de créer des outils, des logiciels et des bibliothèques libres écrites en Java.

Un organisme indépendant, le JCP, permet de faire normaliser ces outils, afin d'unifier l'effort de développement et d'aider la promotion de ces outils.

De nombreuses voix s'élèvent depuis le début de 2004 pour que Sun libère le code de Java. La demande initiale vient d'IBM, suivie de personnalités du monde du logiciel libre, comme Eric Raymond.

Depuis mars 2005, Sun a introduit de nouvelles licences pour Java, augmentant son ouverture, sans toutefois devenir open-source :

  • Java Internal User License (JIUL), destinée aux déploiements internes ;
  • Java Distribution License (JDL), permettant de distribuer pleinement Java ;
  • Java Research License (JRL), dans un but d'évaluation et d'usage non-commercial. Cette licence permet également de consulter le code source de Java.

De plus, Sun propose de contribuer au développement de la prochaine version de Java (Mustang) sur cette page.

Comme indiqué ci-dessous, Sun devrait libérer Java durant l'année 2006.

La politique de Sun

La politique de Sun vise à conserver le contrôle sur l'évolution de Java, ce qui explique son refus de placer la JVM et le compilateur Java en open-source.

Sun a placé par le passé la technologie Jini, basée sur Java, sous une licence que Sun prétendait open-source. Ceci était toutefois remis en cause, notamment par Linus Torvalds (cf. Il était une fois Linux).

Toutefois, après avoir placé NetBeans en open-source en juin 2000, on assiste à une évolution de Sun, qui a placé des éléments des packages Java en open- source lors de la conférence JavaOne 2004 :

  • Java3D ;
  • Les extensions pour JFC permettant de définir une interface graphique complète dans un fichier XML (XUI), JDNC (Java Desktop Network Components) et JDIC (Desktop Integration Components) ;
  • L'interface graphique en 3D pour Linux Looking Glass.

D'une manière générale, on peut noter un engagement plus fort de Sun envers le logiciel libre depuis quelque temps :

Début 2005, Sun a annoncé la création d'une nouvelle licence libre, appelée Common Development and Distribution License (CDDL). Cette licence servira à la publication d'un grand nombre de logiciels, parmi lesquels Solaris, dans sa version OpenSolaris, ainsi que Java Enterprise System et Java Desktop System. Il est possible (ce qui veut dire que cela a été évoqué) que l'intégralité du catalogue logiciel de Sun soit publié sous cette licence, ce qui inclurait donc la plate-forme Java.

En juin 2005, Sun a annoncé le lancement d'un projet open-source pour créer la prochaine version de Java System Application Server dans sa version destinée aux développeurs, sous le nom de projet GlassFish, ainsi que de sa spécification de bus d'intégration Java, JBI.

En 2006, Sun a décidé de libérer l'intégralité de ses outils de développement, y compris ceux pour Java, à savoir Java Studio Creator et Java Studio Enterprise (NetBeans était déjà libre).

De plus, durant son discours d'ouverture de la conférence JavaOne le 16 mai, le nouveau CEO de Sun, Jonathan Schwartz, a indiqué qu'il avait l'intention de rendre Java libre.

Le , Sun met le cœur de la technologie Java, le JDK (la JRE - JVM et bibliothèques - et les outils de développement, dont le compilateur javac) sous licence GPL version 2, ainsi que du framework Java ME. L'implémentation Sun de Java EE (GlassFish), déjà sous licence libre CDDL se voit rajouter également la licence GPL. Ce changement met donc fin à l'aspect propriétaire de Java, qui devient finalement un logiciel libre.

Le , Sun annonce que Java est désormais totalement en Open Source dans le projet OpenJDK.

Implémentations libres de Java

La Free Software Foundation a été la première à tenter de créer des éléments d'une implémentation libre de Java, à travers deux projets distincts :

  • GNU Classpath, une implémentation libre des bibliothèques Core de Java ;
  • GCJ, une extension du compilateur GCC permettant de compiler du code Java.

Au mois de mai 2005, la fondation Apache a annoncé le lancement du projet Harmony, visant à créer un environnement Java libre complet, avec compilateur, JVM et bibliothèques Core. Le projet vise la compatibilité J2SE.

D'autres éléments de l'environnement Java ont été implémentés dans une version libre :

  • Kaffe, une machine virtuelle ;
  • Black-down, une machine virtuelle ;
  • Jikes, un compilateur ;
  • Jikes RVM, une machine virtuelle ;
  • SableVM, une machine virtuelle.

Outils Java libres

Les outils libres pour Java appartiennent essentiellement à quatre catégories :

  • Outils de développement ;
  • Serveurs ;
  • Bibliothèques ;
  • Logiciels complets, voir Catégorie:Logiciel libre écrit en Java.

Outils de développement

NomVersion actuelle (date)DescriptionLicenceLien externe
Ant1.6.5 ()Outil de construction d'applicationApache Software License 2.0http://ant.apache.org/
Avalon4.2Outil de développement de composants par design patternsApache Software Licensehttp://avalon.apache.org/index.html
Eclipse3.4Environnement de développementCommon Public License 1.0http://www.eclipse.org/
Jakarta Cactus1.6.1Framework de test pour applications Web, basé sur JUnitApache Software Licensehttp://jakarta.apache.org/cactus/index.html
GNU Compiler for Java (GCJ)4.1.1 (version de GCC)Compilateur permettant la compilation native, sur des plates-formes variées (Linux sur PC, Alpha, Itanium, PowerPC, Athlon 64, SH-3/4, Solaris sur SPARC, BSD sur PC, Irix, Windows, MacOS X...), inclus dans GCCGPLhttp://gcc.gnu.org/java/
jEdit4.2Éditeur de texte orienté programmation écrit en JavaGPLhttp://www.jedit.org/index.php
Jikes1.21CompilateurIBM Public Licencehttp://www-124.ibm.com/developerworks/oss/jikes/
Jakarta JMeter2.0.1Outil de mesure des performancesApache Software Licensehttp://jakarta.apache.org/jmeter/index.html
JSwat1.5.4Débogueur graphiqueGPLhttps://web.archive.org/web/20040829075817/http://www.bluemarsh.com/java/jswat/
JUnit3.8.1Framework de test unitaire automatisé, orienté Extreme ProgrammingCommon Public Licensehttp://www.junit.org/index.htm
Kaffe1.0.7Machine virtuelleGPLhttp://www.kaffe.org/
Maven1.0 (13/07/2004)Outil d'intégration d'application et de gestion de projetApache Software License 2.0http://maven.apache.org/
NetBeans8.0 (18/03/2014)Environnement de développementSun Public Licensehttp://www.netbeans.org/
SableCC2.18.2Générateur de compilateurs orientés-objetsLGPLhttp://sablecc.org/
SableVM1.1.9Machine virtuelleLGPLhttp://sablevm.org/
Jakarta Watchdog4.0Outil de validation de code pour servlets et JSPApache Software Licensehttp://jakarta.apache.org/watchdog/index.html
XDoclet1.2.2Outil de génération de codeApache Software Licensehttp://xdoclet.sourceforge.net/xdoclet/index.html
Jalopy1.3Outil permettant la mise en page du code java selon des règles prédéfiniesBSD Licensehttp://jalopy.sourceforge.net/
Checkstyle4 (2006)Outil de contrôle des normes de développementLGPLhttp://checkstyle.sourceforge.net/

Serveurs

NomVersion actuelle (date)DescriptionLicenceLien externe
GlassFish2Serveur complet Java EE 5 (clustering compris)CDDL et GPLhttps://glassfish.dev.java.net/
EasyBeans1.0RC1Conteneur léger et serveur EJB3.0LGPLhttp://www.easybeans.org
Apache Tomcat6.0Serveur Web et conteneur de servlets, compatible JSP, API cometApache Software License 2.0http://tomcat.apache.org
Jetty5.0Serveur Web et conteneur de servlets, compatible JSP, API cometApache Software Licencehttp://www.mortbay.org/jetty/index.html
JBoss4.2.3Conteneur et serveur d'EJB, de servlets et de JSP (par embarquement de Tomcat), totalement compatible J2EELGPLhttp://www.jboss.org/index.html
JOnAS5.1.1Serveur compatible J2EELGPLhttp://jonas.objectweb.org/
Enhydra Server5.1-15Conteneur et serveur de servlets orienté XMLLGPLhttp://enhydra.objectweb.org/
Java Apache Mail Enterprise Server (James)2.2.0Serveur de courriel et de news (protocoles SMTP, POP3 et NNTP)Apache Software Licencehttp://james.apache.org/
JServ1.1.2Conteneur et serveur de servlets compatible JSP. JServ est un projet en sommeil, il n'évolue plusApache Software Licencehttp://archive.apache.org/dist/java/
Geronimo1.0-M2Serveur fédérant de nombreux projets Java d'Apache dans le but de créer un serveur J2EE complet et innovant, autour de JMXApache Software Licencehttp://geronimo.apache.org/
OpenEJB0.9.2Conteneur et serveur d'EJBSpécifique : http://www.exolab.org/license.htmlhttp://openejb.exolab.org/

Bibliothèques et frameworks

NomVersion actuelle (date)DescriptionLicenceLien externe
Cocoon2.1 (03/09/2004)Framework de développement Web basé sur XMLApache Software License 2.0http://cocoon.apache.org/
SWT3.2Bibliothèque graphiqueEclipse Public Licensehttp://www.eclipse.org/swt/
JDOM1.0 RC1Bibliothèque de parsing XMLspécifique, proche de l'Apache Software Licencehttp://www.jdom.org/
XalanMoteur de transformation XSL
XercesMoteur de parsing XML
Jakarta Struts1.2.2Framework de publication WebApache Software Licencehttp://struts.apache.org/
JACBibliothèque pour la programmation orientée aspect
ColtBibliothèque pour le calcul scientifiquehttp://acs.lbl.gov/software/colt/
dom4jBibliothèque de parsing XMLhttp://www.dom4j.org/
Jeks1.0.2Tableur et bibliothèque permettant d'ajouter des fonctions de tableur à un logicielGPLhttp://www.eteks.com/jeks/
Castor0.9.5.3Bibliothèque de mapping XML, de mapping relationnel/objet et de persistance, compatible JDOspécifique, proche de la licence BSD : http://castor.exolab.org/license.htmlhttp://castor.exolab.org/
OpenJMS0.7.6.1Bibliothèque JMS
Tyrex1.0.1Bibliothèque de gestion de transaction JTA, compatible JDBC et JNDIspécifique, proche de la licence BSD : http://tyrex.sourceforge.net/license.htmlhttp://tyrex.sourceforge.net/
GNU Classpath0.91Implémentation de la bibliothèque Java standardGPLhttp://www.gnu.org/software/classpath/
iText5.0.6Bibliothèque permettant de générer et modifier du PDFAGPLhttp://www.itextpdf.com/
SugarCubes4.0.0a5Bibliothèque pour le traitement multithreadé, plus performante que les Java Threads standardhttp://homepage.mac.com/jeanferdinandsusini/SugarCubes.html
JADE7.0Bibliothèque utilitaire offrant des services aussi variés que des fonctionnalités temps réel, du calcul scientifique, la prise en compte d'unités de mesure et de monnaies, du traitement avancé de chaînes de caractères...LGPLhttp://jade.dautelle.com/
JContractor0.0.2Bibliothèque permettant la programmation par contratApache Software Licencehttp://jcontractor.sourceforge.net/
JFinance0.3.0Bibliothèque pour applications financièresGPLhttp://www.object-refinery.com/jfinance/
JWorkbook0.2.0Bibliothèque permettant de lire et d'écrire des fichiers au format du tableur GnumericGPLhttp://www.object-refinery.com/jworkbook/
JCommon1.0.16Bibliothèque utilisée par JFreeChart et JFreeReport. Contient des fonctions de traitement de chaînes de caractères, d'interface graphique, de traitement de dates, de sérialisation et de traitement XMLLGPLhttp://www.jfree.org/jcommon/
JFreeChart1.0.13Bibliothèque permettant de créer des histogrammes, courbes, diagrammesLGPLhttp://www.jfree.org/jfreechart/
JFreeReport0.8.4.10Bibliothèque permettant de générer des reports, aux formats PDF, HTML, CSV, Excel ou texteLGPLhttp://www.jfree.org/jfreereport/
JGraph5.0Bibliothèque de génération d'organigrammes et de schémasLGPLhttp://www.jgraph.com/
JUMP0.4.1Bibliothèque de calcul scientifiqueBSDhttp://jump-math.sourceforge.net/
MX4J2.0.1Bibliothèque JMXApache Software Licencehttp://mx4j.sourceforge.net/
Jakarta Byte Code Engineering Library (BCEL)5.1Bibliothèque de manipulation du bytecodeApache Software Licencehttp://jakarta.apache.org/bcel/index.html
Jakarta Bean Scripting Framework (BSF)2.3.0-rc1Framework permettant le scriptage d'une application à l'aide de différents langages (JavaScript, Tcl, Python, Rexx, XSLT...)Apache Software Licencehttp://jakarta.apache.org/bsf/index.html
Jakarta Element Construction Set (ECS)1.4.2Bibliothèque de génération de HTMLApache Software Licencehttp://jakarta.apache.org/ecs/index.html
Jakarta HiveMind1.0-rc-1Framework SOAApache Software Licencehttp://jakarta.apache.org/hivemind/index.html
Jakarta ORO2.0.8Bibliothèque de gestion des expressions rationnelles, fournissant également des expressions rationnelles compatibles Perl 5, Awk...
Apache POI2.5.1Bibliothèque permettant de lire et d'écrire des fichiers dans différents formats créés par Microsoft (Word, Excel, OLE2...)Apache Software Licencehttp://poi.apache.org
Jakarta Regexp1.3Bibliothèque de gestion des expressions rationnellesApache Software Licencehttp://jakarta.apache.org/regexp/index.html
Jakarta Tapestry3.0Framework Web constituant une alternative aux JSPApache Software Licensehttp://jakarta.apache.org/tapestry/index.html
Jakarta Turbine2.3Framework WebApache Software Licencehttp://jakarta.apache.org/turbine/index.html
Jakarta Velocity1.4Moteur de substitution basé sur un langage propre, le Velocity Template Language (VTL)Apache Software Licencehttp://jakarta.apache.org/velocity/index.html
Log4J1.2.13Bibliothèque de journalisation de l'exécution d'une application. À noter que des projets analogues existent pour C++, .net, Perl, PHP et PL/SQLApache Software Licencehttp://logging.apache.org/log4j/docs/index.html
Axis]1.1Bibliothèque SOAP. Existe aussi pour C++Apache Software Licencehttp://ws.apache.org/axis/
jNative1.3Appels aux bibliothèques C/C++ sans utiliser manuellement JNILGPLhttp://jnative.sf.net
JasperReports1.2.6Bibliothèque permettant de générer des reports, aux formats PDF, HTML, CSV, XML, Excel ou texte, basé sur ItextLGPLhttp://jasperforge.org/sf/projects/jasperreports

Logiciels complets

NomVersion actuelle (date)DescriptionLicenceLien externe
XWiki0.9.840Logiciel de gestion de wikiGPLhttp://www.xwiki.org/
Azureus2.5.0.0Client BitTorrentGPLhttp://azureus.sourceforge.net/
iRATE0.3RadioGPLhttp://irate.sourceforge.net/
GeoGebra2.7Mathématique (géométrie et algèbre)GPLhttp://www.geogebra.at/
GEONExT1.51Mathématique (géométrie dynamique)GPLhttp://www.geonext.de/

Autres outils

NomVersion actuelle (date)DescriptionLicenceLien externe
Lenya1.2Système de gestion de contenu basé sur Apache CocoonApache Software License 2.0https://web.archive.org/web/20040826021924/http://cocoon.apache.org/lenya/
Jython2.1Interpréteur Python écrit en Javaspécifique : http://www.jython.org/license.htmlhttp://www.jython.org/
BeanShellhttp://www.beanshell.org/
AspectJ1.2Extension pour la programmation orientée aspectCommon Public License 1.0http://eclipse.org/aspectj/
Jakarta Lucene1.4Moteur de rechercheApache Software Licensehttp://jakarta.apache.org/lucene/docs/index.html
Jakarta Slide2.0Repository pour serveur Web, compatible WebDAVApache Software Licensehttp://jakarta.apache.org/slide/index.html

Notes et références

  1. (en) « Javapedia »(Archive.orgWikiwixArchive.isGoogle • Que faire ?), sur wiki.java.net.

Voir aussi

Articles connexes

Liens externes

  • Portail de la programmation informatique
  • Portail des logiciels libres
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.