25 Mart 2009 Çarşamba

Adobe Flex RIA Dünyasının Gerçek Başlangıçı

Web 2.0 öncesi dinamik web sayfalarımız ve onlardan beklentilerimiz oldukça basitti. Daha önceden mevcut olan Javascript , XMLHTTPRequest in birleşimiyle AJAX icat oldu sayfalardan beklentilerimiz arttı. Adını bile sayamıyacağımız kadar javascript , AJAX kütüphaneleri çıktı karşımıza birkaç insan bu frameworklere gerek duymadan kendi başlarına modüler olmayan javascriptlerle işlerini gördüler. Ancak burda dananın kuyruğunun koptuğu nokta javascript , css kullanılarak yaratılan bu kütüphanelerin her ne kadar her türlü browser da çalışma iddiaları olsa da pratik anlamda pek öyle olmadığı görüldü. En azından desktop application'ı kıvamında web uygulamaları yazmanın bu frameworklerde ezziyet olduğunu gözüm kapalı söyleyebilirim.
***
Lütfen şimdi bu işlere derinlemesine bulaşmaktan kaçınmayacak dirty programmerlar ve kütüphane geliştirecek kadar iyi javascript , CSS bilgisi olan arkadaşlar ne saçmalıyor bu cahil demesinler. Benim baktığım RIA dünyasında görmek istediğim WYSIWYG'den ibaret ve bunu şu ana kadar en iyi yaptığını gördüğüm Adobe Flex , open source , arka plandaki server teknolojisinden bağımsız , tüm browserlarla uyumlu. Zorlukları ne actionscript , client side'ın bazı tecrübesiz programcılar tarafından saçma sapan şekilde yazılabilme ihtimali. Ancak tüm bunlara rağmen geleceğin en azından kapsamlı web uygulamalarının flex ve benzeri RIA araçları ile yapılacağını gururla , onurla , inançla söyleyebilirim. Vakit kaçmadan treni yakalasak iyi olacak...


2 Mart 2009 Pazartesi

JSF Richfaces

Son zamanlarda en büyük zevkim java web frameworklerin cicili bicili component explorerlarına göz atıp evet işte aradığım framework bu demek. Şirketimizdeki araştırmalar ve yakın çevremde benden bu konuda daha iyi bilgili insanların gazları sayesinde bir java standartı olan JSF üzerinde durmak gerektiği düşüncesi hakim oldu.
***
Tabi jsf in standart implementasyonları ve myfaces gibi implementasyonların istenilen ajax şovları için yetersiz olduğu malumunuz bu yüzden jboss'un Richfacesını denemeye karar kıldım. Standart bir jsf input component'ine ajax desteği kazandırmak ve sayfadaki elemanları idleriyle ile sayfayı tamamen refresh etmeden reRenderlamak başta güzel kolay basit gibi gözüktü ancak malesef swing ile yazmanız 1 gün sürecek bir ekranı uzunca bir sürede çalışmasından memnun kalacak şekilde bitirmek mümkün olmadı. Başta bunun kendi eksikliğimden kaynaklandığını düşünürken konu üzerinde biraz daha uğraşmam sonucu Richfaces'ın vaat ettiklerinin ardından developmentı insanı deli edecek kadar zorlaştıran bir framework olduğuna karar vermemle sonuçlandı.
***
Bu esnada Richfaces dışında bir iş arkadaşım da bir başka JSF kütüphanesi olan icefaces ile uğraşıyordu ve gözlemlediğim icefaces'in jsf in standart backbean yazma alışganlığını sürdürdüğünü ama Richfaces'a nazaran kullanıcıyı ıvır zıvır dertlerden çok daha fazla soyutlayan bir kütüphane olduğunu gördüm ancak bu bile başlı başına bu framework üzerinde çalışmak için yeterli bir sebep midir bilinmez.
***
Son 2 yıldır mükemmel bir webframeworkü arayan benim sanırım son durağım Flex olacak. Getirdiği actionscript angaryasına rağmen en azından insanın ellerini kirletip işin temeline inerek client side da istediği atı koşturmasına olanak sağlayacağına inandığım flex sayesinde JSF ve benzeri javascript , html, css tabanlı karmaşık frameworklerin anlamsızlıklarıyla uğraşmak zorunda kalmayacağımı umut ediyorum. Evet bir pop up açmak için JSF de javascript yazağıma ya struts , spring MVC gibi frameworkler kullanıp javascriptlerimi tamamen hakim olacak şekilde yazarım veya Flex , GWT gibi swing benzeri geliştirmeye sahip frameworkleri kullanarak acaba şunu yapabilir miyim sorusundan uzak yaşamayı tercih ederim... Cahilliğimden olabilir maruz görün ama JSF'de yanarlı dönerli bir sayfa yaptığınızda web sayfanız ve beanlerinizdeki karmaşıklığa nasıl tahamül ediyorsunuz ...

6 Şubat 2009 Cuma

Web Frameworks ve Java

Java ve open source ... Evet bu iki kavram birbirlerinden bağımsız dursalar da şunu kabul etmek gerekir ki ikisi de birbirlerine sıkı şekilde bağımlılar. tabi ki open source yazılımlar için java şart değil veya javanın var olabilimesi open source olması gerekli değil. Ancak open source yazılımların geliştirilmesindeki en çok kullanılan dillerden biri bugün baktığımızda java. Başlığa bakarak ne zırvaladığımı sorabilirsiniz o vakit sadete gelmekte fayda var : Evet open source ve javanın etkileşiminden hepimiz son derece memnunuz tomcat , eclipse , struts , spring,hibernate ,gwt ve en önemlisi javanın kendisi opensource ve ücretsiz ancak java ile web programlama yapanlar bilirler ki konu web yazılımı geliştirmek olunca işler biraz kompleksleşiyor.
Tabi bu karmaşa sizin bir web frameworkünden beklentilerinizle de değişiyor basit bir tabloya basım ve form işlemleri için struts 2(struts değil) gayet yeterli olacakken web 2.0 kavramı ile hayatımıza giren ajax işleri zorlaştırdığı gibi sizden beklentileri yükseltiyor. Tabi ajax var olan teknolojilerin sentezinden doğdu bir çok başarılı web sitesinde de karşımıza çıktı ancak şu var ajax ile yaptığınız görsel bileşenler html , css ve javascriptin zorunlu dansından ibaret oluyor daha çok yani java , flash veya işletim sistemlerinde gördüğümüz görsel bileşenler gibi değiller daha çok farklı nesnelerin sentezlenip size suggestion box , autocomplete gibi komponentler sunuluyor bunun birçok başarılı örneği varken (jQuery,dojo,gwt) aslında bu komponentlerle development yapmanın sancılı ve zor olduğunu düşünüyorum örnek olarak klasik bir swing veya windows forms uygulaması geliştirmemiz için sadece tek bilmemiz gereken ilgili kütüphanelerken burda javascript , css , dhtml , html vede az biraz grafiker olmamız gerekiyor.
İşte insanlar bunlardan sıkılmış olacaklar ki karşımıza flex , java fx , silver light , open laszlo gibi teknolojiler çıktı ancak bunlarında kendilerine göre dezavantajları html in bir çok ortamda çalıştırılabilir olması ve örneğin flex gibi frameworklerle uygulama geliştirmenin server side tarafında pekte rahat olmadığı yönünde , kimileri bunun JEE ruhuna aykırı olduğunu düşünüyor açıkcası silverlight kısmı hakkında bir fikrim yok ama eminim microsoft bu entegrasyonu iyi sağlamıştır tabi flash gibi bir vm'niz varken browserda silverlighta insanların ne kadar ilgi göstereceği ayrı bir muamma. İşte kendilerine ait vmleri olan bu çözümleri bu sebeplerle geride bırakıp tekrar ajax destekli web frameworklerine geldiğimizde java tarafında bir çok eksikliklerin ve development sürecinin zorluğunu görüyorsunuz. Bazen insanlar bu kadar çok frameworkü takip ederken yoruluyorlar ve aklımıza şu soru geliyor bu kadar çok webframework olacağına ve bu kadar çok eksik web frameworkü geliştirmek için sunulan eforları birleştirip daha iyi bir şeyler ortaya çıkması sağlansa sanırım open source'un en kötü yanı bu güçlerin birleştirilmeyip heba olması.
Tabi konuya şu açıdan da bakabilirsiniz bu kadar katkı varken sen tüketmekten başka ne yapıyorsun ? Evet kişisel eleştiri olarak tüketiciliğimizle yeni bir web framework öğrenmekle övünmemizle dalga geçebiliriz ama bu da türkiye gerçeklerine kadar uzanan ayrı bir yazı konusuna işaret eder ki konudan tamamen sapmış oluruz. Evet kişisel gözlemlerim olarak java web frameworkleri konusunda şunları söyleyebilirim bu kadar geyikten sonra :
BEĞENDİKLERİM
  1. ZK : Tayvanlı bir firmanın arkasında olduğu güçlü seçenekleri olan ancak layoutları konusunda benim pek beğenmediğim bir framework ancak yeterince incelemediğimi de belirtmem gerek.
  2. GWT : Hepimizin duymuş olduğu Google Web Toolkits gram javascript yazmadan swing , swt uygulaması yazar gibi çıktı almak hatta arka planda server bağlantısı olmayan basit html , javascript tabanlı oyun , uygulamaları yazıp dağıtmanızı sağlıyacak yegane yazılımlardan. Kişisel gözlemime göre google elini ağırdan tutuyor gwt konusunda özellikle serverlarınızdan veri aktarmak veya serverınıza veri göndermek çeşitli sorunlardan dolayı zor olabilir örnek hibernate ve dinamik proxy objeleri gibi ancak gene de ilerleyen versiyonlarında gwt-ext gibi framework entegrasyonları ve instantations firmasının .net benzeri visual editorü ile iddialı olacağına eminim.
  3. JSF-Richfaces : ajax4JSF olarak ortaya çıkan ve önce exadel bünyesinde sonrada exadel'in jboss tarafından satınalınmasıyla meydana çıkan bir framework. Öncelikle kullanmak için JSF bilmeniz gerekli tabi JSF piyasada learning curve'i yüksek olan bir framework olarak nitelendiriliyor. Bunun dışında JSF in component modelinin server a çok yük getirdiği bir gerçek evet Richfaces burda ortaya çıkıyor istediğiniz bir JSF implementasyonuyla MyFaces , Standart Sun implementasyonuyla kullanıp sayfanın tümünü refresh etmenize gerek kalmadan AJAX requestleriyle uygulama geliştirmenizi acaip derecede kolaylaştırıyor ve tabi muhteşem gridler sunduğunu da belirtmeme gerek yok. Ancak şöyle eksiklikleri var : gridlerinde hidden column yok , ajax requestlerle de yapsak hala bir çok widgetın state ini serverside da tutmak zorundayız malesef client side da bu işi bizim için otomatize edecek kütüphanelerin varlığına rastlayamadım ancak şöyle özellikleri de yok değil javascript yazarak serverınıza gitmeye gerek kalmayabiliyor ancak bunu isteyen olur mu bilmiyorum...
  4. Flex : Development ı hakkında fikrim olmasa da widget olarak en solid widgetları sunan , browser uyumsuzluklarına her browser da çalışan vm iyle karşı gelen bir framework ancak önceden de belirtiğim gibi JEE ile konuşturmanız için yapmanız gerekenler ve muhakkak öğrenmeniz gereken bir action script dili var.
Evet şimdilik hakkında fikir beyanedebileceklerim bu kadardı ilerleyen yazılarda buluşabilmek ve yazılım adına birşeyler öğrenebilmek dileğiyle...