vendredi 1 janvier 2010

Avant de commencer, bonne année 2010 à tous!

La plupart des IDEs pour Java sur le marché (dont les deux plus populaires, Eclipse et NetBeans) sont eux-mêmes écrits en Java. Cela n'est pas vraiment un problème en soit: j'utilise Eclipse pour le développement Java, et NetBeans est de facto l'IDE officiel pour le langage. De plus, écrire dans un langage avec un outil écrit dans le même langage est plutôt commun: Visual Studio est écrit en C++, et ça reste quand même un des meilleurs IDEs C++ existant.

Cherchant toujours n'importe quel prétexte pour me mettre à coder, je me suis dis qu'il serait intéressant de coder un IDE pour Java, avec la particularité qu'il serait écrit en C++. L'objectif étant d'en faire un assez rapide et prenant relativement peu de mémoire (n'importe qui utilisant Eclipse et NetBeans sait à quel point il sont lents au démarrage et qu'ils bouffent les ressources de façon assez impressionnante). Surtout que je n'ai jamais vraiment fait d'interface graphique en C++.

Les fonctionnalités prévues seraient plutôt standard: coloration syntaxique, auto-complétion, refactoring, etc. Je préfère ne pas être trop ambitieux et ne pas parler tout de suite de débogueur.

Je sais, je sais, rien de tout cela n'est facile. Mais en fait, tout ceci n'est qu'un gros prétexte pour ce qui me fascine le plus: l'auto-complétion. Cela impliquerait de construire en mémoire une représentation des classes (avec leurs méthodes et attributs) présentes dans le classpath. Lorsque l'utilisateur entrera du code et aura besoin d'aide de la part de l'IDE, on pourrait ensuite faire une recherche selon divers critères dans cette représentation et présenter les résultats au programmeur, qui n'aurait qu'à choisir l'élément le plus approprié.

Le plus difficile reste donc de construire la représentation en question. Et c'est là que ça se corse. Un compilateur Java insère des métadonnées dans le bytecode généré pour permettre certaines choses comme la réflexion. Il serait donc techniquement possible d'extraire les métadonnées du code pour construire la représentation. Sauf que ce n'est pas simple à faire. Je pourrais bien sûr exécuter javap avec les bons paramètres et ensuite analyser la sortie, mais ça me semble un peu paresseux.

En tout cas, je vais faire des recherches sur le sujet, et je vous reviens avec ce que j'ai trouvé.

4 commentaires:

Frank a dit…

Assez intéressant. J'ai hâte de voir ce que ça va donner!

Eric a dit…

Bonne chance et bonne année!

Yann a dit…

Je suis tout à fait d'accord avec toi sur le principe que les IDE java sont lents. Peut de personnes n'osent le reconnaitre car on arrive facilement dans des débats qui n'en finissent plus :S . Il faut être objectif comme tu l'a été : Les IDE remplissent bien leurs rôles et une fois lancé (sur un PC "standard") ils tournent bien, mais ils consomment et peuvent être lent..

J'ai eu le même genre d'idée mais cela s'étendait à d'autres langages (qui sont couvert par netbeans ou/et eclipse). Le principe de netbeans avec son plugins (Plugin On Demand) est je pense un "truc" à aussi prendre en compte (ça fait une appli totalement modulaire :O), car ça permet suivant les besoins d'avoir un IDE totalement brut qui fait une chose (et qui ma foi doit être rapide) ou d'avoir un IDE peut être un peu plus gourmand mais avec tout ce qu'il faut (navigateur de code, debugger, etc..).

Je vais suivre ça de prêt, bonnes recherches et à bientôt.

Mohamed Amine a dit…

Vraiment sympa ton blog, je suis tombé dessus juste par pur hasard.
Continue comme ça :)

Enregistrer un commentaire