28 Ağustos 2006

Annotation de neymiş?

Java 5 ile gelen Java syntax'ındaki değişikliklerde annotation kısmına göz atıyordum. Annotation kısmını okuduğumda bu yapıyı acaba kendi yazdığım uygulamalarda nasıl kullanırım diyordum. Aklıma doğru dürüst bir fikir gelmiyordu. Ta ki Java EE 5 teknolojisine bakana kadar. Adamlar her şeyi annotation ile yapmışlar.Gerçekten çok hoşuma gitti, çünkü XML kullanımını minimum seviyeye indirmişler ve uygulamaları geliştirmek gayet kolaylaşmış. Örneğin; .NET platformunda web servis oluşturmayı herkes denemiştir. Gerçekten kolay bir şekilde web servis tanımlayabiliyorsunuz. Servis metodlarının başına, hatırladığım kadarıyla, [Web Method] deyince .NET geri kalan kısmı sizin için hallediyordu. Java EE 5'de de aynı şekilde Web Servis sınıfının başına @WebService ve servis metodlarının başına @WebMethod yazınca Web Servisinizi yazmış oluyorsunuz, geriye ufak tefek işler kalıyor. EJB'lerin yapısı da gayet kolaylaşmış annotation yardımı ile.
Bence annotation mantığı iyi kavranırsa mimarisi daha güzel ve kodu daha anlaşılır uygulamalar geliştirilebilir.Herkese iyi çalışmalar...

17 Ağustos 2006

JSTL mi, Struts Tag Library mi?

Bildiğiniz gibi

Struts framework'ünü kullanarak MVC (Model-View-Controller) modeline göre web uygulamarı geliştiribiliyorsunuz. Bu modelin view kısmında yani kullanıcı arayüzü kısmında isteğe (request) veya oturuma (session) gömdüğünüz objelerin alanlarını (field) göstermek için, scriplet kullanmak istemiyorsanız, ya Struts etiket kütüphanesini (tag library) kullanıyorsunuz, ya jstl (java standard tag library) ya da kendi yazdığınız etiket kütüphanesini kullanıyorsunuz. Kendi yazdıklarınızı şu an es geçelim. Ben bu iletide JSTL ve Struts etiket kütüphanesinin arasındaki önemli gördüğüm farklılıkları anlatacağım:

  1. En önemli fark bence isteğe ya da oturuma gömdüğünüz bir objeyi JSTL'in bulamaması durumunda bir hata vermemesi, sayfayı çalıştırmaya devam etmesi, Struts'da ise NullPointerException yada başka hatalar üretip sayfayı çalıştırmaması.Bu durumun hem avantajı hem de dezavantajı var. Eğer objenin değeri gerçekten sizin için önemli değilse çalışmaya devam etmesi gerçekten güzel olur; fakat objenin değeri sizin için önemli ise bir sorun olduğunu düşünüp hatalı kısmı gözden geçirmek istersiniz. Bu farklılık size fayda sağlıyor.Devam etmesini düşündüğünüz yerlerde JSTL kullanıp hatalı yerlerde Struts etiket kütüphanesini kullanabilirsiniz. Aslında Struts etiket kütüphanesinde olan herşey JSTL'de mevcut, sadece html tag library'si hariç.

  2. JSTL yazımı Struts etiket kütüphanesinden daha kolay. Derli toplu bir yapısı var, özellikle expression language kullanarak gayet kısa ve güze kodlar yazabiliyorsunuz.Mesela <c:forEach [attributes]>...</c:forEach> etiketi (tag) ile <logic:iterate [attributes]>...</logic:iterate> etiketi aynı işi yapıyor.Fakat bence core etiket kütüphanesi etiketi olan forEach daha derli toplu ve anlaşılır.

  3. Son olarak da JSTL'in JSR (Java Specification Request) olarak geliştirilmesi, Struts etiket kütüphanesinin de Apache tarafından geliştirilmesidir. JSTL ilk önce çıkmıştır. Bu nedenle ilk göz ağrısı unutulmaz:)

Benim tercihim genelde JSTL olmuştur, bir tek form elemanlarını oluşturmak için Struts'ın html tag libray'sini kullanmak zorundasınız.Çünkü bunun karşılığı JSTL'de yok. Neyseki Java alemindeki çeşitlilikten dolayı istediğimiz tag libray kullanabiliriz...