2009-10-06 6 views
3

Je suis simplement curieux mais je veux savoir s'il est possible de supprimer totalement les bibliothèques de classes standard Java venant avec la JVM et en commencer une nouvelle depuis le début [à la ClassPath ]Ecrire une alternative à la librairie de classes standard Java

Si cela est possible, quelles classes DOIVENT être implémentées comme minimum? (Object et String me viennent à l'esprit, mais ... je ne sais pas).

Une telle chose casse une licence? Est-il possible de dire à la commande "java" de "ne pas utiliser le fichier rt.jar"?

Merci à l'avance,

Ernesto

+0

Une question intéressante. Je ne pense pas que la bibliothèque standard soit définie dans la spécification de langage ou dans la spécification de machine virtuelle; est-ce seulement les documents API qui le définissent? –

+0

@mmyers - il existe un kit de compatibilité technologique, dont Apache Software Foundation a eu beaucoup à dire: http://en.wikipedia.org/wiki/Apache_Harmony#Difficulties_to_obtain_a_TCK_license_from_Sun – McDowell

Répondre

5

Vous pouvez utiliser l'option -Xbootclasspath pour spécifier votre propre ensemble de classes de base. Si vous suivez ce chemin, vous rencontrerez probablement beaucoup de problèmes si vous envisagez d'utiliser également des bibliothèques tierces, car elles dépendront de l'API principale et toute incohérence dans votre version causera probablement des bogues.

Au strict minimum, vous devrez probablement tout réimplémenter dans le paquetage java.lang. En plus de Object et String, les classes wrapper primitives doivent être présentes pour que l'auto-boxing fonctionne. Je ne pense pas que vous pouvez remplacer java.lang sans un peu de code natif pour faire fonctionner les choses comme des threads.

0

Non, ce n'est pas faisable du tout. Je veux dire, bien sûr, vous pourriez le faire, mais vous n'allez pas le faire mieux qu'une grande société ou un projet open source avec des années d'expérience et un grand nombre de gourous Java. Cela pourrait être amusant de le découvrir.

+0

yesss! Je pensais à la partie drôle! ;) – ebasconp

2

En théorie, "oui" c'est possible, mais vous pourriez aussi avoir besoin d'implémenter votre propre JVM! Les relations entre la JVM et certaines des classes de bas niveau (Object, Class, Thread, etc.) sont telles que ces classes doivent être implémentées dans le cadre de la JVM.

En pratique, c'est une tâche tellement lourde que vous y travailleriez pour le reste de votre vie, et les chances sont que personne n'utiliserait votre code même si vous réussissiez. Cela ne me semble pas "amusant".

Une telle chose brise une licence?

Sans objet. Mais si vous avez déjà essayé de le publier en l'appelant "Java", les avocats de Sun seraient à votre poursuite pour violation de la marque. Vous ne pouvez légalement appeler votre implémentation Java que si elle a été validée par rapport au Sun TCK.

Mais je ne veux pas être totalement décourageant. Si vous voulez pirater les composants internes d'une JVM ou des choses comme ça, le JNode project est toujours à la recherche de nouvelles personnes.

Questions connexes