Vinnie’nin Mutfağından : Java ile Sınıf Derleme

java July 27th, 2008

VinnieJava 6 çatısındaki yeni özellikleri keşfetmeye devam ediyoruz. Bugün mutfağımızda kod içerisinde sınıf derleyeceğiz. Bunu Java 6 (Mustang)’deki compiler API ile yapacağız. Derleyici API JSR 199 altında yapılan çalışmalardan sonra platforma eklendi.

Önce geçici bir dizine geçiyoruz. Aşağıdaki kodu CompileTest.java adında bir dosyaya yazıp derliyoruz:

public class CompileTest {
  public static void main(String[] args) throws Exception {
    java.io.Writer w = new java.io.OutputStreamWriter(
      new java.io.FileOutputStream("PostLoad.java"));
    w.write("public class PostLoad{" +
      "public static void test(){System.out.print(\"test ok\");}}");
    w.close();
    javax.tools.JavaCompiler jc =
      javax.tools.ToolProvider.getSystemJavaCompiler();
    jc.run(null, null, null, "PostLoad.java");
    Class<?> pl = Class.forName("PostLoad");
    java.lang.reflect.Method m = pl.getMethod("test");
    m.invoke(null);
  }
}

Derlediğimiz kodu çalıştırdığımızda ekranda “test ok” yazısını görüyoruz. Şimdi kodu satır satır inceleyeceğiz. Böylece ne olup bittiğini daha iyi anlayacağız.
3-7: Yeni bir java dosyası oluşturuyoruz ve içine derleyeceğimiz kodumuzu yazıyoruz, kapatmayı unutmuyoruz.
8-9: Sistemden java derleyicisini alıyoruz. Sistemde tanımlı olan derleyici döndürülüyor.
10: Derleyiciyi çalıştırıyoruz. Girdi, çıktı ve hata akımlarını null olarak veriyoruz, bunlar öntanımlı olarak sistem akımları olarak tanımlanıyor.
11: Sisteme yeni derlediğimiz sınıfı yüklemesini istiyoruz.
12: test adlı metodu buluyoruz
13: Bulduğumuz metodu çalıştırıyoruz.

Bu noktada “test ok” yazıldığında dinamik olarak derleme yapabildik demektir.

Hepimize Afiyet Olsun
Vinnie


Social Bookmarking
Add to: Mr. Wong Add to: Digg Add to: Del.icio.us Add to: Reddit Add to: StumbleUpon Add to: Slashdot Add to: Netscape Add to: Furl Add to: Yahoo Add to: Google Add to: Technorati Add to: Newsvine Add to: Ma.Gnolia



Başka Manyak Konular


Lütfen Yorumlarınızı bizimle paylaşın.

One Response to “Vinnie’nin Mutfağından : Java ile Sınıf Derleme”

  1. crash Says:

    iyiymiş, tebrik ederim

Leave a Reply

Site Navigation

Categories

Archives

Meta

Recent Enteries

Recent Comments

FireStats iconPowered by FireStats