Programmer votre logiciel libre en Java
Par le pingouin pianiste le vendredi, janvier 12 2007, 11:20 - Licences libres - Lien permanent
Vous avez besoin d'une application et ne trouvez aucun équivalent sur Internet : pourquoi donc ne pas la programmer vous même en Java ?
Pourquoi Java ?
Tout d'abord parce que SUN vient de libérer son implémentation permettant d'utiliser ainsi tout la puissance de Java ce que ne permettait pas encore l'implémentation libre GCJ. Le fameux piège Java n'est donc plus d'actualité.
Mais le principal avantage de Java est sa portabilité. C'est à dire que vous n'avez pas à vous soucier du système sur lequel le programme sera exécuté. Le JVM se chargera de faire fonctionner votre code compilé en l'interprétant différemment sous Windows, Mac ou Linux.
Il est très important qu'un logiciel, libre ou non, puisse être installé sur toutes les plateformes y compris les différentes distributions Linux pour garantir à l'utilisateur la liberté de choix de son système d'exploitation. Cela permet aussi d'élargir la base d'utilisateurs pouvant contribuer à son amélioration.
Programmer uniquement pour Linux pour favoriser son essor me semble une fausse bonne idée. On ne peut tout simplement pas utiliser les mêmes armes que Microsoft, cela ne fonctionnerait pas et cela ne me semble pas dans l'esprit du libre. De plus la meilleure façon d'amener des utilisateurs vers Linux est au contraire de proposer des logiciels libres sous Windows et faire ainsi connaître la philosophie du libre. C'est tout du moins comme cela que je suis passé à Ubuntu.
Le revers de la médaille est une lenteur toute relative et une utilisation plus importante de la RAM même si ce défaut est en partie compensé par le système HotSpot : précompilation des tâches les plus lourdes et optimisation pour un gain en vitesse dés la deuxième exécution. Cela ne doit pas non plus empêcher une programmation propre et optimisée.
Java est pour moi un langage de programmation accessible de part son orientation objet, son haut niveau d'abstraction, sa documentation très riche et les EDI performants, comme Eclipse, qui permettent par exemple de concevoir son interface utilisateur graphiquement.
Bien entendu, je ne pense pas que toutes les applications libres doivent être programmées en Java, mais ce langage me convient et présente beaucoup d'avantages dans la programmation et la diffusion de logiciels.
Pourquoi une licence libre ?
Votre logiciel fonctionne ? Vous l'utilisez ? Alors diffusez le sous licence libre.
En effet ce logiciel peut sûrement être utile à d'autres, mais la licence libre permettra surtout d'accélerer son développement (utilisation de ressources libres, correction de bugs, traductions, codéveloppement ...) et former ainsi une communauté prête à s'investir autour du programme. Plus votre logiciel est modeste et répondant à un besoin particulier plus la formation de cette communauté sera difficile et pour toucher le plus grand nombre un site multilingue et un système souple de traduction s'avèreront d'autant plus indispensables.
Programmer un logiciel libre est tout simplement la meilleure façon de programmer : la plus simple et la plus efficace.
J'avais programmé un plugin pour Htmlarea permettant d'insérer des partitions via le Guido NoteServer. Je l'avais bien sûr proposé aux développeurs d'Htmlarea mais cela n'avait l'air d'intéresser personne. Ce n'était finalement pas bien grave, mais peu après l'arrêt de développement de HTMLarea je me suis rendu compte par hasard que mon Plugin avait été intégré dans Xinha fork de HTMLarea. Cette anecdote illustre bien qu'avec le libre et Internet rien ne se perd. Les projets entamés, abandonnés peuvent toujours ressusciter et participer au développement du libre. Tout ce que vous faîtes de libre est utile.
Pour ma part j'ai donc programmé une application pour améliorer la lecture musicale Jalmus et je travaille actuellement sur une adaptation réseau de 7colors :

Il s'agit de petits projets qui paraîtront un peu ridicule à certains mais grâce au libre ils peuvent très bien se développer rapidement. Et même si Jalmus est encore largement perfectible, le simple fait qu'il facilite l'apprentissage de la musique à de nombreuses personnes à travers le monde est pour moi suffisamment gratifiant.
Quelques conseils
- Vos sources et commentaires doivent évidemment être en anglais
- Jouez à fond la carte de l'internationalisation : site Web et logiciel
- Référencez votre logiciel y compris sur les annuaires de Shareware/Freeware
- Une documentation disponible via un Wiki facilite grandement la tâche de mise à jour et de traduction
Quelques liens
- Développons en Java
- Club d'entraide des développeurs francophones : forum, tutoriels ...
- Documentation officielle de l'API
- Izpack : installeur Java libre
- Framasoft
- La cathédrale et le bazard


Commentaires
Je serais beaucoup plus réservé quant à l'utilisation de Java dans le cadre de "logiciels libres". En tout cas tant que la JVM ne serait pas effectivement libérée, ce qui je l'espère ne tardera pas trop. De plus ant par exemple que l'on désigne comme le make pour java devra faire ses preuves avec le nombres d'appli désormais implémentables en sol linuxien.
Personnellement j'essaye de packager une appli professionelle et c'est mission impossible.
Bref je conseillerais plutôt python qui a mon goûtreprend les avantages de java tout en gardant un pied dans le langage C.
Je ne connaissais Python que de nom et ce langage a l'air effectivement très intéressant : tout aussi portable que Java mais plus léger. Mais après mettre investit dans Java ce serait difficile pour moi de repartir à zero avec Python.
Par simple curiosité, tu fais comment pour créer une interface utilisateur graphiquement dans eclipse ?
Je ne l'ai pas testé mais tu peux regarder du coté du plugin Visual Editor.
Bah justement je l'ai testé et il me faisait planté éclipse. Du coup je me suis rabbatu sur Jigloo : http://www.cloudgarden.com/jigloo/