Chain of Responsibility Tasarım Şablonu

Chain of responsibility sorumluluk zinciri anlamına gelmektedir. Sisteme gönderilen bir istediğin (komut) hangi nesne tarafından cevaplanması gerektiğini bilmediğimiz durumlarda ya da isteği yapan nesne ve servis sağlayan nesne arasında sıkı bir bağ oluşmasını engellememiz gerektiğinde Chain of Responsibility tasarım şablonu kullanılır. Okumaya devam et

Flyweight (Sinek Siklet) Tasarım Şablonu

Java dilinde yazılan programlar içinde sınıflar ve bu sınıflardan oluşturulan nesneler kullanır. Bazen aynı sınıftan yüzlerce, belki binlerce nesne oluşturup, kullanıyor olabiliriz. Bu gibi durumlarda çok nesne oluşturulduğu için sistem performansı kötüye gidebilir. Flyweight tasarım şablonu kullanılarak, kullanılan nesne adedini aşağıya çekebiliriz.

Okumaya devam et

Proxy (Vekil) Tasarım Şablonu

Oluşturulmaları zaman alıcı ve sistem kaynaklarını zorlayan nesnelere vekalet eden nesnelere proxy nesneleri adı verilir. Bu nesneler vekil oldukları nesnelerin tüm metodlarına sahiptirler ve kullanıcı sınıf ile vekil olunan nesne arasında aracılık yaparlar. Vekil olan nesne, kullanıcı sınıfa, vekil olunan nesne gibi davranır ve kullanıcı sınıftan gelen tüm istekleri vekil olunan nesneye iletir. Böyle bir yapının kullanılmasının sebebi, gerek olmadığı sürece vekil olunan nesnenin oluşturulmasını engellemektir ya da vekil olunan nesneyi gizlemektir. Okumaya devam et

Facade (Cephe) Tasarım Şablonu

Profesyonel yazılım sistemleri birçok komponentin birleşiminden oluşur. Yazılım esnasında bir çok ekip birbirinden bağımsız, sistemin bütününü oluşturan değişik komponentler üzerinde çalışırlar. Bir komponent, belirli bir işlevi yerine getirmek için hazırlanmış bir ya da birden fazla Java sınıfından oluşmaktadır.

Okumaya devam et

Embedded Jetty

Üzerinde çalıştığım açık kaynaklı JStorage projesinde Tomcat yerine, bir Java sınıfından koşturulabilecek Jetty containeri kullandım. Jetty, Tomcat gibi bir JSP/Servlet containeri. Aşağıdaki örnekte yer aldığı gibi Jetty bir Java (main()) program tarafından çalıştırilabilir.

Okumaya devam et

JAXB ile Java-XML Mapping

JAXB (Java Xml Binding – https://jaxb.dev.java.net/) frameworkü kullanılarak Xml–>Java, Java–>Xml mapping işlemlerini gerçekleştirmek mümkündür. Bu yazılımcıya, Xml dosyalarının ihtiva ettiği verileri Java sınıflarıyla modelleme imkanı sunmakta ve verilerın işlenmesini kolaylaştırmaktadır. JAXB’nın nasıl kullanılabileceğini bir örnek üzerinde sizlere aktarmak istiyorum.

Okumaya devam et

Hibernate Session Problemi: Illegal attempt to associate a collection with two open sessions

BTSoru.com projesini modellerken aşağıdaki hata ile karşılaştım:

org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions
at bt.btsoru.application.manager.question.facade.QuestionManagerImpl.addQuestion(QuestionManagerImpl.java:57)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

Okumaya devam et

BizimAlem.com – Java İle Yüksek Performanslı Web Platformu

11-12 Nisan 2009 tarihlerinde CETURK tarafından Kıbrıs Doğu Akdeniz Üniversitesinde düzenlenen Java Etkinlikleri Günü’nde “Java ile yüksek performanslı web platformlarının oluşturulması” başlıklı bir sunum yaptım.

Özcan Acar

  Web Aplikasyonlarında Yüksek Performans için Caching Mekanizmaları (512,0 KiB, 13.559 yükleme)

  Java İle Yüksek Performanslı Web Platformları (3,1 MiB, 8.453 yükleme)

  BizimAlem.com - Bir Sistemin Tasarlanış Hikayesi (1,8 MiB, 18.126 yükleme)

Okumaya devam et

Command (Komut) Tasarım Şablonu

Command tasarım şablonunu açıklamak için televizyonu uzaktan kumanda etme aletini metafer (mecazi örneklendirme) olarak kullanmak istiyorum. Kanalları değiştirmek için kumanda aleti üzerinde belirli bir tuşa basarız. Tusa basıldığı anda kumanda aleti televizyona bir komut göndererek, kanalın değişmesini sağlar. Aynı şekilde televizyonu açıp, kapatmak ve ses ve renk ayarlarını yapmak için değişik tuşlar kullanılır. Okumaya devam et

Yazılım Mimarisi Tasarımı Günü

CETURK tarafından 21.3.2009 tarihinde Elazığ Fırat Üniversitesinde düzenlenen  Yazılım Mimarisi Tasarımı Günü‘ne konuşmacı olarak katıldım ve Tasarım Prensipleri ve Spring MVC konulu iki sunum yapım. Sunum dosyalarını aşağıdaki linkler üzerinden edinebilirsiniz. Okumaya devam et

Adapter Tasarım Şablonu

Adapter tasarım şablonu yardımı ile, sistemde mevcut bulunan bir sınıfın sunduğu interface (sınıf metodları) başka bir sınıf tarafından kullanilabilir şekilde değiştirilir (adapte edilir). Bu adapter yardımı ile birbiriyle beraber çalışamıyacak durumda olan sınıflar, birlikte çalışabilir hale getirilir.

Okumaya devam et

Spring MVC

Günümüzde kullanılan birçok program web arayüzleriyle internet ve intranet ortamlarında kullanılmaktadır. Web tabanlı programların popüler olmasının sebepleri bir taraftan sadece bir web tarayıcısının (browser) yeterli olması, diğer taraftan da bu tür aplikasyonların bilgisayar üzerinde herhangi bir kurulum (install/setup) gerektirmemesidir.

Okumaya devam et

Java Test Güdümlü Web Yazılımı Semineri

07.03.2009 tarihinde  Işık üniversitesinde çevik süreçleri anlatan ve test güdümlü bir web aplikasyonun nasıl implemente edildiğini pratik bir örnek üzerinde gösteren bir seminer düzenledik. Işık ünivesitesinin daveti üzerine yaptığımız bu seminere Işık üniversitesi ögrencileri yanısıra yazılım endüstrisinde çalışan arkadaşlar katıldı.

Okumaya devam et