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.

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. [source language=’java’] package org.jstorage.tracker.impl.restfull; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jstorage.tracker.TrackerException; import org.jstorage.tracker.impl.AbstractTracker; import org.mortbay.jetty.Connector; import org.mortbay.jetty.Server; import org.mortbay.jetty.bio.SocketConnector; import org.mortbay.jetty.servlet.Context; import org.mortbay.jetty.servlet.ServletHandler; […]

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. Aşağıda bir arabayı modelleyen bir DTD dosyası yer almaktadır. [source language=’java’] [/source] Bu DTD dosyasını kullanarak […]

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) Hatanın oluşmasını sağlayan kod bölümü şu şekilde: [source language=’java’] // Soruyu ekleme bölümü BTUser user = new BTUser(); user.setId(WebSession.get().getUser().getId()); getQuestion().setUser(WebSession.get().getUser()); QuestionManagerResult result = qManager.addQuestion(getQuestion()); [/source] Kod 1.1 Birinci satırda yer […]

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.

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. Düzenlediğimiz diğer seminerleri Kurumsal Java Akademisi sayfalarından takip edebilirsiniz. Spring MVC Eclipse Projesi Tasarım Prensipleri sunumu . Spring MVC sunumu . EOF (End Of […]

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. Adapter tasarım şablonu kendi içinde sınıf ve nesne adapteri olarak ikiye ayrılır. Önce sınıf adapterini inceliyelim.     […]

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. Web tabanlı programlar kullanıcı (client) için herhangi bir kurulum gerektirmezken, server tarafında programın içinde çalışabileceği bir […]

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ı. Düzenlediğimiz diğer seminerleri Kurumsal Java Akademisi sayfalarından takip edebilirsiniz. Seminerde  kullanılan teknolojiler: 1.) Java 5.0 […]

Çevik Java EE Web Semineri

28 Şubat 2009 tarihinde İstanbul IBM Türk’de CETURK tarafından düzenlenen Çevik Süreç ve TDD seminerine konuşmacı olarak katıldım ve Çevik Java EE Web Uygulamaları ve Mimarileri isimli bir sunum yaptım. Sunum dosyasını aşağıdaki link üzerinden edinebilirsiniz. » Eclipse Java Projesi » Tüm resimler

Extreme Programming Hakkında Bazı Soru ve Cevapları

Kullanıcı hikayesi (user story) nedir? XP projelerinde müşteri gereksinimlerinin yer aldığı kullanıcı hikayeleri oluşturulur. Bir kullanıcı hikayesi sistemin tipik bir özelliğini bir ya da iki cümle ile anlatan araçtır. Örneğin üye girişi olan bir sistemde, şöyle bir kullanıcı hikayesi düşünülebilir: Kullanıcı isim ve şifreni kullanarak sisteme giriş yapar. Kullanıcı hikayeleri hikaye kartlarına (story card) yazılır. […]

Neden sürekli entegre edilmeli?

Oluşturduğunuz yazılım sistemini sürekli entegre etmiyorsanız, zamanı gelince toptan entegre etmek zorundasınız.  Bunun, neden yazılım hayatınızda karşılaşabileceğiniz en büyük sorun olabileceğini bir örnek vererek açıklamak istiyorum. Şimdi şunu hayal edin: Yeni bir otomobilin tasarlanması projesinde yer aldınız. Otomobil tasarlandı ve otomobili oluşturan parçalar 5 değişik ülkede, 20 değişik firma tarafından üretildi. Bu ülkelerde kullanılan uzunluk […]

Yazılımda Değişik Test Türleri

Yazılım sürecinde oluşturulan sistemin kalite kontrolü unit testleri ile yapılır. Java tabanlı sistemlerde unit testleri JUnit  olarak isimlendirilir. Bu isim aynı ismi taşıyan test frameworkü olan JUnit’den gelmektedir. Java’da unit testleri yazabilmek için JUnit frameworkü (http://www.junit.org) kullanılır. Değişik türde unit testleri oluşturmak mümkündür. Bunlar: JUnit testleri (Unit Testing) Entegrasyon testleri (Integration testing) Arayüz (interface) testleri (Functional […]

Yazılımda Şelale (Waterfall) Yöntemi

Şelale yönteminde yazılım geliştirme süreci analiz, tasarım, kodlama, test, sürüm ve bakım gibi safhalardan oluşur. Geleneksel yazılım metodlarında bu safhalar şelala modelinde olduğu gibi linear olarak işler. Her safha, baslangıç noktasında bir önceki safhanın ürettiklerini bulur. Kendi bünyesindeki değişikler doğrultusunda teslim aldıklarını bir sonraki safhanın kullanabileceği şekilde degiştirir. Şelale modelinin özelliklerini şu şekilde sıralayabiliriz: Şelalenin […]