Archive for the ‘Java VM’ Category
-
Hello, Quercus World!
Posted on 5月 1st, 2013 by cx20
Quercus
Quercus は Java による PHP 実装である。
PHP の構文が使える他、Java のライブラリが使用できる。ソースコード
ソースコード(Java ライブラリを使用した場合)
<?php import java.lang.System; System::out->println( "Hello, Quercus World!" ); ?>
実行方法
C:¥> java -cp resin.jar com.caucho.quercus.CliQuercus hello.php
実行結果
Hello, Quercus World!
-
Hello, Fantom World!
Posted on 1月 27th, 2012 by cx20
Fantom
Fantom は Java VM もしくは .NET 共通言語ランタイム上で動作するオブジェクト指向言語である。構文は Java や C# に似ている。
言語の名前は当初、作者が住んでいる住所にちなんで「Fan」と付けられたが、検索しやすいように「Fantom」に変更された。
ソースコード
#!/usr/bin/env fan class Hello { static Void main() { echo("Hello, Fantom World!") } }
実行方法(スクリプトファイルを指定して実行)
$ fan hello.fan
実行方法(実行権限を付与して実行)
$ chmod +x hello.fan $ ./hello.fan
実行方法(Java VM で実行)
$ fan -version --Druntime=java Fantom Launcher Copyright (c) 2006-2011, Brian Frank and Andy Frank Licensed under the Academic Free License version 3.0 Java Runtime: java.version: 1.6.0_29 java.vm.name: Java HotSpot(TM) 64-Bit Server VM java.vm.vendor: Apple Inc. java.vm.version: 20.4-b02-402 java.home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home fan.platform: macosx-x86_64 fan.version: 1.0.61 fan.env: sys::BootEnv fan.home: /usr/local/Cellar/fantom/1.0.61/libexec $ fan --Druntime=java hello.fan
実行方法(.NET Framework で実行)
C:¥> fan -version --Druntime=dotnet Fantom Launcher Copyright (c) 2006-2011, Brian Frank and Andy Frank Licensed under the Academic Free License version 3.0 .NET Runtime: clr.version: 2.0.50727.5448 sys.platform: win32-x86 sys.version: 1.0.61 C:¥> fan --Druntime=dotnet hello.fan
実行結果
Hello, Fantom World!
-
Hello, Oxygene World!
Posted on 1月 24th, 2012 by cx20
Oxygene
Oxygene は RemObjects Software 社による .NET または Java 環境向けのプログラミング言語である。
Embarcadero 社の Delphi Prism のプログラミング言語として採用されている。
コンパイラ単体は「Command Line Compiler」として無償提供されている。
C# 同様に、UNIX 環境向けの .NET Framework 互換プロジェクト「Mono」により他の OS でも動作させることができる。ソースコード(.NET ライブラリを使用した場合)
namespace hello; interface type Hello = class public class method Main(args: array of String): Integer; end; implementation class method Hello.Main(args: array of String): Integer; begin System.Console.WriteLine('Hello, Oxygene World!'); end; end.
ソースコード(Java ライブラリを使用した場合)
namespace hello; interface type Hello = class public class method Main(args: array of String): Integer; end; implementation class method Hello.Main(args: array of String): Integer; begin System.out.println('Hello, Oxygene World!'); end; end.
コンパイル&実行方法(.NET プログラムとしてコンパイル&実行)
C:¥> oxygene HelloDotNet.pas -type:exe -mode:Net C:¥> HelloDotNet
コンパイル&実行方法(Java プログラムとしてコンパイル&実行)
C:¥> oxygene HelloJava.pas -mode:Java C:¥> java -jar hellojava.jar
実行結果
Hello, Oxygene World!
-
Hello, Java VM Assembler World!
Posted on 1月 6th, 2012 by cx20
Java VM Assembler
Java VM アセンブラは Java VM の中間コード(バイトコード)を生成するアセンブラである。
主要な Java VM アセンブラとしては、Jasmin 等がある。
ソースコード
.class public Hello .super java/lang/Object .method public ()V aload_0 invokespecial java/lang/Object/()V return .end method .method public static main([Ljava/lang/String;)V .limit stack 2 getstatic java/lang/System/out Ljava/io/PrintStream; ldc "Hello, Java VM World!" invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V return .end method
上記コードは以下の Java のソースに対応する。
クラスファイルを tinapoc と言った逆アセンブラや javap で逆アセンブル(javap -c Hello)することでアセンブリコードを得られる。public class Hello { public static void main( String[] args ) { System.out.println( "Hello, Java VM World!" ); } }
コンパイル&実行方法(Jasmin)
$ java -jar jasmin.jar Hello.j $ java Hello
実行結果
Hello, Java VM World!