JVM Nasıl Çalışır Yazı Serisi – Java Just In Time Compiler (JIT) Nasıl Çalışır?
Java’yı çoğu programcı yorumlanan (interpreted) dil olarak bilir. Java’nın yavaş olduğu efsanesi de başlangıcını da burada bulur. Bytekod olarak derlenen Java sınıfları Java sanal makinesi (Java Virtual Machine – JVM)…
Dediklerine tamamen katiliyorum Ozcan. Hatta bazilari bu gibi “agile” teknoloji ornekelrini ele alip, kurumsal buyukluk ve kalitedeki yazilimlarla kiyaslamalar bile yapiyor.
Eline saglik.
Hocam merhabalar,
Cache için yazılan attribute ler de bu kategoriye giriyor o zaman, örneğin;
[CustomCache]
public class SomeClass{…}
Ama bu attribute sınıfını yazmazsak da, SomeClass içerisinde yazmamız gerekecek. Bunun için illa bir framework mü kullanmak gerekli, ya da bu konuda nasıl bir yol izleyeceğiz. SomeClass sınıfı, nasıl hem caching, hem logging hem de exception handling yapacak?
SomeClass sinifi caching, logging ve hatta hatta exception handling kendisi yapmamali. Yaparsa, yazimda bahsettigim durum ortaya cikiyor: birden cok fazla sorumlulugu olan bir sinif.
Caching, logging ve exception handling seperation of concerns mantigi cercevesinde AOP (Aspect Oriented Programming) kullanilarak aspekt olarak programlanip, uygulamaya eklenebilecek genel islevlerdir. Her uygulama parcasi bu tür islevleri kendisi implemente etmek yerine, AOP kullanilarak bu tür aspektler isletme mantigi ile harmanlanabilir. Bu sekilde SomeClass gibi isletme mantigi ihtiva eden siniflar kendi isleri ile mesgul olurken, AOP ile bahsettigim aspektler dolayli olarak isletme mantigi üzerinde kosturulabilir. Böylece sadece bir isle mesgul olan siniflar programlamak mümkün.
Aslında bunu anladım, AOP yi de bayağı araştırdım. Bunun iyi olarak uygulandığı açık kaynak bir proje ve ya makale var mı? Yani örnek görmeden tam olarak anlaşılmıyor. Yapının nasıl olması gerektiğini anlıyorum, ama çalışır halini görmek farklı olacaktır.
Pratik Spring (http://www.pratikprogramci.com/urun/pratik-spring-core-ozcan-acar/) kitabimda AOP’yi anlatan bir bölüm mevcut. Bunun yani sira AspectJ catisina bir göz atabilirsiniz.