Vinnie’nin Mutfağından : Java ile Sınıf Derleme
java July 27th, 2008
Java 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
Başka Manyak Konular
- Vinnie’nin Mutfağından : Mustang’e atlayalım, WebServis çağıralım
- Vinnie’nin Mutfağından : Vekil sınıflar java.lang.reflect.Proxy
- Java ile Oracle Stored Procedure üzerinden ResultSet almak
- Java5.0 ile gelen Enum classı-enum keywordu nasıl kullanılır?
- Vinnie’nin mutfağından : Ortaya karışık Java Script Engine, JSON, Web Service, Google Maps
July 30th, 2008 at 11:56
iyiymiş, tebrik ederim