27 Ocak 2012 Cuma

Java Jar Dosyalarını .Net Koduna Derlemek IKVM Projesi

Bugün Mono Projesi Hakkında araştırma yaparken IKVM diye bir Projeye rasladım Bu Projenin bize vadettiği şey JAVA byte kodunu .NET in CIL yani .net koduna derlemek ve .net ile birlikte java kodumuzu kullanabilmeyi sağlamakmış.Mono içinde desteği var.
Projenin anasayfası
http://www.ikvm.net/devguide/net2java.html
Bu yazımda nacizane ikvm projesini inceleyeceğim henüz performansı konusunda bir bilgi sahipi olmasamda gün geilr hayat kurtarabilir.
Bu bağlamda javada eclipse idesini kullanarak basit bir sınıf ve method oluşturup bunu .net dll ine derleyip c#.net üzerinde kullanacağım

Ikvm Projesi incelememize başlayalım
Proje anasayfasınıı bir kere daha vermek istiyorum
http://www.ikvm.net/devguide/net2java.html  download bölümünden indirmeye başlayın.
İlk olarak eclipse ide mi açıyorum
Eclipse  Açık kaynak kodlu bir ide olup internetten indirebilirsiniz.
default package da Deneme isimli bir java sınıfı oluşturuyorum
Ekran Görüntüsü için tıklayın
public class Deneme {
 public String denemeMethod(){
 return “Ozgur www.sondefterim.com IKVM Denemesidir”;
 }
}
public class Deneme {public String denemeMethod(){return “Ozgur www.ceviz.net IKVM Denemesidir”;
}
}

Projenin üstüne sağ tıklayıp export dedim ve jar file olarak projemi dişarı export ettim. şimdi java byte kodumuzu .net içinde kullanmaya geldi sıra IKVM Projesini
http://www.ikvm.net/devguide/net2java.html 
Ben bu yazıyı yazarken çoktan bilgisayarıma inmiş açıkçası heyecan verici bakaılm ne olacak icon smile Java Jar Dosyalarını .Net Koduna Derlemek IKVM Projesi programlama )
Dizinimi açtığımda
ilk dikkatımı çeken şey 32 bit ve 64 bit uygulamalar için iki ayrı dizin oldu jar dosyamızı .net dll ine derlesek bile uygulamamızın koşacağı bilgisayara göre IKVM nin verdiği bu dll lerden birin pojemize reference etmemiz gerekmekte oldugunu tahmin ediyorum.Tabi bu kullandığımız bileşenlere vede sınıflara göre değişebilir bu örneğimizde buna ihtiyaç olmayacak
Şu Linkteki ikvm ile ilgili yazılar gerçekten dikkate değer
Java ile .NET Uygulamarı geliştirin gibi başlıklar var. Sanırım javacıların ocağına incir ağacı dikmek için hazırlanmış bir proje icon smile Java Jar Dosyalarını .Net Koduna Derlemek IKVM Projesi programlama ))
Visual studio 2008 ı açıp bir windows forms projesi başlatıyorum amacım java byte kodunun içindeki methodu .net uygulamam içinden çağrımak ve textbox a bunu yazdırmak…
İlk olarak yapmam gerek şey jar olarak export ettiğim java kodumu .net cil koduna derlemek cil nedir diyenler için bknz google
javatoNET.jar export edilmiş dosyamın adıdır.
ben IKVM yi masaüstüne indirdim
C:\Documents and Settings\User\Desktop\ikvm-0.42.0.6\bin
Şekilde ikvm min binin bulunduğu dizin
şimdi Çalıştır cmd yazalım
->cd C:\Documents and Settings\User\Desktop\ikvm-0.42.0.6\bin
yazıp ikvm nin bulunduğu dizine girdim.
ikvmc javatoNET.jar dediğimde proje .net exesine derlenmişti ama bana dll lazımdı
dll e derlemek için(
http://sourceforge.net/apps/mediawiki/ikvm/index.php?title=Ikvmc
yukarıdaki linkte console dan göndereceğiniz parametreler var)
şöyle yapmak gerekiyormuş.
->ikvmc -target:library “C:\Documents and Settings\User\Desktop\javatoNET.jar”
C:\Documents and Settings\User\Desktop\ikvm-0.42.0.6\bin dizinimin içinde artık javanın byte kodundan .nete derlenmiş dllım durmakta
vs 2008 c# windows forms projeme bir adet textbox ve bir adet buton koydum
solution explorer penceremden gelip add refernce dedim .net olarak derlediğim java dll sini projeme ekleyeceğim.
add reference browse dedikten sonra projeme .net olarak derlediğim dll i ekledim. javatoNET.dll si ikvm nin bin dizinin altında idi.
dilerseniz object browserdan dll nın içeriğine bakabilirsiniz.
IKVM.OpenJDK.Core u da dahil etmem gerektiği konusunda bir hata mesajı aldım onuda dahil ettim add reference olarak
ve artık hazırız buton ve textboxum formun üstündeler butonun üstüne tıklayarak onclick event ına şu kodu yazıyoum
Bilindiği üzere java sınıfımın ismi deneme idi
        private void button1_Click(object sender, EventArgs e)
        {
            Deneme javadannesne = new Deneme();
            textBox1.Text = javadannesne.denemeMethod();
        }
ve efenim mutlu sonumuzun ekran görüntüsü icon biggrin Java Jar Dosyalarını .Net Koduna Derlemek IKVM Projesi programlama
ekran görüntüsü
Proje aynı şekilde .net assemblylerini de (cil kodunuda)  java tarafında kullanabilmemizi sağlıyor.
Pek Kullanacağımı düşünmesemde gerçekten ilginç bir konu umarım faydalı bir iş yapmışımdır bu konuda pek türkçe kaynak bulmak mümkün değildi.Bir mum yakmış olduğumu düşünüyorum …….
ÖZGÜR DEMİREL
demirelozgur@gmail.com

Hiç yorum yok:

Yorum Gönder