Java Quiz #10

En C++, pour dupliquer un objet, on utilise habituellement le constructeur par recopie. C'est un constructeur qui n'attend qu'un argument, de même type que le type de celui que l'on construit (voir par exemple le constructeur String(String)).

En Java, Sun recommande d'implémenter l'interface Cloneable et d'utiliser la méthode clone(), plutôt qu'un constructeur par recopie, pour dupliquer un objet.

Pourquoi ?

Lire la suite...

Wikipedia : la version allemande publiée en livre

La version allemande de Wikipedia sera bientôt publiée sous la forme d'un livre. Attendu pour septembre, l'ouvrage de 1000 pages regroupera les résumés des 50'000 articles les plus consultés sur le site. Afin de garantir la qualité et l'exactitude de cette encyclopédie d'un nouveau genre, les données seront vérifiées par des éditeurs professionnels, et les textes retravaillés.

Cette initiative est intéressante, car pour beaucoup le papier reste le support de référence, le seul vecteur possible de l'information sérieuse. En enjambant le fossé numérique, Wikipedia parviendra sûrement à se faire davantage connaître et à gagner en légitimité auprès des populations techno-sceptiques.

IBM développe un nouveau type de puces mémoire

Le New Scientist se fait l'écho des progrès récents d'IBM au sujet d'un nouveau type de mémoire à usage informatique : la mémoire "racetrack".

Selon ses inventeurs et différents scientifiques travaillant dans des domaines connexes (dont la spintronique), elle serait à la fois extrêmement véloce et peu chère à produire, combinant ainsi les avantages des disques durs (bon marché mais lents) et des mémoires flash (rapides mais chères).

En revanche, il ne faut pas s'attendre à la voir arriver de sitôt dans nos machines : c'est la toute première fois qu'IBM parvient à en démontrer la faisabilité technique...

Eclipse tips #1 : save actions

"Save actions" est une nouvelle option introduite avec Europa (Eclipse 3.3), qui simplifie la vie du développeur.

Elle permet de définir un ensemble d'actions qui seront effectuées à chaque sauvegarde d'un fichier source Java, comme par exemple :

  • Formatage du code
  • Nettoyage des imports : suppression des imports inutiles, réordonnement...
  • Ajout des parenthèses autour des conditions, et des accolades autour du corps des tests et boucles
  • Ajout des mots-clés final et this si nécessaire
  • Suppression du code inutile : variables locales inutilisées, "casts" superflus...
  • Java 5+ : conversion automatique des boucles en boucles améliorées, ajout de l'annotation @Override...
  • ...
Lire la suite...

Java Quiz #9

Mais que fait donc ce code ?

  1. public abstract class Parent
  2. {
  3. public Parent()
  4. { setMessage("World");
  5. }
  6.  
  7. protected abstract String getMessage();
  8. protected abstract void setMessage(String message);
  9.  
  10. public static void main(String... args)
  11. {
  12. Fille fille = new Fille();
  13. System.out.println("Hello " + fille.getMessage());
  14. }
  15. }
  16.  
  17. class Fille extends Parent
  18. {
  19. private String message = null;
  20.  
  21. @Override
  22. public String getMessage()
  23. { return message;
  24. }
  25.  
  26. @Override
  27. protected void setMessage(String message)
  28. { this.message = message;
  29. }
  30. }
Lire la suite...

Sun and stars : Java surveille la planète

Dans un récent communiqué de presse de chez Sun, on apprend que le couple Solaris 10 + Java RTS, certifié "temps réel", deviendra la plateforme technique pour les applications de contrôle du radar de surveillance spatiale d'Eglin - un joli jouet de 100x47 mètres, 1250 tonnes et 32 Mégawatts, utilisé pour garder à l'oeil les différents objets gravitant autour de la planète.

Après le serveur et le mobile, Java n'a pas fini de conquérir de nouveaux marchés... et le mythe de la lenteur des machines virtuelles s'effrite chaque jour un peu plus.

Java Quiz #8

Que fait le code suivant ?

  1. public class Loops
  2. {
  3. public static int increment(int i)
  4. {
  5. loop: while (true)
  6. {
  7. try
  8. { return (++i);
  9. }
  10. finally
  11. { break loop;
  12. }
  13. }
  14. }
  15.  
  16. public static void main(String... args)
  17. {
  18. System.out.println(Loops.increment(2));
  19. }
  20. }
Lire la suite...

Vista : l'UAC conçu pour embêter les utilisateurs

L'un des arguments de vente de Vista, le dernier système d'exploitation de Microsoft, est sa sécurité améliorée. En particulier, le simple utilisateur n'est plus censé posséder les droits d'administrateur par défaut. Seul hic : les éditeurs logiciels, forts de 15 ans d'expérience (ou plutôt de mauvaises habitudes) sur cet OS, tiennent ces droits pour acquis, et la plupart de leurs produits ne peuvent fonctionner sans.

Que faire ? Impossible de révoquer totalement ces droits sous peine de réduire la logithèque compatible à quelques titres seulement ; et hors de question de conserver l'ancien système, porte ouverte à toutes les erreurs et aubaine pour tous les virus et pirates informatiques.

Lire la suite...

Rétrospective des Filesystems

Ars Technica publie une rétrospective des systèmes de fichiers, sur des machines allant du vénérable CP/M aux derniers produits d'Apple et de Microsoft, en passant par Amiga et BeOS.

Pour l'anecdote, on apprend ainsi que les MacIntosh de 1984 géraient déjà les noms de fichiers de 64 caractères, alors que les fichiers système des dernières version de Windows sont encore nommés selon le pattern 8.3 (8 caractères pour le nom du fichier, 3 pour son extension) - par prudence ou lucidité, qui sait.

Autre détail amusant :

The BeOS needed a file system, and its initial goals were grand indeed. The original hierarchical file system on the BeBox (dubbed OFS) linked directly to a relational database, allowing for all kinds of flexibility and power. Unfortunately, the database-driven design was too slow and there were problems keeping the database and file system in sync.

Toute similitude avec les annonces de Microsoft au cours des dix dernières années...

Eclipse RCP : développer un éditeur de texte avec coloration syntaxique

La société SERLI Informatique publie sur son blog un excellent article, très clair et progressif, démontrant comment développer un éditeur de texte doté de coloration syntaxique sous Eclipse RCP.

A lire d'urgence si vous vous intéressez à cette plateforme !

Sécurité informatique : Google mise sur la formation et la transparence

Toute entreprise disposant d'un système d'information informatisé craint par-dessus tout que celui-ci ne soit attaqué et corrompu. Si les motifs (intelligence économique, malveillance ou simple bêtise) et les acteurs (pirate externe ou employé interne) des attaques informatiques peuvent varier, les conséquences en sont en revanche souvent dramatiques.

Lire la suite...

Java Quiz #7

Que fait le code suivant ?

  1. public class Parser
  2. {
  3. public static int parse(String valeur)
  4. {
  5. try
  6. {
  7. return Integer.parseInt(valeur);
  8. }
  9. catch (NumberFormatException nfEx)
  10. {
  11. return 2;
  12. }
  13. finally
  14. {
  15. return 3;
  16. }
  17. }
  18.  
  19. public static void main(String... args)
  20. {
  21. System.out.println(parse("1"));
  22. System.out.println(parse("1.0"));
  23. }
  24. }
Lire la suite...

Faut-il laisser les développeurs sélectionner leurs outils ?

En entreprise, les développeurs ont rarement le choix de leurs outils de travail.
Il semblerait pourtant naturel de laisser les gens du métier sélectionner les outils dont ils ont besoin pour être efficaces : vous n'iriez pas conseiller votre boulanger sur le choix de son four à pain ?

Lire la suite...

MoreCSS : javascript au secours de CSS

La librairie Javascript MoreCSS permet d'appliquer des fonctions Javascript à des éléments HTML simplement en les stylant à l'aide de propriétés CSS spéciales. Cette approche, bien qu'assez surprenante au premier abord, permet de bénéficier à la fois de la simplicité de la syntaxe CSS et de la puissance du code Javascript.

On peut en revanche regretter que le code du fichier javascript soit obfusqué, malgré la licence Creative Commons...