Tuesday, November 30, 2010

Workspace settings vs project settings

Today, I wanted to talk about the evilness of workspace settings. Workspace settings are used for a project when the project doesn't specify its own settings.
There are really good reasons why workspace settings should never be used for a Java project and in particular for a Plug-in project. To specify project specific settings, just open the project Properties, the select the options you want to be specific to your project and select "Enable project specific settings". For example, for compiler settings, it would look like this:

Let's take a Plug-in project that is using a EE (Execution Environment) 1.4 and therefore it doesn't use generics. Now you don't set project specific settings for this project, which means that once this project is checked out inside your workspace it will be compiled using the workspace settings. If you are using a 1.6 VM to run your workspace, the default compiler settings for this workspace will be set to 1.6.
So your project might end up with many warnings once checked out that are unexpected: raw type warnings, unchecked type warnings,...
When you set up a Plug-in project, you should also set up all compiler settings to be specific to this project. You should set the libraries on the classpath to explicitly point to your EE.
You must make sure that compiler warnings are set up so that your project compiles without any warnings or at least a limited number of warnings. Warnings should always be under control. You either don't care about some warnings and in this case they should be disabled, or you do care about them and then they should be fixed.
Setting project specific settings means that any user that checks out your project will get consistent compilation regardless the workspace settings they are using.
This also means that any Plug-in project should always set an EE. Without any EE explicilty specified, the default VM libraries are set up on the project's classpath and this means that the classpath depends on the workspace settings.
This being said, if you do set an EE for your project, you should also make sure it is using API tooling even if you don't really provide APIs in your project.
You can at least benefit from the detection of invalid references to the EE you are using. API tooling has a disabled option (by default) that you should enable for your project to detect all invalid usage of types, fields and methods that are not defined for the EE specified for the project. See Project's Properties>Plug-in Development>API Errors/Warnings>API Use>General>Invalid references to system libraries.

If you follow these guidelines, you will definitely help any users of your project that want to check out the code in their workspace. The compilation of your project becomes predictable and repeatable in any workspace. No more "I don't understand why my project doesn't compile when I checked it out from CVS....".

Hope this help you to setup your new projects or adjust the settings of your existing projects.

Tuesday, July 27, 2010

Quoi de neuf dans Helios?

La fondation Eclipse a sorti sa nouvelle version annuelle fin juin. Cette année, son nom est Hélios.
Comme d'habitude, la livraison fut faite le jour où elle était prévue et ce pour une 10e année consécutive.

Mais que peut-on trouver dans cette version Hélios?

Pour commencer, je dirais que le projet JDT s'est encore amélioré. Ajout d'un panneau avec plus de détails dans la vue de déboggage, détection des objets alloués mais non utilisés, compteur d'instances dans le deboggeur si la VM utilisée est supérieure ou égale à 1.6, possibilité de corriger plusieurs problèmes similaires en une seule opération (quickfix), quelques améliorations dans l'outil d'internationalisation ainsi que plusieurs améliorations notables dans le formatteur de code. À ce sujet là, le formateur peut maintenant est facilement désactivé pour une partie seulement d'une unité de compilation.
Pour plus de détails je vous invite à aller voir la démo sur le site Eclipse live.

Helios fournit une première intégration de l'outil de version distribué qu'est GIT dans Eclipse. Ce projet est appelé eGit. Le support est encore en phase de développement et requiert encore beaucoup d'usage de la ligne de commande. La prochaine version 0.9 prévue la première mise à jour d'Hélios en septembre devrait considérablement améliorer les choses. Pour une démo des possibilités actuelles, je recommande encore le site Eclipse Live avec cette démo.

La version Hélios apporte son lot d'amélioration dans p2. p2 fournit ses premières APIs et est maintenant beaucoup plus stable. Il devient très facile de mettre à jour sa version d'Eclipse au fur et à mesure que des mises à jour sont disponibles.

En lien avec les améliorations de p2, Eclipse fournit maintenant un moyen d'installer facilement de nouveaux composants dans Eclipse. L'outil s'appelle Eclipse MarketPlace et est directement disponible depuis le menu "Aide" ou "Help" en anglais.
Eclipse MarketPlace permet de rechercher des composants selon des mots clés et de les installer directement dans l'instance courante. C'est très pratique pour tester des composants. p2 permet également de tout désinstaller si un composant fonctionne mal ou ne répond pas aux attentes.

Un autre projet qui est également fourni avec Hélios est XText, un projet très intéressant qui peut s'avérer très utile à qui veut définir un nouvel éditeur pour Eclipse. Il fournit un ensemble d'outil pour définir sans trop de fatiguer un éditeur avec assistant de code et autres outils indispensables pour tout éditeur digne de ce nom. Voir le lien suivant: XText.

La version Hélios fournit également de nombreuses améliorations dans les projets existants tels que WTP, Mylyn, EMF,...

De mon point de vue c'est indéniablement une bonne version à utiliser. Le seul point que j'aimerais voir améliorer dans l'avenir avec la notion de "Release train" où plusieurs dizaines de projets sortent simultanément est la notion d'intégration. Le côté simultané ne devrait pas enlever que tous les projets ne sont pas encore proprement intégrés. L'interface utilisateur devient une véritable usine à gaz lorsque tous les projets sont installés dans la même instance d'Eclipse. Il reste encore à ce niveau beaucoup de travail. À la décharge des différents projets, cet aspect n'a jamais été un critère lors de la sortie d'une nouvelle version d'Eclipse. Je pense qu'avec la maturité de certains projets, il serait maintenant intéressant de faire des progrès à ce niveau. Ça ne faciliterait que davantage l'adoption d'Eclipse par un plus grand nombre de personnes.

Pour conclure je tiens à mentionner un petit problème qui survient sur Windows avec la dernière mise à jour de la machine virtuelle d'Oracle (anciennement Sun). La mise à jour 21 (JDK6_21) ne récupère pas correctement le paramètre pour la taille du PermGenSpace. Eclipse se retrouve alors à court de mémoire assez rapidement avec des symptômes qui vont du plantage au gel de l'interface sans aucun message d'erreur pertinent. Voir le lien suivant pour le bug qui traite du sujet: 319514 . Une nouvelle mise à jour d'Oracle devrait être disponible prochainement pour revenir à une version qui fonctionne sans aucun autre changement. Un correctif de la part d'Eclipse sera disponible pour la mise à jour 3.6.1.

Voilà j'espère que ce court message vous donnera le goût d'aller essayer Hélios et de nous dire ce que vous en pensez.

Pour Hélios, c'est par ici.

Bonne fin d'été!

Olivier

Thursday, March 18, 2010

API Tooling at Eclipsecon

For the ones that still wonder what API Tooling is all about or what API Tooling can do for you, you should come to this presentation.
If you came to the presentation two years ago about the overview of API Tooling, you will learn more about API usage report and migration reports.


All questions and comments are welcome.

See you there.

JDT at Eclipsecon 2010

Hi,

If you want to find out more about what JDT has done for the Helios release, you might want to come to the following events at Eclipsecon 2010.
1) What's new in JDT? (lightning talk)
2) JDT Fundamentals (2h tutorial)

Of course I will be available for questions, discussions or comments during the whole conference. Send me a message if you want to meet there.

Thanks and see you soon at Eclipsecon.