Ce tutoriel est composé de plusieurs sous tutoriels.
Le but final est de pouvoir à la volée intégrer du code tapé par l'utilisateur, compiler ce code à la volée, et l'intégrer comme si c'était une classe du projet.
Pour pouvoir faire cela il faut deux choses :
  1. Pouvoir compiler du code à la volée sans demander à l'utilisateur d'avoir la JDK d'installée ni embarquer des "jar" de la JDK avec l'application
  2. Un éditeur sympa pour taper du code avec suggestion et aide
Pour le code nous avons pour le moment choisit de pouvoir saisir directement des instructions byte code.
Les explications données sur le byte code sont là pour aider la saisie, mais aussi si vous voulez ajouter une étape intermédiaire, comme un code plus évolué pour le traduire en byte code ces informations peuvent aussi vous aider.
Vous pouvez trouver une version complète du code (Et bien d'autres choses) sur notre GithHub : GithHub JHelpGG
Le code compilé de l'éditeur en Java 8 peut se récupérez aussi sur notre GitHub : Jar compilé de l'éditeur L'éditeur vous permettra de tester les exemples et de faire vos propres essais.

Sommaire

0) Améliorations

10/08/2016

I) Le byte code

I.1) Introduction

I.2) Structure d'une classe

I.3) Ce que contient le Constant Pool

I.4) Structure d'une méthode

I.5) Format du fichier

I.6) Les instructions de code

I.6.a) Instruction de déclaration de variable locale

I.6.b) Instructions de chargement de valeur

I.6.c) Instructions de sauvegarde de valeur

I.6.d) Instructions de retour

I.6.e) Instructions de calcul

I.6.f) Instructions pour convertir

I.6.g) Instructions pour pousser des constantes

I.6.h) Instruction pour incrémenter

I.6.i) Instructions pour "sauter" dans la méthode

I.6.i.1) Instruction de saut quoi qu'il arrive
I.6.i.2) Instructions conditionnelles comparant à zéro ou null
I.6.i.3) Instructions conditionnelles comparant deux valeurs
I.6.i.4) Instructions de comparaison
I.6.i.5) Instructions de saut switch
I.6.i.6) Instructions de saut de type sous routine

I.6.j) Instructions pour invoqué des méthodes

I.6.k) Instruction pour la création d'objet

I.6.l) Instructions pour les tableaux

I.6.l.1) Instructions pour la création de tableaux
I.6.l.2) Instructions pour lire, écrire dans les tableaux
I.6.l.3) Instruction pour avoir la taille d'un tableau

I.6.m) Instructions de manipulation de la pile

I.6.n) Instructions pour "casté des objets

I.6.o) Instruction pour les exceptions

I.7) Glossaire

II) Compilation du code

II.1) La compilation

II.1.a) Rôle des classes de jhelp.compiler.compil

II.1.b) Étapes de la compilation

II.2) Utilisation de jhelp.compiler.instance.ClassManager

II.3) Détails sur les classes d'un point de vu du byte code

III) L'éditeur de byte code

III.1) Tour de l'éditeur

III.2) Code de l'éditeur

III.2.a) jhelp.asm.editor.ui.DialogLaunchMethod

III.2.b) jhelp.asm.editor.ui.ClassesTree

III.2.c) jhelp.asm.editor.ui.ComponentEditor

III.2.d) jhelp.asm.editor.ui.CompilerEditorPanel

III.3) Le package jhelp.gui

III.3.a) jhelp.gui.JHelpAutoStyledTextArea

III.3.a.1) La coloration syntaxique
III.3.a.2) Les numéros de lignes et le texte supplémentaire à droite

III.3.b) jhelp.gui.JHelpSuggestion

III.3.c) Deux derniers pour la route