/ Accueil
/ Logiciels libres, et autres créations plus modestes
| Ecrire
Java est un langage très performant d'un point de vue industriel : il est accompagné d'une bibliothèque très riche qui permet un réel développement rapide, et ceci même sans outils de développement dernier cri. Il existe de nombreuses bibliothèques C++ mais aucune n'a la richesse et l'homogénéité du JDK : il faut en réunir de nombreuses de conception différente ce qui rend difficile leur prise en main et parfois des problème de compatibilité ou de mauvaise intéropérabilité.
De son coté, Java souffre du soucis extrême de ses concepteurs de faciliter le travail des développeurs. L'absence d'héritage multiple, la gestion automatique de la mémoire imposée, et l'imposante machine virtuel, sont parfois trop contraignants.
L'un des points fort de java est son mécanisme de gestion de la mémoire. Il n'y a plus de pointeurs (dont la manipulation est réputée difficile), il n'y a plus à se soucier quand libérer la mémoire.
Pour être en mesure d'offrir le même service, NaJA considère que ajouter une propriété à un objet est en fait une relation entre objet. Toutes ces relations sont mémorisées pour être en mesure à chaque instant de connaître l'utilisation réelle d'un objet. Chaque lien est encapsulé dans une pointeur étendu (smart pointer). Ainsi la gestion des relations est transparente et le ramasse-miettes est simplement déclenché à la fin de portée de chacun des pointeurs étendus.
Java implémente directement la notion de package telle qu'on peut la présenter dans les méthodes de modélisation object comme UML. Ce niveau structurant supplémentaire peut être d'un grand secours dès qu'un programme devient imposant. Cela aide également à définir une modularité à plus grande échelle. C++ a introduit les espaces de nommage (namespace) pour aider à supprimer les ambiguïtés provoquées par des définitions homonymes, qui deviennent vite inévitables avec la croissance rapide d'un projet. Mais le principal interêt des packages Java est de définir une visibilité propre pour les membres d'une classe : package private. Cela permet de restreindre l'accès à une propriété ou une méthode pour un groupe de classe, le package. Une telle visibilité est disponible avec NaJA grâce à la macro package_private.
Le plus gros du travail : recréer toutes ces classes qui font la richesse de java. de plus il ne s'agit pas d'une simple recopie des sources Java. Le C++ permet une expression plus subtile et le but de NaJA n'est pas de faciliter le portage de sources java vers C++ mais d'offrir une bibliothèque standard d'un niveau équivalent, tout en conservant la richesse de C++.
NaJA est un développement libre sous licence GNU-GPL. Sa page d'accueil est http://naja.eduvax.net/.
mis à jour le : 15/04/2006 - 23:18