Java Quiz #2

Trouvez X tel que :

  1. Math.abs(X) < 0
Lire la suite...

Netscape est officiellement mort... vive Firefox !

Souvenirs, souvenirs...

Lire la suite...

De la bonne implémentation du Singleton en Java

Le Singleton est sans doute le plus connu des design patterns, et souvent le premier cité lors des entretiens techniques.

Pourtant, son implémentation correcte en Java est plus complexe qu'il n'y paraît.

Lire la suite...

Egalité et comparaison des chaînes de caractères en Java

La manipulation des chaînes de caractères est une composante importante de tout programme Java. Il est donc important de savoir déterminer leur égalité et, par extension, de pouvoir les comparer entre elles.

Mais beaucoup de paramètres entrent en jeu, comme leur présence dans le pool des chaînes de caractères, leur casse (majuscule/minuscule) et l'accentuation de leurs caractères. Nous allons voir ou revoir ici les mécanismes et possibilités du langage Java dans ce domaine.

Lire la suite...

Java Quiz #1

Petit quiz Java : Indiquez deux façons d'interdire le sous-classement d'une classe donnée ?

La réponse est dans le lien ci-dessous, mais ne trichez pas !

Lire la suite...

Ropes for Java : manipulation efficace des chaînes de caractères

Si vos programmes effectuent des manipulations intensives sur des chaînes de caractères, vous serez heureux de découvrir Ropes for Java.

Les "ropes", basées sur des arbres binaires de caractères, sont infiniment plus rapides que les Strings et StringBuffers/StringBuilders pour toutes les opérations d'ajout (prepend/append), insertion et suppression. En revanche, ils sont généralement plus lents pour les opérations de parcours et de recherche. Il convient donc de les utiliser à bon escient.

Pour profiter au mieux des explications théoriques et des benchmarks, il sera utile de réviser la notation mathématique O(n).

De l'utilité des Enums en Java 5+

O'Reilly publie un court article démontrant l'utilité des Enums (Java 5+) pour représenter et manipuler des chaînes de caractères constantes.

Cette technique offre un moyen simple et élégant d'utiliser des valeurs littérales de type String dans des blocs "switch", et se révèle également fort utile dans l'implémentation de protocoles de type texte (HTTP, IRC...).

W3C : 130 millions de DTD, et moi, et moi, et moi...

Le W3C, organisme qui définit les normes d'Internet, lance un cri d'alarme : il ne pourra bientôt plus servir toutes les demandes de DTD et de Schémas XML...

Lire la suite...

Fin des soldes

On avait bien cru que Microsoft engloutirait Yahoo!, mais la proposition a finalement été rejetée - pour le moment.

Yahoo devra pourtant prendre rapidement position, car la firme de Redmond pourrait choisir d'outrepasser les décisions du comité de direction en s'adressant directement aux actionnaires, ou tenter de nouveau sa chance auprès du nouveau comité devant être élu mi-mars. La pression de Microsoft est donc accablante, d'autant que son offre permettrait effectivement une remise à flot du moteur de recherche #1 en Amérique.

Les analystes de Yahoo! ont donc peu de temps pour trouver une alternative.

Une des options les plus étudiées est un rapprochement avec Google dans les domaines des moteurs de recherche et de la publicité en ligne. Bien qu'ayant récemment investi plusieurs millions de dollars dans le développement de leur propre plateforme ("Panama"), Yahoo! est toujours loin derrière son rival. Cette option leur permettrait donc de redevenir un acteur de premier plan dans ces technologies et de se mettre à l'abri des convoitises de Microsoft grâce aux retombées financières induites, mais poserait d'évidents problèmes de monopole.

Affaire à suivre...

XML : Rétrospective et futur

IBM publie un article intéressant (mais non technique) retraçant les origines de XML, son utilisation actuelle, et son futur probable.

Conçu à l'origine pour la publication de documents (rapports, documents techniques, pages web...), XML a pourtant été peu employé dans ce but, notamment en raison de la complexité et de la mauvaise qualité des outils permettant de le manipuler. Actuellement, il est surtout utilisé dans le domaine du développement logiciel, pour les fichiers de configuration, les exports de données... Pourtant, il opère un retour rapide sur son domaine d'application premier, notamment grâce aux dernières suites bureautiques (OpenOffice, et dans une moindre mesure MS Office) et aux nouveaux protocoles de publication comme APP (Atom Publishing Protocol).

Pourquoi le "double-check locking" ne fonctionne pas

Plusieurs sommités du microcosme Java (David Bacon d'IBM Research, Joshua Bloch de Javasoft, Cliff Click du projet Hotspot JVM...), se sont réunies pour expliquer pourquoi le mécanisme de "double-check locking" ne fonctionne pas.

Pour rappel, cette technique est souvent utilisée (à tort, donc) pour tenter de ne recourir à la synchronisation - coûteuse- d'un bloc de code que si cela est strictement nécessaire, en se basant sur la vérification préalable d'une condition.

Une "Cheatsheet" pour Prototype.js

Le site PerfectionKills, qui explore les infinies possibilités du framework javascript Prototype, vient de publier une "cheatsheet" (feuille récapitulative) indispensable à tout bon programmeur web.

Je vous invite au passage à parcourir les autres articles du site, très intéressants.

Les fibres optiques sous-marines vulnérables

Un simple accident maritime au large de l'Egypte a récemment endommagé les fibres optiques sous-marines desservant le Moyen-orient et l'Asie, affectant ainsi les communications de près de 75 millions de personnes (dont près de 60 millions d'Indiens). L'installation, ayant coûté près de 660M€, est en cours de réparation.

Cet incident a surtout permis une prise de conscience sur la fragilité et la vulnérabilité des équipements de communication au niveau mondial, et l'on craint qu'il ne donne de nouvelles idées aux mouvements terroristes sévissant dans la région...

Plus de détail chez The Guardian, avec notamment une excellente carte des fibres sous-marines :

SeaCableHi.jpg

Python 3.0 : la rupture

Les développeurs de Python (menés par Guido Van Rossum, à l'origine du projet) ont récemment annoncé que la version 3.0 de ce puissant langage de script ne serait pas rétro-compatible avec la branche 2.x. La faute à une réécriture complète du moteur, le but recherché étant de débarrasser le langage de tous les "hacks" et bugs accumulés au fil des ans, afin de repartir sur une base saine. Tous les programmes et modules d'extension devront être profondément modifiés pour fonctionner sur cette nouvelle version.

Une telle rupture est suffisamment rare dans le petit monde des langages de programmation pour provoquer surprise et interrogation parmi la communauté des utilisateurs, car l'habitude est plutôt à un conservatisme forcené - on se souvient des contorsions auxquelles Sun doit se livrer pour intégrer certaines nouvelles fonctionnalités dans Java (les "génériques" pour Java5, les "closures" pour Java7...) sans briser la rétro-compatibilité...

Certaines sociétés hésiteront donc à franchir le pas et préféreront rester sur la branche 2.x actuelle, dont le développement continue. Par exemple, Google estime qu'environ 15% de son code repose sur Python : on imagine aisément l'ampleur de la migration...

Développement d'un pool d'objets

Voici un article que j'ai écrit il y a deux ans, dans lequel je vous propose de suivre une démarche progressive pour développer un pool d'objets à la fois thread-safe et générique (au sens Java5). En partant d'une version basique (une simple liste), nous allons l'améliorer et ajouter les fonctionnalités une à une.

Même si l'accent est davantage mis sur la démarche que sur le résultat final, le pool pourra être adapté et utilisé sur des projets réels !

Lire la suite...

C'est les soldes ! (suite)

Après Oracle et Sun (voir cette news), c'est au tour de Microsoft de casser sa (grosse) tirelire pour s'offrir un nouveau jouet, en l'occurrence le célèbre moteur de recherche Yahoo!.
Lire la suite...