Java, .NET Et Les Logiciels Libres
Total Page:16
File Type:pdf, Size:1020Kb
Java, .NET et les logiciels libres Fabrice Rossi http://apiacoa.org/ Publication originale : d´ecembre 2004 Version actuelle : 21 juillet 2005 Cet article a ´et´e publi´e dans le nu- 1 Introduction m´ero 67 de la revue GNU/Linux Maga- zine France en D´ecembre 2004. Je remercie Deux plate-formes de d´eveloppement rem- Denis Bodor et les ´editions Diamond pour portent un succ`esimportant dans les entre- avoir autoris´e la distribution de cet article prises : Java et .NET. Elles comportent de selon les conditions indiqu´ees dans la sec- nombreux points communs, en particulier ce- tion A. L’article est disponible en ligne `a lui d’ˆetre justement des cadres de d´eveloppe- l’URL http://apiacoa.org/publications/ ment (des plate-formes) qui allient un langage 2004/lm-java-dotnet-free.pdf. La section orient´eobjet de haut niveau (Java ou C#), B d´etaille les modifications effectu´eesdans l’ar- une plate-forme d’ex´ecution (les machines vir- ticle depuis sa publication. J’ai pour objectif de tuelles) et une biblioth`eque gigantesque qui faire ´evoluer l’article dans les mois qui viennent couvre `apeu pr`estout les besoins d’un pro- afin de le maintenir `ajour. Si vous avez des sug- grammeur. Mon but dans cet article n’est gestions ou des commentaires, merci d’utiliser le pas de m’int´eresser aux aspects techniques de 1 journal correspondant sur mon compte linuxfr . Java et de .NET, mais plutˆotde me focali- ser sur leurs ressemblances les plus gˆenantes pour les auteurs de logiciels libres (ou open source) : Java et .NET ont ´et´ecr´e´espar des entreprises priv´ees(par opposition aux lan- R´esum´e gages issus de la recherche acad´emique, par exemple) et leurs impl´ementations de r´ef´e- Cet article pr´esente les probl`emesli´esau rence ne sont pas des logiciels libres ou open contrˆole, par l’interm´ediaire de brevets logi- source. De plus, divers brevets logiciels sont ciels et d’accord de licence complexes, de Java de la partie. Je me propose d’´etudier ici les et de .NET par les entreprises qui les ont cons´equences de ces points cruciaux, en ou- cr´e´es.Il tente d’apporter des ´el´ements de r´e- bliant presque totalement le m´erite technique ponse `aune question fondamentale pour la des deux plate-formes. communaut´edu libre : Java et .NET sont-ils Avant de me plonger dans les probl`emes compatibles avec le logiciel libre ? de licences et de brevets logiciels, j’aimerais cependant faire un petit d´etour par la tech- nique. En effet, si Java et .NET n’avaient au- 1Url : https://linuxfr.org/~boubou/ cun int´erˆettechnique, il n’y aurait pas lieu de Java, .NET et les logiciels libres GNU/Linux Magazine France n°67, D´ecembre 2004 se poser la difficile question de leur compa- gressif du C/C++ au profit de Java et/ou de tibilit´eavec le libre. Nous disposons de nom- C# ? Il ne s’agirait pas bien sˆur de rempla- breux langages et biblioth`eques `ala fois libres cer l’infrastructure de Gnome par une version et d’excellente qualit´e,et nous n’avons donc Java/C#, mais plutˆotde privil´egier ces lan- pas vraiment besoin de langages suppl´emen- gages pour les nouvelles applications. Comme taires, mˆemesi la diversit´en’a jamais ´et´eun je l’ai d´ej`a´ecrit, mon but ici n’est pas de r´e- probl`emepour le libre, au contraire. Mˆeme pondre `acette question du point de vue tech- dans cette hypoth`ese,il nous faudrait cepen- nique, mais d’´etudier les cons´equences que dant prendre garde de ne pas nous couper du pourrait avoir la g´en´eralisation de l’utilisation reste du monde, car Java et .NET sont de plus de .NET et de Java dans les projets libres, en en plus utilis´esdans les entreprises. L’ensei- d´eterminant qui contrˆole ces plate-formes et gnement de la programmation, dans les ´ecoles ce que cela implique pour le libre. Je com- sp´ecialis´eeset les universit´es,ne peut s’affran- mencerai l’article par un bref rappel sur les chir de ce fait. En pratique, Java est donc ´el´ements techniques n´ecessaires `ala compr´e- utilis´ecomme langage d’apprentissage de la hension du reste du texte, puis j’´etudierai le programmation dans de tr`esnombreuses for- cas de Java avant de passer `a.NET. mations, et il est probable que C# le rejoigne dans les ann´ees`avenir. Au del`a de l’aspect pragmatique, Java 2 Brefs rappels sur les deux et .NET m´eritent notre int´erˆet car ils ne plate-formes manquent pas d’atouts techniques. Il me semble que le plus important d’entres eux Dans cet article, je d´esigne par Java la est la productivit´equ’on peut avoir avec ces plate-forme [2] qui porte ce nom, et qui est plate-formes. Celle-ci est av´er´ee,´etablie par constitu´ee du langage Java, de la machine de nombreuses ´etudes, et c’est en g´en´eral l’ar- virtuelle associ´ee(la Java Virtual Machine, gument principal qui d´ecide les entreprises JVM) et de l’ensemble des API. Un pro- `autiliser Java ou .NET. Cette productivit´e gramme ´ecrit en Java est en g´en´eral compil´e trouve ses racines dans la gestion automa- vers le byte code de la machine virtuelle. Lors tique de la m´emoire (le garbage collecting), de l’ex´ecution du programme, la JVM peut dans le mod`ele orient´eobjet simple (sans h´e- soit interpr´eter les instructions du byte code ritage multiple), dans la qualit´edes environ- en les traduisant en des instructions du pro- nements de d´eveloppement (comme Eclipse, cesseur cible, soit compiler au vol des mor- http://www.eclipse.org/, pour n’en citer ceaux de byte code en code objet natif (on qu’un), dans la compl´etude des API, etc. Pour appelle cette compilation au vol du Just In d´evelopper des logiciels libres, la portabilit´e Time) puis les ex´ecuter. Les impl´ementations binaire (un des arguments de Java et .NET les plus efficaces de la JVM m´elangent en g´e- pour s´eduire les entreprises) n’est pas tr`es n´eral l’interpr´etation et le JIT. Le passage par utile, mais tout le reste, et en particulier la un byte code ind´ependant de la machine cible productivit´eaccrue, est particuli`erement s´e- de l’ex´ecution permet d’obtenir une forme de duisant pour notre communaut´e.A tel point portabilit´ebinaire. que certains leaders du projet Gnome, comme Dans cet article, je d´esigne par .NET ce que Havoc Pennington par exemple, posent ouver- Microsoft appelle le framework .NET. Cette tement la question (cf [1] par exemple) : l’ave- plate-forme [3] ressemble beaucoup `aJava. nir de Gnome passe-t-il par l’abandon pro- La principale diff´erence est qu’elle se veut Copyright GNU/Linux Magazine France & Fabrice Rossi, 2004 2/21 Java, .NET et les logiciels libres GNU/Linux Magazine France n°67, D´ecembre 2004 neutre par rapport au langage de programma- syst`eme.Il y a un certain consensus autour tion et est donc construite `apartir d’une ma- du fait que les m´ecanismes d’int´egration de chine virtuelle associ´ee`aun ensemble d’API. l’existant `a.NET sont `ala fois plus simples L’ensemble forme la Common Language In- d’utilisation et plus complets que leurs ´equi- frastructure (CLI). .NET lui-mˆemeconsiste valents en Java. en la CLI auquel on ajoute divers langages (C#, Visual Basic .NET, etc.) et des bi- blioth`eques compl´ementaires. La machine vir- 3 Le cas de Java tuelle de .NET (le Common Language Run- 3.1 Java : pas de standard ! time, CLR) est tr`esproche de la JVM, bien que les op´erations choisies soit plus adapt´ees La plate-forme Java a ´et´ecr´e´eepar la so- au JIT qu’`al’interpr´etation. De ce fait, les ci´et´eSun Microsystems qui a rendu dispo- impl´ementations du CLR sont en g´en´eral ex- nible la version 1.0 de son impl´ementation en clusivement bas´eessur du JIT. En pratique, 1996. Java est une marque d´epos´eepar Sun l’utilisation du langage C# [4] est presque in- (et on devrait donc ´ecrire JavaTM `achaque dispensable si on veut profiter des int´erˆets de utilisation...), ce qui signifie qu’on ne peut pas .NET, bien que d’autres langages profitent utiliser librement le terme Java pour d´esigner aussi pleinement de la plate-forme, au prix un programme ou encore un langage (cf [5] de quelques adaptations (on peut citer Vi- pour des d´etails). A titre de comparaison, Li- sual Basic et Eiffel par exemple). C# est tr`es nux est aussi une marque d´epos´eeet son utili- proche de Java. En caricaturant, on pourrait sation n’est donc pas libre. Il faut obtenir une dire que c’est une version am´elior´eede Java, autorisation du Linux Mark Institute [6] pour bien que les aficionados de ce dernier mettront certaines utilisations. en avant certains points discutables de C# (le Historiquement, Sun a ´et´etent´epar la stan- mod`ele de la red´efinition de m´ethode est assez dardisation pour la plate-forme Java. Un dos- complexe, les exceptions ne doivent pas obli- sier avait d’abord ´et´ed´epos´eaupr`esde l’ISO gatoirement ˆetre trait´ees,etc.) pour refuser (International Organization for Standardiza- cette d´efinition.