引用處
IKVM.NET 是在 .NET 上實作 JVM 的 Open Source Project。他可以讓你在 .NET 中使用 Java CLASS,也可以在 Java 中使用 NET。IKVM 主要包含三個部份:
1. .NET 上的 JVM 實作
2. .NET 實作版本的 Java Class Library
3. 賦予 Java 和 .NET 互通的工具
本文將透過 IKVM 進行簡單的互通測試
首先撰寫一個簡單的 Java 程式如下:
JavaToNet.java
public class JavaToNet
{
public static void main(String[] args)
{
System.out.println("This is a demonstration Program which\n");
System.out.println("shows the conversion of Java class to\n");
System.out.println("a .NET dll\n");
}
public String getAuthor(){
return "Chui-Wen Chiu(Arick)";
}
public static double AddNumbers(double a,double b){
double c = 0;
c = a + b;
return c;
}
// 產生 Exception
public static double hasException(){
return 1/0;
}
}
使用 Java SE5 的編譯器產生 CLASS
javac JavaToNet.java
然後使用 IKVM 產生 .NET Assembly
ikvmc -target:library JavaToNet.class
此時,我們已經擁有一個 .NET Assembly,接著撰寫一個簡單的測試程式如下:
dotNetTest.cs
using System;
using System.ComponentModel;
using System.Windows.Forms;
using TimeZone = java.util.TimeZone;
namespace WindowsApplication2
{
public class Program{
static void Main()
{
// 使用 java 內建類別
Console.WriteLine(TimeZone.getDefault().getDisplayName());
// 使用自訂類別靜態方法
Console.WriteLine(JavaToNet.AddNumbers(999, 888));
// 使用自訂類別物件方法
JavaToNet jt = new JavaToNet();
Console.WriteLine(jt.getAuthor());
// 引發 Exception
try{
JavaToNet.hasException();
}catch(System.DivideByZeroException ){
Console.WriteLine("Has Exception");
}
}
}
}
編譯程式
csc /r:JavaToNet.dll /r:IKVM.GNU.Classpath.dll dotNetTest.cs
執行OK
沒有留言:
張貼留言