Merhabalar, internette biraz wicket,gwt ve play framework incelemesi yaptım ama 10 a yakın Web framework var ve aklım biraz karıştı doğrusu...

Spring MVC, Struts, Stripes, JSF, Tapestry, Wicket, Appfuse, GWT, play ..

Listedeki frameworkler hakkında tecrübesi olanlar aralarındaki farkları, üstünlükleri, birbirleriyle yada hibernate tarzı yazılımlarla entegrasyonu ve hangi tür projelerde hangisinin tercih edilmesi gerektiği hakkında bilgi verebilirse sevinirim.

Teşekkürler.

soruldu: 13 May '13, 13:32

Gnosis00's gravatar image

Gnosis00
1766914
cevap kabul oranı: 0%

değiştirildi: 13 May '13, 18:03

Aslında bu soruya etraflıca bir cevap benim de işime yarayacaktır :)

(13 May '13, 23:54) Fatih Fatih's gravatar image

Bu sorunun tek bir cevabı yok. Yapılacak işin niteliğine göre seçilecek kütüphane veya kütüphaneler değişecektir. Yukarıda saydığın kütüphaneler server ve client taraflı olarak ayrılıyor. İyi bir web uygulamasında client ve server taraflı kütüphanelerin ikiside kullanılmalıdır.

Ayrıca seçilen kütüphanelerin MVC patternini içermelidir. MVC sayfanın görsel olarak server üzerinde bir model ile eşleşmesini ve sayfada oluşan actionların da belli bir mantık çerçevesinde karşılanmasını sağlayacağından uygulamanın geliştirilmesine ve devamlılığını sağlamanmasına da kolaylık getirecektir.

JSF

JSF Java EE içerisinde bir Java standartı olarak bulunuyor. JSP ve HTML ile karşılaştırıldığında Java geliştiricilerinin Java web uygulamalarında ön yüz geliştirmelerini oldukça kolaylaştırıyor diyebiliriz. Özellikle PrimeFaces, IceFaces gibi bileşen kütüphaneleri genelde developerlarda ön yüz geliştirme problemine kısmi çözümler üretiyor.

JSFnin bu artılarının yanında teknik anlamda daha da önemli olabilecek bir çok sorunu bulunuyor. Özellikler performansın çok kritik olduğu uygulamalarda sorunlar çıkarabiliyor.

  • JSF controllerları maneged bean içerinde bulunduğundan model ve controller arasında High Coupling oluşturuyor.
  • Her sayfa için bir component tree oluşturup bunun Statetinin devamlılığını sağladığından performans problemi bulunuyor.
  • Sayfa taglarının çok katı olarak belirtilmesi gerekiyor. Double click, double submission gibi önemli bugları bulunuyor.

Spring MVC ve Struts'i uzun süreler kullanmamakla beraber Struts için uygulama geliştirmeyi ciddi olarak yavaşlattığı yönünde eleştiriler var.

Struts

  • Request parametrelerini Java objelerine çevirecek bir yapısı yok
  • ActionForms model tarafına çok katı şekilde bağlı
  • Data doğrulamaları modelden ayrılmış

gibi bazı eleştiriler mevcut. Benim edindiğim tecrübeden de Struts kullanımı oldukça zor ve geliştirmeyi yavaşlatıyor.

Spring MVC

Spring MVC için ciddi güvenlik açıkları olduğu yönünde eleştiriler var. Benim kullandığım kadarıyla Spring'in oldukça büyük bir yapısı var. Configurasyonu ve kullanılacak yöntemleri oldukça çok, bu nedenle öğrenmesi daha zor. Ancak daha performanslı çalıştığını söyleyebilirim.

GWT, client taraflı işler ile developerları uğraştırmadan (JavaScript, HTTPRequest.. vs.) sadece java yazarak web uygulaması geliştrimeni sağlayan bir araçtır. Bu kulağa hoş gelse de, benim için ne yaptığını bilmeden birşeyler ortaya koymak anlamına geldiğinden kullanmayı tercih etmedim.

Java EE uygulaması geliştiriyorsan, Java EE için geliştirilen kütüphaneleri tercih etmek daha doğru olacağı görüşündeyim. Bunun için bir context ve dependency injection mekanizması (CDI, Spring) uygulamaya eklenmelidir. Bunun yanında ikinci önemli olan persistance yani veritabanı ile bağlantı ve verinin devamlılığının sağlanması için bir mekanizma(JPA, Hibernate) da eklenmelidir. En son arayüz tarafında JSF, Spring MVC veya Strutstan biri seçilebilir. Burada en önemlisi MVC yapısının bulunmasıdır.

Ekleme

MVC Pattern iki şekilde implemente edilmektedir. Bunlar Request based and Component Based MVC patternleridir. Request Based Patternlere örnek olarak Sprin MVC, Strutsve Stripes'i verebilirken Component Based Mvc patternlere JSF, Wicket ve Play frameworkleri verebiliriz.

Request Based MVC patternin en göze batan kısmı MVC yapısının HttpServletRequest ve HttpServletResponse nesneleri üzerinde implemente edilmesidir. Bu yapıda daha çok kod yazmak gerekmektedir. Çünkü kullanıcı isteklerini karşılacan controllerlar ve verilerin aktarılması gibi işlemler geliştirici tarafından yapılmaktadır.

Component Based MVC yapılar ise basit bir ön contoller istekleri karşılar, validate, convert edip modele direk olarak verileri getirir. Böyle bir kütüphanenin kendinisi geliştirmek zor olmakla beraber kullanımı request based mvc'e göre daha kolaydır. Controller geliştirmek View üzerinde direk işlem yapan actionları geliştirmeye ve modeli geliştirmeye yoğunlaşılır. Request, Response nesneleri üzerinde taşınmadığı için daha fazla bellek ihtiyacı vardır. Bu nedenle bir çok eleştiri almaktadır.

Mimari ayrıntıları için :

Java EE Mimarisi

permanent link

cevaplandı: 15 May '13, 03:22

erencan's gravatar image

erencan
7911812
cevap kabul oranı: 40%

değiştirildi: 06 Eyl '13, 13:32

Yazı aslında basit ve temiz bir özet olmuş, elinize sağlık hocam. Internal(BackOffice) kurumsal uygulamalarda, JSF standartı kullanmak geliştirme ve geliştirme hız ölçekleri bakımından tercih edilmelidir, lakin işin içine performans ve performansa bağlı hız gereklilikse Spring kullanmak avantajdır.

(07 Eyl '13, 05:51) Turgay Can Turgay%20Can's gravatar image

Bahsi geçen diğer teknolojiler hakkında derinlemesine bilgim yok ama, şu ana kadar öğrendiğim ve anladığım kadarıyla Spring uygulama geliştirmek için hemen her durumda kullanılabilecek harika bir framework.

(08 Eyl '13, 17:34) Emrahkk Emrahkk's gravatar image

Ben her durumda JSF kullanılmasından yanayım. Standart olan teknolojinin desteği ve geleceği olacaktır.

permanent link

cevaplandı: 14 May '13, 00:44

ibrahimdemir's gravatar image

ibrahimdemir
77068
cevap kabul oranı: 0%

1

Merhaba. Standart olması konusunda haklısınız ancak JSF'in her durumda kullanılması konusunda size katılmıyorum ( sonuçta JSF mükemmel her işi yapan birşey değil ). Yukarıda sayılan frameworklerin her birinin farklı özellikleri var. Bence seçimi kendi ihtiyaçlarınız ve frameworklerin sunduğu özellikerini göz önünde bulundurarak yapmak daha iyi olacaktır.

(14 May '13, 01:19) myururdurmaz myururdurmaz's gravatar image

Uzun soluklu projelerde kesinlikle standartlar seçilmeldir

(14 May '13, 03:33) ibrahimdemir ibrahimdemir's gravatar image

Standart nedir? Kim bilirler? Spring standart degil mi örnegin?

(14 May '13, 03:39) mahmut_can ♦ mahmut_can's gravatar image
1

JSR'ı var ise standarttır. Çok kullanılan yapılar zamanla standartlaşır ve kabul görür. Bu süreçte yeni olan ürünlerin bir kısmıda yok olur. Doğal seleksiyon sonucunda kalan yapılar standart haline gelir. Bu nedenle standart kabul edilen yapılar uzun ömürlüdür. Eğer uzun soluklu bir proje yapacaksanız standart'tan vazgeçmemenizi öneiririm

(14 May '13, 04:09) ibrahimdemir ibrahimdemir's gravatar image

arkadaşlar projenin ihtiyaçlarına göre fw seçilmesi konusunda mütabıkım ama örnegin wicket ve play arasında ne tür farklılıklar var temelde? Spring biraz daha geniş bir çatı.. daha TDD ye yönelik diyenler var.. sizin düşünceleriniz neler ?

(14 May '13, 04:09) Gnosis00 Gnosis00's gravatar image
1

MVC frameworkları arasındakien belirgin fark implemente ettikleri MVC patternlerdir. Spring MVC, Struts request based, JSF, Play, Wicket component based mvc pattern implemente eder. Cevabıma ekleme yaptım, bakabilirsin. @Gnosis00, Standartlar her zaman ve her yerde tercih edilmelidir doğru bir yorum değil @ibrahimdemir Doğru yerde doğru aracı seçmek gerekir. JSF component based bir mvc olduğu için yavaş vebellekteçok yer kapladığına yönelik ciddi eleştriler var. Performans gerektiren durumlarda Spring MVC seçilmesi daha doğru olur görüşündeyim.

(06 Eyl '13, 13:37) erencan erencan's gravatar image
6 yorumdan 5 tanesi gösteriliyor hepsini göster
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,077
×281
×128
×6
×1

Soruldu: 13 May '13, 13:32

Görüntüleme: 2,488 kez

Son güncelleme: 08 Eyl '13, 17:34

powered by BitNami OSQA