Merhaba , Veri yogun ,Arayuz yogun , Kullanıcısı yogun bir ugulamada Java dunyasında JSF 2.1 ve PlayFramework 2.0 arasında tercih yapmak kolaymıdır. JSF 2.1 kolay olceklenebilir mi?

Ozelikle Özcan Acar hocam bizimalem.com u simdi yazacak olsaydınız, hangi framework ve componentlere şans vermek isterdiniz.

Oneriler ve dusunceler için Tessekurler..

soruldu: 30 Nis '12, 15:49

Dan's gravatar image

Dan
913310
cevap kabul oranı: 0%

değiştirildi: 24 May '13, 10:43

%C3%B6zcanacar's gravatar image

özcanacar ♦♦
17.2k59183183

2

Almanya'daki bir bakanlıkta hassas bir çerçevede 80 milyon insana hitap eden yüksek ölçekli bir projede JSF 2.0 kullanılıyor. Bu bir örnek teşkil edebilir. Ancak ben burada bu yapiliyor diye her yerde aynı yapının kullanılmasını doğru bulmuyorum. Ne yazık ki "sürü" mantığı çok yaygın.

"Framwork eşittir amaca uygun cok yönlü standart alet."

Yani eğer lavabo aksamları tamir edilecekse ingiliz anahtarı kullanılır. Yok ben ingiliz anahtarım olmadan hiçbir yere gitmem, kahvaltıda dahi çatal kaşık yerine ingiliz anahtarı kullanacağım dersek o zaman mutsuz olma ihtimalimiz yüksek olur.

(25 May '13, 06:53) cakiral cakiral's gravatar image

12

BizimAlem.com gibi bir projeyi tekrar yapma firsatim olsaydi, gösterim katmani icin mutlaka JSF gibi bir standart bir teknolojiyi kullanirdim. Ama yüksek ölceklenebilirlik icin gösterim katmaninin hangi framework oldugu önemli olmayabilir. Yüzlerce ya da binlerce insana ayni anda servis yapmak zorunda kaldiginizda, uygulamanin sahip oldugu uygulama mimarisi daha önem kazanmaktadir.

Yüksek ölceklenebilirligin en büyük düsmani durum ya da oturum (statefull) bagimli mimaridir. Kullanici login yaptiktan sonra herhangi bir uygulama sunucunuz üzerinde onun icin bir oturum olusturup, kullaniciya devamli ayni uygulama sunucusundan (sticky session) sevis yapiyorsaniz, sisteminizin ölcekleme kabiliyeti sinirli olacaktir. Bunun yerine, oturum acmayan ya da kullanici icin bir uygulama sunucunuz üzerinde durum tutmayan (stateless) bir mimari olusturursaniz, tüm uygulama sunucusu kaynaklarinizi esit olarak tüm kullanicilariniz arasinda paylastirabilirsiniz. Bu ölceklenebilirligi artiran bir yapi olacaktir. Durumsuz (stateless) bir mimaride kullanici bir JSF ya da bir JSP sayfasinda erismek istediginde yük dagiticisi (load balancer) arka planda calisan durumsuz servislerden birisine baglanarak, kullaniciya istedigi hizmeti servis yapar. Her kullanici istegi uygulama sunuculari üzerinde oturum ya da durum tutmadiginiz icin siradaki diger uygulama sunucusu üzerinden hizmet görecektir. Bu sekilde tüm kaynaklari esit olarak tüm kullanicilar icin kullanmak ve ölceklenebilirligi artirmak mümkün olacaktir.

Kisacasi yüksek ölceklenebilirlik icin ben durumsuz (stateless) bir mimari olustururdum. Hangi teknolojiyi kullandigim bu durumda ikinci planda kalan bir mevzudur.

EOF (End Of Fun) Özcan Acar

permanent link

cevaplandı: 30 Nis '12, 22:18

%C3%B6zcanacar's gravatar image

özcanacar ♦♦
17.2k59183183
cevap kabul oranı: 52%

2

Detaylı Cevaplar icin tessekurler.

Ozcan Hocam, Yazdıgınız iki paragrafada katılıyorum. O yuzdende kafam karısıyor. JSF2 icin hep statefull diyorlar. (Okudugum dokumanlar stateless kullanılmaya zorlanması onerilmez diyorlar.) Bu durumda ikinci paragrafta belirtginiz stateless dizayna bir ayak bagı olusturabilirmi? Bu kısımda kafam karıstı. (Net dunyasından Java dunyasına gecis yapmak isteyen, kafası karısık birisini aydınlatma cabalarınız icin tekrar tessekurler.) Diger taraftan JSF2 de hızlı uygulama gelistirme anlamında teorik olarak kolaylastıracak gorunuyor. (Arayuz yogun senaryolar icin)

Hakan Bey Detaylı cevap icin tessekurler. JSF konusunda essekten dusmus birisnin deneyimleri cok onemli. JSF2 ye ASP.NET i cagrıstırdıgı icin sıcak bakan, ama endisleride olan bizlere uyarı oldu. Gercekten saglam klavuz yok ise Javada yol bulmazk zor olabilir gorunuyor. Tam Spring e falan bakalım demistik simdi bir Spring Roo da var. ( ama yılmak yok devam edecegiz) Bu durumda yatırımın geleceginde gelisebilmesi icin standart tool onemli olmaya baslıyor. (Her sey tool degil dediginiz duyuyorum, ama bende en basa donup, assemblerdan baslayarak her seyi kendim yapmak istemiyorum. :) ) JSF 1.2 uzun sure kullanan sizin JSF2.0 ile ilgili deneyimleriniz olursa, fikirlerinizi tekrar almak isteriz.

(02 May '12, 04:34) Dan Dan's gravatar image
1

JSF 2 server tarafli calisan component modeli sunar(ayni konsept ASP.Net de WebForms ile var), ama sizin is mantiklarinizin(business logic) oldugu Bean'leriniz stateful(durumlu) olmak zorunda degil. Netbeans.org'da stateless(durumsuz) bean'lerle jsf 2 kullanimi anlatilmis. http://netbeans.org/kb/trails/java-ee.html

(02 May '12, 05:24) CemIkta ♦ CemIkta's gravatar image

Play framework hakkında pek bilgim yok ancak büyük ölçekli bir projede kesinlikle JSF kullanımını kesinlikle tavsiye etmiyorum. Ben JSF 1 kullanarak bir proje geliştirdim ve çok pişmanım. Muhtemelen bana "şiddetle" katılmayacaksınız, fakat neden böyle düşündüğümü anlatmaya çalışayım;

JSF yazılımcının işini kolaylaştırırken aslında web mantığından uzaklaşıyor. Web demek html, css ve javascript demek. Bir framework sizin yerinize bunları oluşturmayı vaadediyorsa kesinlikle optimize bir şekilde bunu yapamayacaktır. Richfaces, Icefaces gibi framework'lerin oluşturduğu html ve js kodlarına bakarsanız demek istediğimi daha iyi anlarsınız. Çılgın uzunlukta oluşturulmuş id'ler, sayfalar dolusu nuh devrinden kalma table tag'leri ve javascript kodları vs göreceksiniz. Ölçeklenebilir büyük bir web uygulaması geliştirecekseniz kesinlikle html, css ve js'leri kendiniz yazmalısınız. Siz geliştirici olarak ajax operasyonlarını 2 tag koyarak yaptım zannederken aslında arkada kan gövdeyi götürüyor. Eğer ajax vs gibi atraksiyonları rahat rahat yapayım diyorsanız ASP.NET yazın daha iyi. Sonuçta masa üstü programı geliştirmiyorsunuz, web geliştiriyorsanız elinizi biraz kirletmekten korkmamalısınız, işin mutfağına girmelisiniz.

JSF gelen istekleri işlerken bir çok fazdan geçiriyor. Bu fazlar sırasında arka tarafta yazdığınız bean'lerin metodlarını defalarca çağırabiliyor. Bu metodlar veritabanı işlemi yapıyorsa defalarca veritabanına gitmemek için Session'a abanıyoruz ya da farklı taklalar atmak durumunda kalıyoruz. Bu gibi sebeplerle hem session ya da memory kullanımı artıyor hemde render süresi uzuyor.

Eminim JSF 2'de bunların çoğu düzeltilmiştir ancak mimari olarak JSF'nin bence web ile hiç bir alakası yok, bana göre komple yanlış tasarlanmış. Örneğin JSF 1'de GET metodunu kullanamıyorsunuz, her işlem POST ediliyor. Konfigürasyon çılgınlığına değinmiyorum bile :) Bir süre sonra uygulamayı geliştirmek zulüm haline geliyor. Bir teknolojinin standart olması malesef iyi olacağı anlamına gelmiyor.

Benim edindiğim tecrübeye göre "basit güzeldir". Yani aslında Java ile web uygulaması geliştirecekseniz en ideal çözüm bence JSP+Servlet yazmak. İdeal diyorum çünkü JSP+Servlet ile büyük bir uygulama geliştirmek, bakımını yapmak gerçekten çok yorucu olsa da en iyi çalışacak (native) çözümün bu olduğunu düşünüyorum. Baktığınız zaman JSP+JSTL+Servlet ile yapamayacağınız iş yok, zaten diğer framework'ler de özünde bundan farklı bişey yapmıyor. Formunuzu JSP yapıp bunu Servlet'lerde işleyerek MVC tasırım kalıbını rahatlıkla kullanabilirsiniz. Ayrıca zaten Servlet 3.0'da bu eksiklikler giderilmeye çalışılmış görünüyor.

Tüm kontrol yine sizde kalacak şekilde fakat tüm detaylarla da uğraşmadan daha kolay geliştirme yapayım derseniz o zaman en iyi çözüm bence Spring 3 MVC. Sizi kesinlikle herhangi bir kalıba sokmadan mükemmel jenerikleştirilmiş metodlar ve sınıflarla tam ihtiyacınız kadar ölçüp biçilmiş bir uygulama geliştirmenize imkan sağlıyor. Bir seçim yapılacaksa bence bunlara göre yapmak lazım. Yani geliştiricinin işlerini nasıl kolaylaştırdığına göre değil, ne kadar hafif olduğu (lightweight) ve ne kadar desteklendiği (community) önemli. Play framework de bu kalıba uyuyor ise bence kullanılabilir, ama dediğim gibi benim oyum Spring 3 MVC'den yana.

ASP.NET, PHP, python vs gibi diğer dillerde web uygulamaları geliştiren arkadaşların ya da diğer insanların Java ile rahat bir şekilde web uygulaması geliştirilemeyeceği, web yapacaksan PHP vs gibi daha kolay bir dil seçmek gerektiği gibi bir önyargısı olmasının sebebi bana göre JSF gibi web'den uzak bir standartın dayatılması. Oysa diğer bütün çözümlerin yanında Java performansı ile hepsini geride bırakabilecek kabiliyette, yalnızca doğru kullanıldığında. Elbette JSF ile de başarılı projeler gerçekleştirilebilir fakat JSF ile başlayıp fail etmiş birçok proje biliyorum.

Bir de benim bildiğim kadarıyla JSF ile geliştirilmiş Facebook, Twitter, Linkedin, Amazon, eBay ölçeğinde bir web örneği yok. Varsa bilmek isterim.

Umarım kimseyi kıracak, üzecek birşey söylememişimdir, bunlar tamamen benim fikir ve tecrübelerim, kimse katılmak zorunda değil :)

permanent link

cevaplandı: 01 May '12, 07:23

hakanilter's gravatar image

hakanilter
156112
cevap kabul oranı: 0%

1

JSF 1.x versiyonlarinda yavaslik ve componentlerdeki hata / eksikler gelistirmeyi cok stresli yapiyordu. Su an JSF 2.x ile bu sorunlar biraz daha optimize edilmis durumda. Ozellikle PrimeFaces gibi jquery bazli JSF 2.x component'leri cok kolayliklar saglamakta. Konfigurasyonlar en aza indirilmis durumda.

JSF ile facebook, twitter gibi milyonlarca kullanicinin aktif kullandigi sistemler yazmak zor, bu tur sistemler genelde script dilleriyle yaziliyor(python, ruby, php gibi).

(02 May '12, 05:14) CemIkta ♦ CemIkta's gravatar image

Evet startup yaparken ruby python iyi gorunuyor fakat twiter Ruby ile basladı fakat olceklenme problemi yuzunden onemli bir kısımını Scalaya tasımak zorunda kaldılar. Facebook ta PHP icin C++ ye donusturup derleyen kod yapmak zorunda kaldılar.. Simdi bizde Facebook buyuklugunde olacagız ya, onlemimizi bastan alıp Java ile yazalım diyoruz :) ... Espiri bir tarafa ama, gelir modeli şüpheli işlerde donanım ve bandwith yatırımını ne kadar düşük tutabilirsek iyidir gözü ile bakıyorum.

(02 May '12, 11:47) Dan Dan's gravatar image
1

"..iki tag yaptım derken arkada kan gövdeyi götürüyor." @hakanilter ağzınıza sağlık cok güldüm :-)

"Yazılım projelerinde roller ve sorumluluklar" meselesi hiçbir zaman gerçek manada ciddiye alınmadı, ciddiye alındiysa bile uygulamaya geçirilmedi, uygulamaya geçirildiyse bile profesyonel manada yapılmadı.

Spesifikasyonları yapanlar aslında söylenmesi gerekenleri söyleyip tanımlamışlar ancak bizler pek dikkatli okuyup anlayip uygulayamamışız.

Ana sorun burada.

Bir kişi dokuz kişinin, dokuz kişi de bir kişinin işini yapmaya kalktığı için işler bozulmuş.

Suç JSFte değil demek istedim.

(25 May '13, 07:04) cakiral cakiral's gravatar image

Ruby On Rails veya Django(python) tarzi framework'lerin karsiligini java'da ariyorsaniz Play Framework size bircok kolayliklar saglar. Fakat Play version 2.0'dan itibaren agirlikli olarak kendi icinde Scala kullaniyor(ozellikle template islemlerinde), bircok islemi de Ruby On Rails ve Django gibi hokus pokus yaparak(sizin icin otomatik olusturarak) hallediyor. Play bircok kolaylik saglasa da scala ile hybrid (melez) bir framework olmasi benim hosuma gitmemisti.

Kucuk, kolay hizli cabuk bitmesi gereken projeleriniz varsa ve surekli yeni version'lar yazmicaksaniz Play cozum olabilir !

Eger JSF view katmaninda hosunuza gitmiyorsa ve yavasligindan yakiniyorsaniz, Server tarafinda @özcanacar hocamin da bahsettigi gibi stateless business logic yazabilir, view katmanina ise pure servlet + html template kullanabilirsiniz. Ornegin LinkedIn jsp view leri kaldirip yerine Dust.js javascript template kullanmaya basladi. Benzer bir yapi FreeMarker Java Template Engine de de var. FreeMarker java objelerini template icine rendering yapiyor.

permanent link

cevaplandı: 02 May '12, 05:37

CemIkta's gravatar image

CemIkta ♦
19.9k29125190
cevap kabul oranı: 36%

Buradaki hocalarım kadar java ya yıllarını vermiş birisi değilim, seneler önce almış olduğum mcsd.net eğitimi nedeniyle genelde bu tarz işlerimde .net tercih ederdim. java ile tanışmam 1.5 sene önce play framework ile başladı, ve sonrasında da birdaha arkama bakmadım.

Play framework 1.2.x ile birkaç proje geliştirmiş birisi olarak benim düşüncem play 2.0 ile çok ta güzel büyük ölçekli projeler geliştirilebilir. Ayrıca diğer birçok framework'e göre çok daha hızlı bir geliştirme ortamınız olacaktır. üstüne aynı anda hem scala hem de java ile kodlayabilme avantajına sahipsiniz..

Açıkçası ben de halen play1.2'den 2.0'a geçişi yapmış değilim, zaten 1.2 den 2.0 'a geçiş bir upgrade den çok bambaşka bir mvc framework'e geçiş demek.

JSF ile hiç uğraşmadım, ama spring framework'ün kullanıldığı bir projede arka plan java kodlarını oluşturmuştum. play framework'te 1 class içerisinde 1 satırda yaptığım işi spring te 3-4 farklı class oluşturup (yok efendim repository'siymiş, componentiymiş, vs..) her birine birşeyler ekleyerek elde etmek beni baya bir üzmüştü :)

Play Framework kullanan büyük bir web sitesi var mıdır derseniz buyrun:

The Play Framework at LinkedIn

permanent link

cevaplandı: 24 May '13, 17:11

dreampowder's gravatar image

dreampowder
3.3k112849
cevap kabul oranı: 23%

değiştirildi: 24 May '13, 17:20

yüksek ölçekli bir web projesi için ben olsam javayı kullanmam, PHP, vs gibi script dilleri kullanmayı tercih ederim. Çok gerekli ise arka tarafta java ile konuşabilir.

"hakanilter"

Bir de benim bildiğim kadarıyla JSF ile geliştirilmiş Facebook, Twitter, Linkedin, Amazon, eBay ölçeğinde bir web örneği yok. Varsa bilmek isterim.


Özcan Hocam güvenlik sorunu yaşatmayacaksa, BizimAlem.com en fazla kaç online alabilir, cluster olmadan tek instance ile ? Sonuç itibariyle her request için jvm bir thread veriyor. 100+ üstü thread sıkıntı yaratabilir.

permanent link

cevaplandı: 02 May '12, 05:20

gklp's gravatar image

gklp
789317
cevap kabul oranı: 17%

Peki JSP yüksek ölçekli projelere uygun mu?

(02 May '12, 12:41) rahmanyazgan ♦ rahmanyazgan's gravatar image
1

@gklp: tek jvm instansini ile 1000-1500 kisi online olabilir. Bu kadar kisi online olunca, hepsi ayni anda servere request gönderiyor diye düsünmek dogru olmayabilir. Genelde 1 kisiyi bir oturum (HttpSession) olarak düsünürsek, cogu kullanici herhangi bir websayfasindaki icerigi okurken oturumu idle durumdadir, yani server tarafindan bir thread kosmuyordur. Bu yüzden zaten binlerce insan ayni anda bir JVM üzerinde online olabiliyor. Her JVM instansini max 256 thread olarak konfigüre ettim. Keep alive ve socket queueing mekanizmalari ile bir server 1000-1500 kisiyi tasiyabiliyor.

(02 May '12, 13:25) özcanacar ♦♦ %C3%B6zcanacar's gravatar image
2

@rahmanyazgan: BizimAlem.com JSP tabanli. 1999 senesinde yapmaya basladigimda adam akilli bir MVC cati yoktu, o yüzden BizimAlem icin JSP tabanli bir MVC cati olusturdum. Iyi zamanlarinda (faceboook öncesi) 6000 kisi online olurdu. Eger facebook icin bu kadar hype olmasaydi, simdilerde 10.000 belki de 20.000 ayni anda online üye sayisini gecmisti Bizimalem.

(02 May '12, 13:31) özcanacar ♦♦ %C3%B6zcanacar's gravatar image

Genelde Play 1.2.x sürümlerini tercih ediyorlar bunda sanırım 2.0 da Scala ya daha çok önem vermesi oldu . Ama sorunun cevabı verilmemiş sanırım hala ve bende merak ediyorum. Play yüksek ölçekli projelerde başarılı olabilirmi ?

permanent link

cevaplandı: 11 Haz '12, 11:02

furkankaynak's gravatar image

furkankaynak
1195513
cevap kabul oranı: 0%

Hocam cevabımda da belirttiğim gibi, linkedin play2.0 kullanmakta.. bana kalırsa bu yeterli bir gösterge..

(25 May '13, 06:07) dreampowder dreampowder's gravatar image

Biz arkada Spring Rest API yazdık, ön taraf içinde isteyen istediği şekilde yazsın dedik, ve kendimiz bootstrap , jquerry ,javascript html kullandık. arka tarafıda ön tarafıda en ince noktasına kadar biliyoruz ve müdahele edebilyior JSF gibi hazır şeyler ilk başta kullanımı kolay olsada size kalıp verdiği için pek dışına çıkamıyorsunuz, oysa html de css te js de sizin elinizde olsa ve veride bir json şeklinde size sunulmuşsa istediğiniz gibi takla atarsınız tüm kontrol bende değilse bir yerden sonra istediğime müdahele edemem ve korkular başlar ve sorunlar can sıkıcı hale gelir. benim nacizane fikrim bu 10 satır fazla yazarım ama ne yazdığımı bilirim bir sorun olduğunda iki saatte değil 2 dk da tespit ederim.

permanent link

cevaplandı: 22 May '15, 04:25

ibrahim472's gravatar image

ibrahim472
1.9k1614
cevap kabul oranı: 10%

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:

×281
×2
×1
×1

Soruldu: 30 Nis '12, 15:49

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

Son güncelleme: 22 May '15, 04:25

powered by BitNami OSQA