Développeur : Un point sur Java et l'Open-Source
Posté par tuiu pol (Jabber id, ). Modéré le 18 août 2006.
Depuis plusieurs mois déjà, Sun communique sur une prochaine mise à disposition du SDK de Java en Open-Source, dans la lignée de Solaris. Le but premier pour Sun serait évidemment de contrer le .NET de Microsoft qui commence à envahir le marché et d'augmenter le nombre des usagers (pour ne pas dire client) du langage. IBM encourage fortement Sun dans cette voie (lire Sun promet d'ouvrir les sources de Java sur news.com).
On apprend par ailleurs, que Sun se heurte tout à la fois à son désir de ne pas voir le langage être spolié par un concurrent et à la politique interne de managers opposés à la politique Open-Source.
Ces derniers jours Sun à lancé un portail qui retrace les premiers pas de Java vers l'Open-Source et qui permet de recueillir, via un forum, les avis sur le meilleur moyen d'amener le langage à l'Open-Source.
Enfin, ce 14 août, Rich Green (Executive Vice President of Software at Sun), Laurie Tolson (Vice President Developer Products and Programs at Sun), et Alan Brenner (Vice President Mobile and Embedded at Sun) ont annoncé les plans à court terme :
Il semble que cette fois nous nous dirigions définitivement vers une libération du code source de Java... la fin d'un troll ?
NdA : merci à yannickt pour son journal sur le sujet.
On apprend par ailleurs, que Sun se heurte tout à la fois à son désir de ne pas voir le langage être spolié par un concurrent et à la politique interne de managers opposés à la politique Open-Source.
Ces derniers jours Sun à lancé un portail qui retrace les premiers pas de Java vers l'Open-Source et qui permet de recueillir, via un forum, les avis sur le meilleur moyen d'amener le langage à l'Open-Source.
Enfin, ce 14 août, Rich Green (Executive Vice President of Software at Sun), Laurie Tolson (Vice President Developer Products and Programs at Sun), et Alan Brenner (Vice President Mobile and Embedded at Sun) ont annoncé les plans à court terme :
- Une partie de Java SE sera mis à disposition avant la fin de l'année 2006. Les détails ne sont pas encore connus mais cela concerne au moins le compilateur Java et la machine virtuelle HotSpot
- Un JDK compilable sera mis à disposition début 2007. Tout le code du JDK ne sera cependant pas sous licence Open-Source car Sun ne dispose pas des droits sur l'ensemble du code.
- Toute la plateforme Java ME (mobile) sera Open-Source.
- La licence n'est pas encore décidée, ce sera une licence approuvée par l'OSI (Open Source Initiative).
Il semble que cette fois nous nous dirigions définitivement vers une libération du code source de Java... la fin d'un troll ?
NdA : merci à yannickt pour son journal sur le sujet.
Le portail de la communauté Open-Source de Java (370 hits)
L'annonce résumée sur jdk.dev.java.net (158 hits)
Sun Inches Closer to Open-Source Java (126 hits)
Sun expands open-source Java plan (118 hits)
DLFP Journal : Des nouvelles sur l'ouverture de Java (265 hits)
> Lire la dépêche (86 commentaires, moyenne: 2,3).
Vous avez demandé le commentaire #744341.




Les alternatives
A noter que l'alternative libre la plus avancée (GNU classpath [1]) couvre déjà plus de 99% de l'API 1.4 [2] et plus de 95% de l'API 1.5 [3].
Pour ma part, je ne pense pas qu'on ai encore vraiment besoin que java passe opensource.
Sinon, Tom Tromey (ex-développeur de gcjx avant son remplacement par ecj) à écrit un texte intéressant sur ce que Sun devrait faire et ne pas faire avec sa licence pour que l'ouverture soit une réussite.[4]
[1] www.classpath.org
[2]http://www.kaffe.org/~stuart/japi/htmlout/h-jdk14-classpath.(...)
[3]http://www.kaffe.org/~stuart/japi/htmlout/h-jdk15-classpath-(...)
[4]http://tromey.com/blog/?p=262
[^]Re: Les alternatives
le projet classpath avance bien, mais pourquoi ne voit on pas d'applications java dans nos distribs compilés avec kaffe, alors ?
Axel
[^]Re: Les alternatives
Fedora core depuis la version 4 fournis un ensemble de softs en java compilé avec gcj. Les autres distributions semblent moins en avance à ce niveau.
Mais il faut reconnaitre que jusqu'à il y a peu (6 mois, un an), GNU classpath pêchait par un manque de support de swing/awt et donc des applications graphiques et c'est vraiment à partir des version 0.90 que c'est devenu utilisable.
une liste d'applications qui marchent avec classpath :
http://developer.classpath.org/mediation/FrontPage
Sinon, juste pour chipoter, kaffe est une machine virtuelle, je ne crois pas que tu puisses compiler du code en natif avec elle. Pour cela, il faut plutôt se tourner avec gcj ou ecj (qui est/va être le compilateur par défaut de gcj pour java 1.5).
De plus, si tu veux utiliser une machine virtuelle, Kaffe n'est pas forcément le meilleur choix, JamVM ( http://jamvm.sourceforge.net/ ) ou Cacao ( http://www.complang.tuwien.ac.at/cacaojvm/ ).
En tout cas, je pense qu'on va commencer à voir des choses arriver dans nos distributions préférées :) .
[^]Re: Les alternatives
> Sinon, juste pour chipoter
La première utilisation de gcj dans une distribution, si j'ai bonne mémoire, était pour Eclipse dans RHEL3. Eclipse n'utilisait pas gcj, c'était uniquement pour compiler Eclipse qu'avec des outils libres. Ca a changé et Eclipse c'est retrouvé dans Fedora depuis la FC3.
FC5 a déjà pas mal de programmes qui utilisent gcj/ecj/classpath: Tomcat, Azurus, frysk, rssowl, etc.
FC6 devrait avoir un plugin java pour Firefox.
Ca avance.
> gcj ou ecj (qui est/va être le compilateur par défaut
C'est le cas pour Fedora. La FAQ :
http://fedoraproject.org/wiki/JavaFAQ
> En tout cas, je pense qu'on va commencer à voir des choses arriver dans nos distributions préférées
Ca ne serait pas trop tôt...
[^]Re: Les alternatives
> Eclipse n'utilisait pas gcj
Ironiquement l'inverse va probablement arriver (utilisation du front-end du compilo Eclipse pour gcj).
[^]Re: Les alternatives
Peut-on avoir alors un plugin java pour les navigateurs qui marche, aujourd'hui?
Qui marche veut dire "utilisable" simplement, je comprends bien qu'il ne peut pas (encore) faire tourner 100% des applets.
[^]Re: Les alternatives
http://www.nongnu.org/gcjwebplugin/
Ca devrait être en standard dans FC6.
[^]Re: Les alternatives
et commentfaire pour que gcj/gij execute les applet du web comme celle quel'on trouve sur http://www.gnu.org/software/classpath/ ?
[^]Re: Les alternatives
je viens de constater qu'il existeun paquet nommé gcjwebplugin
concernant Debian ce paquet n'existe que pour unstable
http://packages.debian.org/unstable/net/gcjwebplugin
si quelque'un a une url pour Etch je suis intéressé
[^]Re: Les alternatives
Ca a l'air de s'installer sur etch sans pb : les dépendances de ce paquet sont toutes (a priori) dans etch. ("sudo apt-get -d install gcjwebplugin" ne me télécharge que gcjwebplugin de unstable.)
[^]Re: Les alternatives
installé... mais je ne vais pas le garder longtemps parce qu'il n'execute pas l'applet du site de GNUClasspath, ça m'ouvre une console avec :
java.lang.NumberFormatException
at java.lang.Integer.parseInt(java.lang.String, int, boolean) (/usr/lib/libgcj.so.6.0.0)
at java.lang.Integer.parseInt(java.lang.String) (/usr/lib/libgcj.so.6.0.0)
at Animation.init() (Unknown Source)
at gnu.gcjwebplugin.PluginAppletWindow.setHandle(long) (Unknown Source)
at gnu.gcjwebplugin.PluginAppletViewer.start(java.io.InputStream, java.io.OutputStream) (Unknown Source)
at gnu.gcjwebplugin.AppletViewer.main(java.lang.String[]) (Unknown Source)
at .__libc_start_main (/lib/tls/libc-2.3.6.so)
java.vm.version: 4.0.4 20060422 (prerelease) (Debian 4.0.3-2)
java.vm.vendor: Free Software Foundation, Inc.
[^]Re: Les alternatives
$ apt-cache policy gcjwebplugin
Table de version :
*** 2:0.91+cvs20060611-1 0
1 http://ftp.de.debian.org experimental/main Packages
100 /var/lib/dpkg/status
0.3.2-1 0
500 http://ftp.de.debian.org unstable/main Packages
La version de gcjwebplugin dans Unstable n'a pas l'air très récente, hors il y a eu pas mal de changement dans la version 0.91 (et maintenant la 0.92 qui vient de sortir). Donc, si possible, il faut vraiment installer la version de Debian Experimental ou alors attendre que des paquets plus récents arrivent dans Unstable.
[+] [^]Re: Les alternatives
99% et 95% c'est bien joli, mais as-tu été voir quelle est la couverture *réelle*, ie. implémentée ?
Ca pourrait te faire un choc. Ces chiffres sont de la poudre aux yeux.
(eh oui, il y a un paquet de méthodes vides rajoutées en vitesse pour que tel ou tel soft "fonctionne" avec GNU Classpath, et, au passage, faire grimper le taux de couverture)
[^]Re: Les alternatives
Quand on parle de ces chiffres, ce sont des implémentations réelles.
Il y a un méchanisme (un throw d'une exception non checkée comme UnsupportedOperationException, de tête), qui permet d'avoir la signature de la méthode dans classpath tout en indiquant à japi (l'outil de comparaison de couverture d'api) que la méthode n'est pas *réelle*, elle n'est alors pas comptée comme conforme.
Pas de poudre aux yeux avec classpath...
[+] [^]Re: Les alternatives
Une méthode vide de tout code n'est *pas* une implémentation réelle.
[^]Re: Les alternatives
On est tout à fait d'accord.
C'est pour celà que lorsqu'on ajoute une méthode vide pour des raisons de compatibilité binaire, on ajoute le fameux throw UnsupportedOperationException à la signature.
Cela permet d'avoir un comportement dégradé des applications s'appuyant sur cette méthode spécifique au lieu d'un crash bête et méchant. Cependant, grâce à la convention sur l'exception en question (suivie par les développeurs classpath et l'outil japi), la méthode n'est pas comptabilisée comme conforme à l'api java. Elle n'est effectivement pas une implémentation réelle.
[^]Re: Les alternatives
Ce n'est pas ce que j'ai pu constaté, à une époque pas si lointaine que ça, dans les sources de GNU Classpath.
On va dire que c'était des oublis, pour ne froisser personne, même s'il y en avait beaucoup.
[^]Re: Les alternatives
non, mais je suis preneur de tout lien me permettant de compléter ces infos.