Açılış konuşmasını Bilgisayar Bilimleri Bölüm Başkanı Chris Stephenson gerçekleştirdi ve bölüm kararı alıp bundan yaklaşık 5.5 yıl önce Java'yı temel programlama dili olarak seçmelerinin hikayesini özetledi. Her zamanki esprili tarzı ile Java'nın günümüzdeki konumuna değinen Stephenson, kısacık OpenOffice.org Impress sunumunu tamamlayıp sözü konuk Javacılara bıraktı.
İzlediğim ilk sunum Turgay Zengin tarafından gerçekleştirilen Java 5.0 (Tiger) tanıtımı idi. Zengin, bu sunumunda dile yeni gelen bazı yapılara değindi. Otomatik "boxing/unboxing", for olarak yazılan ama foreach işlevselliğini sunan biraz daha gelişmiş bir for yapısı ve "Generics" gibi dile yeni eklenen özelliklerden bahseden Zengin, bu yapısal özelliklerin yanısıra bazı performans artışlarından ve çalışmakta olan yerel/uzak Java uygulamalarının izlenme araçlarının artık sistemle birlikte geldiğinden de kısaca söz etti.
Açıkçası performans artışı ve birtakım yan ürünlerin JDK'ya dahil edilmiş olmasını takdir etsem de "yenilik" olarak sunulan pek çok şeyin beni etkilemekten ve heyecanladırmaktan uzak olduğunu belirtmeliyim. 2005 yılında bazı eklenen şeylerin "yenilik" diye sunulması çok da anlamlı değildi. Boxing/unboxing ve for each tarzı for döngü yapısı C# gibi diğer güncel dillerdeki haline çok benziyordu ve zannımca zaten çoktan uygulanmış olmaları gerekirdi, bunu yenilik diye sunup övünmenin bir anlamı yoktu. Sunum sonunda söz alan Stephenson'ın belirttiği gibi yine çıkışı esnasında Javacılar tarafından övülen "garbage collection" olgusu 1950'lerden beri bilinen ve pek çok dilde uygulanmış bir şeydi. Öte yandan "generics" ismi ile ortaya sürülen "yenilik" C++ dilindeki güçlü "template" programlamanın (STL, template metaprogramming, vs.) Java'ya uyarlanmaya çalışılmış hali idi ve şu soru gündeme geldi: "15 yıla yakın süredir var olan bir fikri ve uygulamayı yenilik mi kabul ediyorsunuz?". (Sonuç: Diğerleri tarafından ukala ve "artizzz" olarak nitelendirilmek istemiyorsanız bilgisayar tarihinden ve Lisp'ten uzak durun ;-)
Bu eleştirilere karşı verilen cevaplardan biri ise Java'nın tek bir patronu olmadığı, dolayısı ile dile dair yapısal özelliklerin JCP yani Java Community Process denen "demokratik" bir süreç ile belirlendiği ve bu yüzden bazı özelliklerinin eklenmesinin zaman alabildiği yönünde idi. Bunları duyunca aklıma Brooks'un meşhur Mythical Man-Month kitabındaki sözlerinden biri geldi. Belli bir liderin önderliğinde tasarlanan ürünler ile bir komite tarafından tasarlanan ürünler arasındaki fark. Birincisine örnek olarak Perl, Apple gibi sistemler verilirken ikincisine örnek olarak COBOL gibi sistemler verilir.
Hemen ardından gelen konuşma ise belki de pek çok kişinin merak ettiği Hibernate sunumu idi (salon tıklım tıklım dolu idi ve bazı insanlar arkada büyük bir hevesle ayakta durarak dinliyorlardı). Sunumu gerçekleştiren Burak Bayramlı'yı yakın takibe alan FM ekibi (kendisini burada malkocoglu, malkocoglu_2 ve malkocoglu_3 olarak da tanıyoruz ve aynı zamanda yine FM'de Common Lisp ile geliştirilmiş bazı programlara dair yazıları ile hatırlıyoruz), LaTeX ile hazırlanmış bu güzel sunumu pür dikkat dinleyip Hibernate nedir, yenir mi sorularına cevap aradı ve çoğuna da buldu (veritabanı nesne eşlemesi, SQL yerine otomatik soyutlama yapıp nesneye-yönelim paradigmasından ayrılmadan vertibanı işlemlerinin gerçekleştirilmesi, vs.). Özellikle sunumun sonunda verilen Sony Entertainmens sitesi örneği çarpıcı idi. Söz konusu sitenin 200.000 üyesi vardı ancak daha da önemli olan web sitesinde ortalama 10.000 kullanıcının bağlandığı ve yaklaşık 3000 eşzamanlı sayfa görüntüleme (pagehit) gerçekleştiği idi. Sunucu tarafında Java ve Hibernate kullanılıyor, dağıtık bir GNU/Linux kümesi (cluster) dağıtık Hibernate önbellekleme mekanizması ile bu işin üstesinden kolayca gelebiliyordu. Sunum sonrasındaki soru cevap seansında ise insanların başlıca kaygılarının HQL'den SQL'ye geçişte otomatik üretilen kodların ne kadar optimize olabileceği idi, Bayramlı'nın buna cevabı ise icabında Hibernate'in doğrudan SQL de kullanımına izin verdiği idi. Bir başka soru ise veritabanı nesne eşlemeleri için olmazsa olmaz XML şema dosyalarının bir süre sonra bünyeyi yorduğu ve bununla nasıl başa çıkılacağı idi ve cevap olarak veritabanını tarayıp otomatik olarak gerekli XML belgelerini üreten bazı araçlardan bahsedildi. Sunumun enteresan cümlelerinden biri ise uzun zamandır Java ile uğraştığını belirten Bayramlı'nın yine Java kullanarak "derleyici" geliştirme çalışmalarından söz etmesiydi.
Bir diğer dikkat çekici sunum, Java Teknolojileri Derneği Başkanı Altuğ B. Altıntaş tarafından hazırlanmış olan ve Struts isimli son dönemde çok popüler olan kurumsal Java geliştirme çatısını (framework) ele alan konuşmaydı. Konuşmasında, Model-1 mimarisi, model-2 mimarisi (MVC tasarım kalıbı), Struts teknolojisi akışı, uluslararasılaştırma ( Internationalization - i18n), onaylama (validation), sunucu taraflı hata yakala, istemci taraflı hata yakalama gibi önemli konulara akıcı bir şekilde değinen Altıntaş, "eğer bu işten bezip büyükbaş hayvancılık işine geçmek istemiyorsanız programlayı olabildiğince kolaylaştıran yöntemleri ve çatıları öğrenmenizde fayda var" deyince salonda yükselen bazı kahkahalar IT sektöründe kurumsal yazılım geliştiren programcıların söz konusu ruh halini gayet iyi bildiklerine dair bir işaret olarak yorumlandı. Sunum gayet akıcı ve anlaşılır olmakla birlikte (bir Internet programcısı olarak iş mantığı ile görünüm/arayüz katmanının ayırmanın ne kadar önemli olduğunu gayet iyi biliyorum!) Struts bünyesinde sunulan özellikler de çok heyecanlandırıcı adımlar gibi gelmedi bana. Doğru yönde bir ilerleme olarak algıladım ancak söz gelimi i18n işlemleri için farklı dil dosyalarında etiketlerin depolanması ve sonra çalışma zamanı esnasında bunların seçilebilmesi ve girdi onaylama/hata yakalama (input validation) işleminin bir nebze basitleştirilmesi müthiş gelişmeler sayılmazdı. Söz gelimi girdi onaylama (gerek istemci, gerek sunucu tarafında olsun) .NET ortamında benzer, daha pratik ve daha estetik bir çıktı üreterek yapılabilir halde ve bu yeni bir şey değil.
Java Kongresinin bir başka önemli sunumu ise yılların yazılım geliştirme deneyimine sahip Ümit Vardar tarafından gerçekleştirildi. "Spring Framework"ü kavramsal olarak tanıtan Vardar, AOP (Aspect Oriented Programming) gibi önemli bir konuya da değinmekle ve konuyu kavramsal olarak güçlü şekilde açıklamakla birlikte, eğer birkaç somut demo yapsaydı eminim konunun çok daha güzel anlaşılmasını sağlayabilirdi. Dinleyicilerden bazılarının sordukları sorulardaki kavramsal karmaşa bu önemli konunun çok iyi anladılmadığının bir işaretiydi.
Son katıldığım konuşmanın kahramanı Melih Sakarya belki de tüm etkinliğin en enerjik, dinamik ve cömert katılımcısı idi. Soru soran herkese bir kutulu Sun Solaris 10 CD seti hediye eden Sakarya, soru yağmuruna tutuldu ve hararetli bir şekilde .NET ve J2EE kıyaslaması yaptı. Sakarya'nın bahsettiği bir nokta önemliydi: ASP ve Visual Basic'e alışmış insanlar .NET ve C#'a geçmeye zorlandıklarından .NET ve C#'ın güçlü özelliklerine bir türlü adapte olamıyor ve ASP'den, Visual Basic'ten kalma kötü alışkanlıklarını .NET'te farkında olmadan sürdürüyorlardı. Oysa bir Java programcısı .NET'e kolay uyum sağlayabiliyor ve kod stilinden tutun performans optimizasyonlarına dek pek çok konuya daha bilinçli yaklaşabiliyordu. Etkinliğin bu en etkileşimli sunumunda konu zaman zaman özgür yazılım, açık kodlu yazılım ile kapalı kodlu yazılım kıyaslamasına, oradan Microsoft'un henüz çıkarmadığı ürünleri bile satabilme sihirbazlığına dek pek çok mecraya kaydı. Genel olarak akıcı ve dikkat çekibi bu sunumda insanlar bir kez daha alternatiflerin ve bir işi hakkıyla yapmanın önemi üzerine düşünme fırsatı buldular.
Sunumlar haricinde de hummalı bir etkinlik olduğunu belirtirsem abartmış olmam çünkü aniden bastıran sıcaklara rağmen pek çok şirket gelip stand açmıştı, aralarında IBM, Oracle, Borland gibi devlerin bulunduğu stand bölgesinde Java ile programlanan Lego'ları tanıtan İstanbul Bilgi Üniversitesi Robotik Kulübü temsilcilerinin yanısıra PIC programlama donanım setleri, kılavuzları satan firmalar, önemli bilgisayar kitapları yayıncıları da mevcuttu.
Böyle önemli bir yazılım etkinliğinin gerçekleştiren ve güzel bir organizasyon hazırlayan, alanlarında uzman olan kişileri bir araya getiren Java Teknolojileri Derneği'ne, ev sahipliği yapan İstanbul Bilgi Üniversitesi'ne ve bu yazıyı kaliteli bir camia ile paylaşma olanağı sunan tüm FM üyelerine teşekkürler.
Emre Sevinç
19 Haziran 2005, 03:43
İstanbul
18 Haziran 2005 Cumartesi, sıcak bir İstanbul sabahı. Yatmadan önce son hatırladığım şey kan çanağı gözlerle Practical Common Lisp kitabından bir bölüm okuduğum idi ancak güneş çoktan doğmuştu ve bir FM edtörü olarak yakından takip etmem gereken bir Java etkinliği vardı. Apar topar kalk, banyo, hemencecik bir şeyler giyin ve dışarı fırla...
İstanbul Bilgi Üniversitesi Dolapdere tesisleri dolu dolu bir etkinliğe ev sahipliği yapmak için hazır görünüyordu. Tanıdığım en iyi Delphi programcısı olan dostumla buluşup açılış konuşmasıyla başlayacak etkinliği izlemek için BS-1 salonuna doğru yol aldım.
İstanbul Bilgi Üniversitesi Dolapdere tesisleri dolu dolu bir etkinliğe ev sahipliği yapmak için hazır görünüyordu. Tanıdığım en iyi Delphi programcısı olan dostumla buluşup açılış konuşmasıyla başlayacak etkinliği izlemek için BS-1 salonuna doğru yol aldım.
Son zamanlarda J2EE teknolojilerini araştırıyorum ve bana göre struts artık biraz yaşlı görünüyor. Yenilik arıyorsanız JSF [www.jsfcentral.com] ye bir göz atmakta fayda var derim.