Archive for the ‘Java’ Category

  1. 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!                     |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  2. 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!                      |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  3. 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!                         |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  4. 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!                       |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  5. 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!                         |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  6. Hello, Java 3D(Rhino) World!

    Posted on 12月 24th, 2012 by cx20

    Java 3D(Rhino)

    Java 3DJava による 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!                     |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  7. 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!                     |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  8. 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!                         |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  9. Hello, Swing(Rhino) World!

    Posted on 12月 20th, 2012 by cx20

    Swing(Rhino)

    Swing は AWT(Abstract Window Toolkit) を拡張したものであり Java で GUI を扱うためのライブラリである。
    J2SE 1.2 以降は AWT よりも Swing が使われることが多くなっている。
    以下は Rhino による Swing の使用例となっている。

    ソースコード

    importPackage(javax.swing);
     
    var frame = new JFrame();
    frame.setTitle("Hello, World");
    frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    frame.setSize(640,480);
     
    var label = new JLabel("Hello, AWT World!");
    label.setVerticalAlignment(JLabel.TOP);
    frame.add(label);
    frame.setVisible(true);
     
    while(1) {java.lang.Thread.sleep(1000);}

    実行方法

    C:¥> jrunscript Hello.js

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, Swing World!                       |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  10. Hello, AWT(Rhino) World!

    Posted on 12月 19th, 2012 by cx20

    AWT(Rhino)

    AWT(Abstract Window Toolkit) は Java で GUI を扱うためのライブラリである。
    J2SE 1.2 以降は AWT を拡張した Swing が使われることが多くなっている。
    以下は Rhino による AWT の使用例となっている。

    ソースコード

    importPackage(java.awt);
    importPackage(java.awt.event);
     
    var frame = new Frame();
    frame.setTitle("Hello, World");
    frame.addWindowListener(function(e, methodName) {
        if (e.getID() == WindowEvent.WINDOW_CLOSING) {
            java.lang.System.exit(0);
        }
    });
    frame.setSize(640,480);
    frame.setLayout(new FlowLayout(FlowLayout.LEFT));
     
    var label = new Label("Hello, AWT World!");
    frame.add(label);
    frame.setVisible(true);
     
    while(1) {java.lang.Thread.sleep(1000);}

    実行方法

    C:¥> jrunscript hello.js

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, AWT World!                         |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+