Archive for 12月, 2012
-
Hello, AWT(Jasmin) World!
Posted on 12月 31st, 2012 by cx20
AWT(Java)
AWT(Abstract Window Toolkit) は Java で GUI を扱うためのライブラリである。
J2SE 1.2 以降は AWT を拡張した Swing が使われることが多くなっている。
以下は Jasmin による AWT の使用例となっている。ソースコード
; Produced by NeoJasminVisitor (tinapoc) ; http://tinapoc.sourceforge.net ; The original JasminVisitor is part of the BCEL ; http://jakarta.apache.org/bcel/ ; Sun Dec 02 00:54:44 JST 2012 .bytecode 51.0 .source Hello.java .class public Hello .super java/awt/Frame .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 6 0: new Hello 3: dup 4: ldc "Hello, World" 6: invokespecial Hello/<init>(Ljava/lang/String;)V 9: astore_1 .line 7 10: aload_1 11: iconst_1 12: invokevirtual Hello/setVisible(Z)V Label1: .line 8 15: return .end method .method <init>(Ljava/lang/String;)V .limit stack 4 .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 11 0: aload_0 1: aload_1 2: invokespecial java/awt/Frame/<init>(Ljava/lang/String;)V .line 13 5: aload_0 6: new java/awt/FlowLayout 9: dup 10: iconst_0 11: invokespecial java/awt/FlowLayout/<init>(I)V 14: invokevirtual Hello/setLayout(Ljava/awt/LayoutManager;)V .line 15 17: new java/awt/Label 20: dup 21: ldc "Hello, AWT World!" 23: invokespecial java/awt/Label/<init>(Ljava/lang/String;)V 26: astore_2 .line 16 27: aload_0 28: aload_2 29: invokevirtual Hello/add(Ljava/awt/Component;)Ljava/awt/Component; 32: pop .line 18 33: aload_0 34: new HelloWindowAdapter 37: dup 38: invokespecial HelloWindowAdapter/<init>()V 41: invokevirtual Hello/addWindowListener(Ljava/awt/event/WindowListener;)V .line 19 44: aload_0 45: sipush 640 48: sipush 480 51: invokevirtual Hello/setSize(II)V Label1: .line 20 54: 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 00:54:57 JST 2012 .bytecode 51.0 .source Hello.java .class HelloWindowAdapter .super java/awt/event/WindowAdapter .method <init>()V .limit stack 1 .limit locals 1 .var 0 is this LHelloWindowAdapter; from Label0 to Label1 Label0: .line 24 0: aload_0 1: invokespecial java/awt/event/WindowAdapter/<init>()V Label1: 4: return .end method .method public windowClosing(Ljava/awt/event/WindowEvent;)V .limit stack 1 .limit locals 2 .var 0 is this LHelloWindowAdapter; from Label0 to Label1 .var 1 is arg0 Ljava/awt/event/WindowEvent; from Label0 to Label1 Label0: .line 26 0: iconst_0 1: invokestatic java/lang/System/exit(I)V Label1: .line 27 4: return .end method
コンパイル&実行方法
C:¥> java -jar jasmin.jar Hello.j HelloWindowAdapter.j C:¥> javaw Hello
実行結果
+------------------------------------------+ |Hello, World! [_][~][X]| +------------------------------------------+ |Hello, AWT World! | | | | | | | | | | | | | | | | | | | +------------------------------------------+
-
Hello, Java 3D(Fantom) World!
Posted on 12月 30th, 2012 by cx20
Java 3D
Java 3D は Java による 3D グラフィックライブラリである。
以下は Fantom による Java 3D の使用例となっている。ソースコード
using [java] java.awt using [java] javax.swing using [java] javax.media.j3d using [java] javax.vecmath using [java] com.sun.j3d.utils.universe using concurrent class Hello { Void main() { frame := JFrame("Hello, World") { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) setSize(640, 480) } canvas3D := createCanvas3D(frame) scene := createSceneGraph() connect(canvas3D, scene) frame.setVisible(true) Actor.sleep(Duration.maxVal) } Canvas3D createCanvas3D( JFrame frame ) { frame.getContentPane().setLayout( BorderLayout() ) config := SimpleUniverse.getPreferredConfiguration() canvas3D := Canvas3D( config ) frame.getContentPane().add( canvas3D ) return canvas3D } BranchGroup createSceneGraph() { objRoot := BranchGroup() mover := moveTextBack() spinner := createSpinner() rotator := RotationInterpolator(Alpha(-1, 4000), spinner, Transform3D(), 0.0f, 3.14159265f * 2) rotator.setSchedulingBounds( BoundingSphere() ) spinner.addChild(rotator) objRoot.addChild(mover) mover.addChild(spinner) spinner.addChild( createTextShape()) setLighting(mover) return objRoot } TransformGroup createSpinner() { spinner := TransformGroup() spinner.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE) return spinner } TransformGroup moveTextBack() { transform3D := Transform3D() transform3D.setTranslation( Vector3f(0.0f, 0.0f, -10.0f)) return TransformGroup(transform3D) } Shape3D createTextShape() { textAppear := Appearance() textAppear.setMaterial(Material()) font3D := Font3D( Font("MS Pゴシック", Font.PLAIN, 1), FontExtrusion()) textGeom := Text3D(font3D, "Hello, Java 3D World!") textGeom.setAlignment(Text3D.ALIGN_CENTER) textShape := Shape3D() textShape.setGeometry(textGeom) textShape.setAppearance(textAppear) return textShape } Void setLighting( TransformGroup objMove ) { light := DirectionalLight() light.setInfluencingBounds(BoundingSphere()) light.setDirection(Vector3f(0.0f,0.0f,-1.0f)) light.setColor(Color3f(1.0f, 1.0f, 1.0f)) objMove.addChild(light) } Void connect( Canvas3D canvas3D, BranchGroup scene ) { universe := SimpleUniverse(canvas3D) universe.getViewingPlatform().setNominalViewingTransform() universe.addBranchGraph(scene) } }
実行方法
C:¥> fan Hello.fan
実行結果
+------------------------------------------+ |Hello, World! [_][~][X]| +------------------------------------------+ |Hello, Java 3D World! | | | | | | | | | | | | | | | | | | | +------------------------------------------+
-
Hello, Java 2D(Fantom) World!
Posted on 12月 29th, 2012 by cx20
Java 2D
Java 2D は Java による 2D グラフィックライブラリである。
以下は Fantom による Java 2D の使用例となっている。ソースコード
using [java] java.awt using [java] javax.swing using concurrent class Hello { Void main() { canvas := Canvas() frame := JFrame("Hello, World") { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) add(canvas) setSize(640, 480) setVisible(true) canvas.createBufferStrategy(2) strategy := canvas.getBufferStrategy g2 := (Graphics2D)strategy.getDrawGraphics while(true) { g2.drawString("Hello, Java 2D World!", 0, 16 ) strategy.show Actor.sleep(200ms) } } Actor.sleep(Duration.maxVal) } }
実行方法
C:¥> fan hello.fan
実行結果
+------------------------------------------+ |Hello, World! [_][~][X]| +------------------------------------------+ |Hello, Java 2D World! | | | | | | | | | | | | | | | | | | | +------------------------------------------+
-
Hello, JavaFX(Fantom) World!
Posted on 12月 28th, 2012 by cx20
JavaFX(Jython)
JavaFX は Java による RIA 向けの GUI ライブラリならびにプラットフォームである。
類似の RIA プラットフォームとしては Adobe Flex や Microsoft Silverlight などがある。
以下は Fantom による JavaFX の使用例となっている。ディレクトリ構成
%FANTOM_HOME% /lib /java /ext … ライブラリ配置場所 1. %FANTOM_HOME%libjavaetc にライブラリ配置 jfxrt.jar 2. パスの確認 C:¥> fan compilerJava::ClassPath <実行結果> --- ClassPath --- Packages Found: : com.sun.javafx [15] : ClassPath Files: : file:/%FANTOM_HOME%/lib/java/ext/jfxrt.jar
ソースコード
using [java] javafx.application::Application using [java] javafx.stage::Stage using [java] javafx.scene::Scene using [java] javafx.scene.layout::HBox using [java] javafx.scene.control::Label class Hello : Application { Void main(Str[] args) { Application.launch(Hello#->toClass, args) } override Void start(Stage? stage) { hbox := HBox() scene := Scene(hbox, 640.0f, 480.0f) label := Label("Hello, JavaFX World!") hbox.getChildren().add( label ) stage.setScene(scene) stage.setTitle("Hello, World") stage.show() } }
実行方法
C:¥> fan Hello.fan
実行結果
+------------------------------------------+ |Hello, World! [_][~][X]| +------------------------------------------+ |Hello, JavaFX World! | | | | | | | | | | | | | | | | | | | +------------------------------------------+
-
Hello, SWT(Fantom) World!
Posted on 12月 27th, 2012 by cx20
SWT(Fantom)
SWT(Standard Widget Toolkit) は Java で GUI を扱うためのライブラリである。
IBM により AWT や Swing を置き換える目的で作成された。
以下は Fantom による SWT の使用例となっている。ソースコード
using [java] org.eclipse.swt using [java] org.eclipse.swt.widgets::Display using [java] org.eclipse.swt.widgets::Shell using [java] org.eclipse.swt.widgets::Label using [java] org.eclipse.swt.layout::FillLayout using concurrent class Hello { Void main() { display := Display() shell := Shell(display) shell.setText("Hello, World") layout := FillLayout(SWT.VERTICAL) shell.setLayout(layout) label := Label(shell,SWT.BORDER) label.setText("Hello, SWT World!") shell.setSize( 640, 480 ) shell.open() while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep() } } display.dispose() } }
実行方法
C:¥> fan hello.fan
実行結果
+------------------------------------------+ |Hello, World! [_][~][X]| +------------------------------------------+ |Hello, SWT World! | | | | | | | | | | | | | | | | | | | +------------------------------------------+
-
Hello, Swing(Fantom) World!
Posted on 12月 26th, 2012 by cx20
Swing(Fantom)
Swing は AWT(Abstract Window Toolkit) を拡張したものであり Java で GUI を扱うためのライブラリである。
J2SE 1.2 以降は AWT よりも Swing が使われることが多くなっている。
以下は Fantom による Swing の使用例となっている。ソースコード
using [java] javax.swing using [java] java.awt.event using concurrent class Hello { Void main() { label := JLabel("Hello, Swing World!") { setVerticalAlignment(JLabel.TOP) } frame := JFrame("Hello, World") { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) getContentPane.add(label) setSize(640, 480) add(label) setVisible(true) } Actor.sleep(Duration.maxVal) } }
実行方法
C:¥> fan Hello.fan
実行結果
+------------------------------------------+ |Hello, World! [_][~][X]| +------------------------------------------+ |Hello, Swing World! | | | | | | | | | | | | | | | | | | | +------------------------------------------+
-
Hello, AWT(Fantom) World!
Posted on 12月 25th, 2012 by cx20
AWT(Fantom)
AWT(Abstract Window Toolkit) は Java で GUI を扱うためのライブラリである。
J2SE 1.2 以降は AWT を拡張した Swing が使われることが多くなっている。
以下は Fantom による AWT の使用例となっている。ソースコード
using [java] java.lang using [java] java.awt using [java] java.awt.event using concurrent class Hello { Void main() { label := Label("Hello, AWT World!") frame := Frame("Hello, World") { addWindowListener( HelloWindowAdapter.make|WindowEvent e| {}) add(label) setSize(640, 480) setLayout(FlowLayout(FlowLayout.LEFT)) setVisible(true) } Actor.sleep(Duration.maxVal) } } class HelloWindowAdapter : WindowAdapter { new make(|WindowEvent| cb) { this.cb = cb } override Void windowClosing(WindowEvent? e) { System.exit(0) } |WindowEvent| cb }
実行方法
C:¥> fan hello.fan
実行結果
+------------------------------------------+ |Hello, World! [_][~][X]| +------------------------------------------+ |Hello, AWT World! | | | | | | | | | | | | | | | | | | | +------------------------------------------+
-
Hello, Java 3D(Rhino) World!
Posted on 12月 24th, 2012 by cx20
Java 3D(Rhino)
Java 3D は Java による 3D グラフィックライブラリである。
以下は Rhino による Java 3D の使用例となっている。ソースコード
importPackage(java.awt); importPackage(javax.swing); importPackage(javax.media.j3d); importPackage(javax.vecmath); importPackage(com.sun.j3d.utils.universe); var frame = new JFrame(); frame.setTitle("Hello, World"); frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); frame.setSize(640,480); var canvas3D = createCanvas3D(frame); var scene = createSceneGraph(); connect(canvas3D, scene); frame.setVisible(true); function createCanvas3D( frame ) { frame.getContentPane().setLayout(new BorderLayout()); var config = SimpleUniverse.getPreferredConfiguration(); var canvas3D = new Canvas3D(config); frame.getContentPane().add(canvas3D); return canvas3D; } function createSceneGraph() { var objRoot = new BranchGroup(); var mover = moveTextBack(); var spinner = createSpinner(); var rotator = new RotationInterpolator(new Alpha(-1, 4000), spinner, new Transform3D(), 0.0, Math.PI * 2); rotator.setSchedulingBounds( new BoundingSphere() ); spinner.addChild(rotator); objRoot.addChild(mover); mover.addChild(spinner); spinner.addChild( createTextShape()); setLighting(mover); return objRoot; } function createSpinner() { var spinner = new TransformGroup(); spinner.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); return spinner; } function moveTextBack() { var transform3D = new Transform3D(); transform3D.setTranslation(new Vector3f(0.0, 0.0, -10.0)); return new TransformGroup(transform3D); } function createTextShape() { var textAppear = new Appearance(); textAppear.setMaterial(new Material()); var font3D = new Font3D(new Font("MS Pゴシック", Font.PLAIN, 1), new FontExtrusion()); var textGeom = new Text3D(font3D, new String("Hello, Java 3D World!")); textGeom.setAlignment(Text3D.ALIGN_CENTER); var textShape = new Shape3D(); textShape.setGeometry(textGeom); textShape.setAppearance(textAppear); return textShape; } function setLighting( objMove ) { var light = new DirectionalLight(); light.setInfluencingBounds(new BoundingSphere()); light.setDirection(new Vector3f(0.0,0.0,-1.0)); light.setColor(new Color3f(1.0, 1.0, 1.0)); objMove.addChild(light); } function connect( canvas3D, scene ) { var universe = new SimpleUniverse(canvas3D); universe.getViewingPlatform().setNominalViewingTransform(); universe.addBranchGraph(scene); } while(1) {java.lang.Thread.sleep(1000);}
実行方法
C:¥> jrunscript Hello.js
実行結果
+------------------------------------------+ |Hello, World! [_][~][X]| +------------------------------------------+ |Hello, Java 3D World! | | | | | | | | | | | | | | | | | | | +------------------------------------------+
-
Hello, Java 2D(Rhino) World!
Posted on 12月 23rd, 2012 by cx20
Java 2D(Rhino)
Java 2D は Java による 2D グラフィックライブラリである。
以下は Rhino による Java 2D の使用例となっている。ソースコード
importPackage(java.awt); importPackage(javax.swing); var frame = new JFrame(); frame.setTitle("Hello, World"); frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); frame.setSize(640,480); canvas = new Canvas(); frame.add(canvas); frame.setVisible(true); canvas.createBufferStrategy(2); strategy = canvas.getBufferStrategy(); g2 = strategy.getDrawGraphics(); while(true) { g2.drawString("Hello, Java 2D World!", 0, 16 ); strategy.show(); java.lang.Thread.sleep(200); } while(1) {java.lang.Thread.sleep(1000);}
コンパイル&実行方法
C:¥> jrunscript hello.js
実行結果
+------------------------------------------+ |Hello, World! [_][~][X]| +------------------------------------------+ |Hello, Java 2D World! | | | | | | | | | | | | | | | | | | | +------------------------------------------+
-
Hello, SWT(Rhino) World!
Posted on 12月 21st, 2012 by cx20
SWT(Rhino)
SWT(Standard Widget Toolkit) は Java で GUI を扱うためのライブラリである。
IBM により AWT や Swing を置き換える目的で作成された。
以下は Rhino による SWT の使用例となっている。ソースコード
importPackage(org.eclipse.swt); importPackage(org.eclipse.swt.widgets); importPackage(org.eclipse.swt.layout); var display = new Display(); var shell = new Shell(display); shell.setText("Hello, World"); var layout = new FillLayout(SWT.VERTICAL); shell.setLayout(layout); var label = new Label(shell,SWT.BORDER); label.setText("Hello, SWT World!"); shell.setSize( 640, 480 ); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose();
実行方法
C:¥> jrunscript -cp org.eclipse.swt.win32.win32.x86_3.6.1.v3655c.jar;. hello.js
実行結果
+------------------------------------------+ |Hello, World! [_][~][X]| +------------------------------------------+ |Hello, SWT World! | | | | | | | | | | | | | | | | | | | +------------------------------------------+