Hello, Java 2D(Jasmin) World!
Posted on 1月 4th, 2013 by cx20
Java 2D
Java 2D は Java による 2D グラフィックライブラリである。
以下は Jasmin による Java 2D の使用例となっている。
ソースコード
; Produced by NeoJasminVisitor (tinapoc)
; http://tinapoc.sourceforge.net
; The original JasminVisitor is part of the BCEL
; http://jakarta.apache.org/bcel/
; Sun Dec 02 01:34:06 JST 2012
.bytecode 50.0
.source Hello.java
.class public Hello
.super javax/swing/JFrame
.method public static main([Ljava/lang/String;)V
.limit stack 3
.limit locals 2
.var 0 is arg0 [Ljava/lang/String; from Label0 to Label1
Label0:
.line 8
0: new Hello
3: dup
4: ldc "Hello, World"
6: invokespecial Hello/<init>(Ljava/lang/String;)V
9: astore_1
.line 9
10: aload_1
11: iconst_1
12: invokevirtual Hello/setVisible(Z)V
Label1:
.line 10
15: return
.end method
.method <init>(Ljava/lang/String;)V
.limit stack 3
.limit locals 3
.var 0 is this LHello; from Label0 to Label1
.var 1 is arg0 Ljava/lang/String; from Label0 to Label1
Label0:
.line 13
0: aload_0
1: aload_1
2: invokespecial javax/swing/JFrame/<init>(Ljava/lang/String;)V
.line 14
5: aload_0
6: iconst_3
7: invokevirtual Hello/setDefaultCloseOperation(I)V
.line 15
10: aload_0
11: sipush 640
14: sipush 480
17: invokevirtual Hello/setSize(II)V
.line 17
20: new HelloPanel
23: dup
24: invokespecial HelloPanel/<init>()V
27: astore_2
.line 18
28: aload_0
29: aload_2
30: invokevirtual Hello/add(Ljava/awt/Component;)Ljava/awt/Component;
33: pop
Label1:
.line 19
34: return
.end method |
; Produced by NeoJasminVisitor (tinapoc)
; http://tinapoc.sourceforge.net
; The original JasminVisitor is part of the BCEL
; http://jakarta.apache.org/bcel/
; Sun Dec 02 01:34:06 JST 2012
.bytecode 50.0
.source Hello.java
.class public Hello
.super javax/swing/JFrame
.method public static main([Ljava/lang/String;)V
.limit stack 3
.limit locals 2
.var 0 is arg0 [Ljava/lang/String; from Label0 to Label1
Label0:
.line 8
0: new Hello
3: dup
4: ldc "Hello, World"
6: invokespecial Hello/<init>(Ljava/lang/String;)V
9: astore_1
.line 9
10: aload_1
11: iconst_1
12: invokevirtual Hello/setVisible(Z)V
Label1:
.line 10
15: return
.end method
.method <init>(Ljava/lang/String;)V
.limit stack 3
.limit locals 3
.var 0 is this LHello; from Label0 to Label1
.var 1 is arg0 Ljava/lang/String; from Label0 to Label1
Label0:
.line 13
0: aload_0
1: aload_1
2: invokespecial javax/swing/JFrame/<init>(Ljava/lang/String;)V
.line 14
5: aload_0
6: iconst_3
7: invokevirtual Hello/setDefaultCloseOperation(I)V
.line 15
10: aload_0
11: sipush 640
14: sipush 480
17: invokevirtual Hello/setSize(II)V
.line 17
20: new HelloPanel
23: dup
24: invokespecial HelloPanel/<init>()V
27: astore_2
.line 18
28: aload_0
29: aload_2
30: invokevirtual Hello/add(Ljava/awt/Component;)Ljava/awt/Component;
33: pop
Label1:
.line 19
34: return
.end method
; Produced by NeoJasminVisitor (tinapoc)
; http://tinapoc.sourceforge.net
; The original JasminVisitor is part of the BCEL
; http://jakarta.apache.org/bcel/
; Sun Dec 02 01:34:19 JST 2012
.bytecode 50.0
.source Hello.java
.class HelloPanel
.super javax/swing/JPanel
.method <init>()V
.limit stack 1
.limit locals 1
.var 0 is this LHelloPanel; from Label0 to Label1
Label0:
.line 22
0: aload_0
1: invokespecial javax/swing/JPanel/<init>()V
Label1:
4: return
.end method
.method public paintComponent(Ljava/awt/Graphics;)V
.limit stack 4
.limit locals 3
.var 0 is this LHelloPanel; from Label0 to Label1
.var 1 is arg0 Ljava/awt/Graphics; from Label0 to Label1
Label0:
.line 24
0: aload_1
1: checkcast java/awt/Graphics2D
4: astore_2
.line 25
5: aload_2
6: ldc "Hello, Java2D World!"
8: iconst_0
9: bipush 16
11: invokevirtual java/awt/Graphics2D/drawString(Ljava/lang/String;II)V
Label1:
.line 26
14: return
.end method |
; Produced by NeoJasminVisitor (tinapoc)
; http://tinapoc.sourceforge.net
; The original JasminVisitor is part of the BCEL
; http://jakarta.apache.org/bcel/
; Sun Dec 02 01:34:19 JST 2012
.bytecode 50.0
.source Hello.java
.class HelloPanel
.super javax/swing/JPanel
.method <init>()V
.limit stack 1
.limit locals 1
.var 0 is this LHelloPanel; from Label0 to Label1
Label0:
.line 22
0: aload_0
1: invokespecial javax/swing/JPanel/<init>()V
Label1:
4: return
.end method
.method public paintComponent(Ljava/awt/Graphics;)V
.limit stack 4
.limit locals 3
.var 0 is this LHelloPanel; from Label0 to Label1
.var 1 is arg0 Ljava/awt/Graphics; from Label0 to Label1
Label0:
.line 24
0: aload_1
1: checkcast java/awt/Graphics2D
4: astore_2
.line 25
5: aload_2
6: ldc "Hello, Java2D World!"
8: iconst_0
9: bipush 16
11: invokevirtual java/awt/Graphics2D/drawString(Ljava/lang/String;II)V
Label1:
.line 26
14: return
.end method
コンパイル&実行方法
C:¥> java -jar jasmin.jar Hello.j HelloPanel.j
C:¥> javaw Hello |
C:¥> java -jar jasmin.jar Hello.j HelloPanel.j
C:¥> javaw Hello
実行結果
+------------------------------------------+
|Hello, World! [_][~][X]|
+------------------------------------------+
|Hello, Java 2D World! |
| |
| |
| |
| |
| |
| |
| |
| |
| |
+------------------------------------------+ |
+------------------------------------------+
|Hello, World! [_][~][X]|
+------------------------------------------+
|Hello, Java 2D World! |
| |
| |
| |
| |
| |
| |
| |
| |
| |
+------------------------------------------+
Tags: Java 2D
Categories: Jasmin, Java, Java 2D