Programmation en Java bytecode

Je cherche à écrire un programme court (peut-être un Hello World) en Java bytecode. Je veux juste écrire le bytecode en utilisant mon éditeur de texte et l’exécuter. Comment pourrais-je faire ça? Vous avez un exemple? Merci!

Vous pourriez essayer Jasmin !

 .class public HelloWorld .super java/lang/Object .method public static main([Ljava/lang/Ssortingng;)V .limit stack 3 .limit locals 1 getstatic java/lang/System/out Ljava/io/PrintStream; ldc "Hello World." invokevirtual java/io/PrintStream/println(Ljava/lang/Ssortingng;)V return .end method 

Vous le comstackz en utilisant:

 > java -jar jasmine.jar hello.j

Et puis vous l’exécutez comme n’importe quelle classe:

 > java HelloWorld
 Bonjour le monde.

Mettre à jour

Je vois que votre question mentionne “sans utiliser Javac ou Java”. Pourriez-vous préciser comment vous vouliez dire cette déclaration?

J’ai créé un nouvel assembleur de bytecode Java qui est rétrocompatible avec Jasmin, mais ajoute également beaucoup de nouvelles fonctionnalités et simplifie légèrement la syntaxe.

Voici un exemple de la façon dont vous pourriez écrire un programme Hello World.

 .class public hello .super java/lang/Object .method public static main : ([Ljava/lang/Ssortingng;)V .limit stack 10 .limit locals 10 getstatic java/lang/System out Ljava/io/PrintStream; ldc "Hello World!" invokevirtual java/io/PrintStream println (Ljava/lang/Object;)V return .end method 

J’ai également écrit un tutoriel sur l’assemblage de bytecode . Il ne couvre actuellement que Hello, World, mais je peux le continuer s’il y a de l’intérêt.

Peut-être que cet article peut vous aider à démarrer: les bases de Bytecode (un peu vieux, mais vous en aurez l’idée).

Le format de fichier de classe sera également utile: D

Le code d’octet est écrit sous forme d’octets réels, qui ne sont généralement pas facilement modifiables par un éditeur de texte normal.

Cela signifie que vous aurez besoin de quelque chose qui convertit une représentation textuelle en binary. Un endroit raisonnable pour commencer serait un assembleur comme Jasmin .

Avez-vous envisagé JBE (Java Bytecode Editor)?
Il est basé sur la bibliothèque d’ingénierie Bytecode d’Apache ( BCEL )