- Java et logiciel libre
-
Java est libre et open source (depuis le 13 novembre 2006 voir plus loin), et sa licence à permis l'éclosion d'un grand nombre d'outils libres dans les domaines les plus variés.
Sommaire
Discussion sur la licence de Java
Licence n°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 :
- Lancement d'une distribution Linux propre (Java Desktop System)
- OpenOffice.org
- Lancement de java.net, le site communautaire comprenant le wiki Javapedia, inspiré par Wikipedia.
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 13 novembre 2006, 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 8 mai 2007, 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 à 4 catégories :
- Outils de développement
- Serveurs
- Bibliothèques
- Logiciels complets, voir Catégorie:Logiciel libre écrit en Java
Outils de développement
Nom Version actuelle (date) Description Licence Lien externe Ant 1.6.5 (02/06/2005) Outil de construction d'application Apache Software License 2.0 http://ant.apache.org/ Avalon 4.2 Outil de développement de composants par design patterns Apache Software License http://avalon.apache.org/index.html Eclipse 3.4 Environnement de développement Common Public License 1.0 http://www.eclipse.org/ Jakarta Cactus 1.6.1 Framework de test pour applications Web, basé sur JUnit Apache Software License http://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 GCC GPL http://gcc.gnu.org/java/ jEdit 4.2 Éditeur de texte orienté programmation écrit en Java GPL http://www.jedit.org/index.php Jikes 1.21 Compilateur IBM Public Licence http://www-124.ibm.com/developerworks/oss/jikes/ Jakarta JMeter 2.0.1 Outil de mesure des performances Apache Software License http://jakarta.apache.org/jmeter/index.html JSwat 1.5.4 Débogueur graphique GPL http://www.bluemarsh.com/java/jswat/ JUnit 3.8.1 Framework de test unitaire automatisé, orienté Extreme Programming Common Public License http://www.junit.org/index.htm Kaffe 1.0.7 Machine virtuelle GPL http://www.kaffe.org/ Maven 1.0 (13/07/2004) Outil d'intégration d'application et de gestion de projet Apache Software License 2.0 http://maven.apache.org/ NetBeans 3.6 (03/09/2004) Environnement de développement Sun Public License http://www.netbeans.org/ SableCC 2.18.2 Générateur de compilateurs orientés-objets LGPL http://sablecc.org/ SableVM 1.1.9 Machine virtuelle LGPL http://sablevm.org/ Jakarta Watchdog 4.0 Outil de validation de code pour servlets et JSP Apache Software License http://jakarta.apache.org/watchdog/index.html XDoclet 1.2.2 Outil de génération de code Apache Software License http://xdoclet.sourceforge.net/xdoclet/index.html Jalopy 1.3 Outil permettant la mise en page du code java selon des règles prédéfinies BSD License http://jalopy.sourceforge.net/ Checkstyle 4 (2006) Outil de contrôle des normes de développement LGPL http://checkstyle.sourceforge.net/ Serveurs
Nom Version actuelle (date) Description Licence Lien externe GlassFish 2 Serveur complet Java EE 5 (clustering compris) CDDL et GPL https://glassfish.dev.java.net/ EasyBeans 1.0RC1 Conteneur léger et serveur EJB3.0 LGPL http://www.easybeans.org Apache Tomcat 6.0 Serveur Web et conteneur de servlets, compatible JSP, API comet Apache Software License 2.0 http://tomcat.apache.org Jetty 5.0 Serveur Web et conteneur de servlets, compatible JSP, API comet Apache Software Licence http://www.mortbay.org/jetty/index.html JBoss 4.2.3 Conteneur et serveur d'EJB, de servlets et de JSP (par embarquement de Tomcat), totalement compatible J2EE LGPL http://www.jboss.org/index.html JOnAS 5.1.1 Serveur compatible J2EE LGPL http://jonas.objectweb.org/ Enhydra Server 5.1-15 Conteneur et serveur de servlets orienté XML LGPL http://enhydra.objectweb.org/ Java Apache Mail Enterprise Server (James) 2.2.0 Serveur de courriel et de news (protocoles SMTP, POP3 et NNTP) Apache Software Licence http://james.apache.org/ JServ 1.1.2 Conteneur et serveur de servlets compatible JSP. JServ est un projet en sommeil, il n'évolue plus Apache Software Licence http://archive.apache.org/dist/java/ Geronimo 1.0-M2 Serveur fédérant de nombreux projets Java d'Apache dans le but de créer un serveur J2EE complet et innovant, autour de JMX Apache Software Licence http://geronimo.apache.org/ OpenEJB 0.9.2 Conteneur et serveur d'EJB Spécifique : http://www.exolab.org/license.html http://openejb.exolab.org/ Bibliothèques et frameworks
Nom Version actuelle (date) Description Licence Lien externe Cocoon 2.1 (03/09/2004) Framework de développement Web basé sur XML Apache Software License 2.0 http://cocoon.apache.org/ SWT 3.2 Bibliothèque graphique Eclipse Public License http://www.eclipse.org/swt/ JDOM 1.0 RC1 Bibliothèque de parsing XML spécifique, proche de l'Apache Software Licence http://www.jdom.org/ Xalan Moteur de transformation XSL Xerces Moteur de parsing XML Jakarta Struts 1.2.2 Framework de publication Web Apache Software Licence http://struts.apache.org/ JAC Bibliothèque pour la programmation orientée aspect Colt Bibliothèque pour le calcul scientifique http://hoschek.home.cern.ch/hoschek/colt/ dom4j Bibliothèque de parsing XML http://www.dom4j.org/ Jeks 1.0.2 Tableur et bibliothèque permettant d'ajouter des fonctions de tableur à un logiciel GPL http://www.eteks.com/jeks/ Castor 0.9.5.3 Bibliothèque de mapping XML, de mapping relationnel/objet et de persistance, compatible JDO spécifique, proche de la licence BSD : http://castor.exolab.org/license.html http://castor.exolab.org/ OpenJMS 0.7.6.1 Bibliothèque JMS Tyrex 1.0.1 Bibliothèque de gestion de transaction JTA, compatible JDBC et JNDI spécifique, proche de la licence BSD : http://tyrex.sourceforge.net/license.html http://tyrex.sourceforge.net/ GNU Classpath 0.91 Implémentation de la bibliothèque Java standard GPL http://www.gnu.org/software/classpath/ iText 5.0.6 Bibliothèque permettant de générer et modifier du PDF AGPL http://www.itextpdf.com/ SugarCubes 4.0.0a5 Bibliothèque pour le traitement multithreadé, puis performante que les Java Threads standard http://homepage.mac.com/jeanferdinandsusini/SugarCubes.html JADE 7.0 Bibliothè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... LGPL http://jade.dautelle.com/ JContractor 0.0.2 Bibliothèque permettant la programmation par contrat Apache Software Licence http://jcontractor.sourceforge.net/ JFinance 0.3.0 Bibliothèque pour applications financières GPL http://www.object-refinery.com/jfinance/ JWorkbook 0.2.0 Bibliothèque permettant de lire et d'écrire des fichiers au format du tableur Gnumeric GPL http://www.object-refinery.com/jworkbook/ JCommon 1.0.16 Bibliothè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 XML GPL http://www.jfree.org/jcommon/ JFreeChart 1.0.13 Bibliothèque permettant de créer des histogrammes, courbes, diagrammes GPL http://www.jfree.org/jfreechart/ JFreeReport 0.8.4.10 Bibliothèque permettant de générer des reports, aux formats PDF, HTML, CSV, Excel ou texte LGPL http://www.jfree.org/jfreereport/ JGraph 5.0 Bibliothèque de génération d'organigrammes et de schémas LGPL http://www.jgraph.com/ JUMP 0.4.1 Bibliothèque de calcul scientifique BSD http://jump-math.sourceforge.net/ MX4J 2.0.1 Bibliothèque JMX Apache Software Licence http://mx4j.sourceforge.net/ Jakarta Byte Code Engineering Library (BCEL) 5.1 Bibliothèque de manipulation du bytecode Apache Software Licence http://jakarta.apache.org/bcel/index.html Jakarta Bean Scripting Framework (BSF) 2.3.0-rc1 Framework permettant le scriptage d'une application à l'aide de différents langages (Javascript, Tcl, Python, Rexx, XSLT...) Apache Software Licence http://jakarta.apache.org/bsf/index.html Jakarta Element Construction Set (ECS) 1.4.2 Bibliothèque de génération de HTML Apache Software Licence http://jakarta.apache.org/ecs/index.html Jakarta HiveMind 1.0-rc-1 Framework SOA Apache Software Licence http://jakarta.apache.org/hivemind/index.html Jakarta ORO 2.0.8 Bibliothèque de gestion des expressions rationnelles, fournissant également des expressions rationnelles compatibles Perl 5, Awk... Jakarta POI 2.5.1 Bibliothèque permettant de lire et d'écrire des fichiers dans différents formats créés par Microsoft (Word, Excel, OLE2...) Apache Software Licence http://jakarta.apache.org/poi/index.html Jakarta Regexp 1.3 Bibliothèque de gestion des expressions rationnelles Apache Software Licence http://jakarta.apache.org/regexp/index.html Jakarta Tapestry 3.0 Framework Web constituant une alternative aux JSP Apache Software License http://jakarta.apache.org/tapestry/index.html Jakarta Turbine 2.3 Framework Web Apache Software Licence http://jakarta.apache.org/turbine/index.html Jakarta Velocity 1.4 Moteur de substitution basé sur un langage propre, le Velocity Template Language (VTL) Apache Software Licence http://jakarta.apache.org/velocity/index.html Log4J 1.2.13 Bibliothèque de journalisation de l'exécution d'une application. À noter que des projets analogues existent pour C++, .net, Perl, PHP et PL/SQL Apache Software Licence http://logging.apache.org/log4j/docs/index.html Axis] 1.1 Bibliothèque SOAP. Existe aussi pour C++ Apache Software Licence http://ws.apache.org/axis/ jNative 1.3 Appels aux bibliothèques C/C++ sans utiliser manuellement JNI LGPL http://jnative.sf.net JasperReports 1.2.6 Bibliothèque permettant de générer des reports, aux formats PDF, HTML, CSV, XML, Excel ou texte, basé sur Itext LGPL http://jasperforge.org/sf/projects/jasperreports Logiciels complets
Nom Version actuelle (date) Description Licence Lien externe XWiki 0.9.840 Logiciel de gestion de wiki GPL http://www.xwiki.org/ Azureus 2.5.0.0 Client BitTorrent GPL http://azureus.sourceforge.net/ iRATE 0.3 Radio GPL http://irate.sourceforge.net/ GeoGebra 2.7 Mathématique (géométrie et algèbre) GPL http://www.geogebra.at/ GEONExT 1.51 Mathématique (géométrie dynamique) GPL http://www.geonext.de/ Autres outils
Nom Version actuelle (date) Description Licence Lien externe Lenya 1.2 Système de gestion de contenu basé sur Apache Cocoon Apache Software License 2.0 http://cocoon.apache.org/lenya/ Jython 2.1 Interpréteur Python écrit en Java spécifique : http://www.jython.org/license.html http://www.jython.org/ BeanShell http://www.beanshell.org/ AspectJ 1.2 Extension pour la programmation orientée aspect Common Public License 1.0 http://eclipse.org/aspectj/ Jakarta Lucene 1.4 Moteur de recherche Apache Software License http://jakarta.apache.org/lucene/docs/index.html Jakarta Slide 2.0 Repository pour serveur Web, compatible WebDAV Apache Software License http://jakarta.apache.org/slide/index.html Liens externes
- (fr) Licence de la technologie Java (sur le site Java.com)
- (en) Lettre ouverte d'Eric Raymond pour la libération de Java
- (en) Le Wiki Java sur java.net
- (en) Un site qui recense tous les projets open-source autour de Java
Wikimedia Foundation. 2010.