Java Kongresi İzlenimleri

0
FZ
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.
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

Görüşler

0
Nightwalker
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.


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.
0
BufferedReader
Dogru biraz yasli kaldi ama Turkiye'de ihtiyaci olup da uygulamayan firmalar sayisini bir bilseniz. Hey gidi hey
0
spinodal
Gidemeyenler için süper özet olmuş. Eline sağlık...

Uzun zamandır bu çok başlı, komünite tipi geliştirme ile sahipli, patronlu ya da tek liderli geliştirme arasındaki farkları konuşup duruyorduk arkadaşlarla. O konunun konuşulduğu seansı özellikle merak ettim. Aslında burda da o seansa devam edilebilir :o)
0
BufferedReader
O seansda cok fazla bir konusma olmadi, ama insanlarda soyle bir dusunce var, Java daki tum gelismelerden sorumlu firma Sun Microsystems. Bu boyle degil. JCP (Java Community Process) gozden kacmamali.

Java'ya bu C++ sal ozellikler neden cok gec geldi; cevap JCP ihtiyaci simdi hissetti, karar verdi, belirttimler cikti, onaya sunuldu, kabul edildi ve su an karsimizda... (java 5.0)

Java Teknolojileri Kongresi hepimize hayirli ugurlu olsun.
0
FZ
Benim anlamadığım şey: Neden bu JCP bu kadar övülüyor? İlk akla gelen şey: ama bakın demokratik bir yönetim biçimi, buyrun isterseniz bireysel olarak katılın (ve devasa şirketlere önerilerinizi kabul ettirmeye çalışın). Sanki o tarz bir dil standardı oluşturma biçimi olmasa onbinlerce Java programcısı "cık cık cık, bu dil demokratik süreçlerden geçmeden oluşuyor, o yüzden ben Java ile güzel paralar kazanmaktan vazgeçip bunu bir prensip meselesi yapıp demokratik süreçlerle geliştirilen bir dil+teknoloji kullanmaya başlayacağım bundan böyle" diyecek.

Ayrıca, ihtiyacı şimdi hissetti ne demek ki? Açık bir şey var: Bilgi işlem tarihine bakıyorsunuz bazı güçlü özelliklerin 15 yıl önce, bazısının 20 yıl önce mevcut olduğunu, çeşitli dillerde uygulandıklarını ve bunlarla uygulama geliştirdiklerini görüyorsunuz. Sonra bu özelliklerin, bir kısmını bir şekilde dilin yeni sürümüne entegre edip bunu "yenilik" diye sunduğunuzda ve insanlar da "yahu bunun neresi yenilik, neden daha önce bize işkence çektirdiniz" dediklerinde de "JCP öyle münasip görmüş, demokrasi var, demokrasi demokrasi" falan demek ne kadar anlamlı?

Açıkçası ben bazı şeylerin öyle abartıla abartıla yenilik diye sunulması taraftarı değilim. Yani mesela gelin güzel araçlar gösterin, ne bileyim uzaktaki prosesleri cicili bicili grafiklerle, istatistiklerle bana gösteren araçları, RAD araçlarını vs. öve öve bitiremeyin, bunu bir nebze anlayabilirim ama doğrudan dilin temellerine dair ortaya konmuş ve hiç de öyle aman aman yenilik sayılmayan şeyleri 2005'te yenilik diye lanse etmeyin. (Hele de şu otomatik boxing/unboxing mevzusunu C# diline benzetip sonra da "bakın korkunç bir sözdizimden (syntax) daha az korkunç bir sözdizime geçtik" demek... Açıkçası git gide insanlara çok bilinen dillerin dışındaki alternatif dillerden bahsetmenin daha önemli olduğuna inanmaya başladım bu tür hareketler yüzünden, en azından neyin yeni neyin eski olduğunu anlarlar ve Java, C# filan kullansalar bile çok daha bilinçli yaklaşırlar.)
0
BufferedReader
> Neden bu JCP bu kadar övülüyor?
Programlama dillerinin gelisimi sirasinda JCP gibi bir ortak platform benim bildigim kadariyla yok. Bu iyidir kotudur tartisilir ama JCP sayesinde dilin ileride ne asamalara gelebilecegini ongorebiliyor hatta sekillendirebiliyorsunuz, hemde bu standartlar korunuyor.

Kimse boxing/unboxing gibi ozelliklerin yeni geldigini, Java'nin bunu ilk olarak ortaya koydugunu soylemiyor ki ? Sadece Java icin yeni oldugu soyleniyor, bunun da sebebi JCP 'nin karari bu sekilde olmus olmasi.


Sanki o tarz bir dil standardı oluşturma biçimi olmasa onbinlerce Java programcısı "cık cık cık, bu dil demokratik süreçlerden geçmeden oluşuyor, o yüzden ben Java ile güzel paralar kazanmaktan vazgeçip bunu bir prensip meselesi yapıp demokratik süreçlerle geliştirilen bir dil+teknoloji kullanmaya başlayacağım bundan böyle" diyecek.


Demokratik bir oylama ve standartlar olmadan olaylarin nelere geldigini gorduk. Ornegin bir C'yi ele alalim, her firmanin kafasina gore cikartigi derleyiciler yuzunden ortalik toz duman icinde


Linux un kernel i icin otorite Linus Torvalds olmasina ragmen diger taraflarda standartlar pek rayinda gozukmuyor


Kisacasi Java bu standartlardan ve bunun dogal sonucu olarak tutarli davranislarindan epey bir prim yapiyor, isteyen tercih eder veya etmez orasi ayri...


0
FZ
Programlama dillerinin gelisimi sirasinda JCP gibi bir ortak platform benim bildigim kadariyla yok. Bu iyidir kotudur tartisilir ama JCP sayesinde dilin ileride ne asamalara gelebilecegini ongorebiliyor hatta sekillendirebiliyorsunuz, hemde bu standartlar korunuyor.

Etmeyin eylemeyin. Sözlerinizi duyan da ANSI [1], ISO gibi oluşumlar yok sanacak. Bu kurumlarda öneriler, taslaklar, oylamalar yok sanacak.

Sözlerinizi duyanlar, vakti zamanında insanlar J2EE, EJB gibi standartlar var ne güzel, yaşasın deyip sonra da IBM'den falanca filancanın "Application Server"ına geçişte hiçbir sorun yaşanmamış, her şey güllük gülistanlık olmuş sanacak.

Kimse boxing/unboxing gibi ozelliklerin yeni geldigini, Java'nin bunu ilk olarak ortaya koydugunu soylemiyor ki? Sadece Java icin yeni oldugu soyleniyor, bunun da sebebi JCP'nin karari bu sekilde olmus olmasi.

Java'nın bunu ortaya koyan ilk dil olduğu söylenmiyor (haklı olarak) ama bu dilin yapısında ciddi bir yenilik olarak lanse ediliyor. Bunu gören bir insan demez mi: Yahu bu JCP ne menem bir süreçmiş, nasıl bir organizasyonmuş da bunu şimdi akıl etmiş, bu kadar deneyimli programcı, bu kadar büyük şirket bir araya gelmiş de ancak şimdi mi bunu akıl edebilmiş? Üstelik madem sözdizimi bu şekilde basitleştirecekti buna çok daha önceden ağırlık verilmesi gerekmez miydi?

Burada hazır "dil"in gücünden bahsederken, bazen Java'cılardan şu tür itirazlar duyuyorum: Yahu ben Eclipse kullanıyorum, süper IDE, "get"terları, "set"terları otomatik olarak yazıyor sınıf içindeki üye değişkenlere bakıp. Benim tepkim: Dile bunu otomatik ürettiremeyince IDE'nin gücüne bel bağlıyorsunuz. Dili çok daha güçlü kılmak yerine IDE'nin işlevselliğinden dem vurup sanki dilin gücüymüş gibi gösteriyorsunuz.

JCP'dekilere bir öneri: Madem C#'tan esinleniyorsunuz bazı şeyleri, bari şu get/set'lerin "property" gibi görünüp "method" olarak çalışmasına izin veren sözdizimini de alsaydınız ya, böylece sürekli BirNesne.getBasitBirProperty(); ve BirNesne.setBasitBirProperty(12); yerine BirNesne.basitBirProperty ve BirNesne.basitBirProperty = 12; vs. yazılabilseydi.



Demokratik bir oylama ve standartlar olmadan olaylarin nelere geldigini gorduk. Ornegin bir C'yi ele alalim, her firmanin kafasina gore cikartigi derleyiciler yuzunden ortalik toz duman icinde


Toz duman? Armutlarla elmaları mı kıyaslıyoruz? Bir yanda VM üzerinde çalışan Java teknolojisi, öte yanda doğrudan mimariye yönelik binary kod üreten C derleyicileri. Kaldı ki, yine standartlara uygun C kodunu alıp ister Windows için, ister GNU/Linux için, ister Solaris için derlersiniz ve güzel güzel çalıştırırsınız. (Basit bir örnek: Millet tamamen UNIX sistemler üzerinde geliştirilen ve gcc, make, vs. için yazılan GMP - GNU Multiple Precision library sistemini alıyor ve MS Windows üzerinde derliyor, çalıştırıyor filan ki burada küçük bir uygulamadan bahsetmiyoruz, epey ciddi, detaylı, büyük, sofistike bir sayısal işlem kütüphanesidir söz konusu olan).

Ya da ne bileyim, gider Perl yazarsınız, MS Windows'ta ya da GNU/Linux'ta ya da Solaris'te güzel güzel çalıştırırsınız.

Ya da PHP yazarsınız ve...

Ya da aplikasyon da aplikasyon diye bir derdiniz varsa (enteresandır kongredeki sunumların ezici çoğunluğu masaüstü uygulamalardan/aplikasyonlardan değil, web programlamadan bahsediyordu) gider Qt kullanırsınız ve C++ ile yazdığını kodu ister GNU/Linux, ister MS Windows, ister bir cep telefonu üzerinde çalıştırırsınız.



Linux un kernel i icin otorite Linus Torvalds olmasina ragmen diger taraflarda standartlar pek rayinda gozukmuyor


12-13 yıldır geliştirilen bir işletim sistemi çekirdeğinden bahsetmişsiniz. Çok güzel bir örnek. Acaba demokratik mi değil mi? Torvalds, gelişmenin çanına ot tıkayan bir diktatör mü? JCP gibi bir süreçle işlese idi Linux dediğimiz çekirdek bugün çok daha iyi bir noktada mı olurdu? Dil cephesinden bakalım, milyonların sevgilisi, kara gün dostu Perl dilinin 15 (yoksa 16 mı?) diktatörü (!) Larry Wall yüzünden Perl programcıları tutarsızlıkların pençesinde ölüm kalım savaşı mı veriyorlar, işleri bu anti-demokratik (mi acaba?) süreçle geliştirilen Perl dili yüzünden tehlikeye mi atılıyor? Ya da donanım örneği: Apple iki hacker'ın beyinçocuğu olarak değil de 50 tane şirketin kurduğu komisyonun ağır ağır karar verdiği bir sürecin sonunda ortaya çıksa idi Apple olur muydu?

Bunları masaya yatıralım ve tartışalım hep birlikte. Bazı şeyleri öyle hap gibi kabul etmeyelim, biraz içini deşelim, işin ucu nereye varıyor biraz spekülasyon yapalım.

1- http://tr.wikipedia.org/wiki/ANSI
0
mdakin
- Application Serverler arası geçiş o kadar da korkunç bir problem değil.
- propertylerin o kadar önemli olduğunu sanmıyorum. public üye değişkenlerden ne kadar büyük bir farkı var ?
- Bu arada Java ve C# konusunda ben de fikrimi söyleyeyim, işin aslı C#'a sadece şöyle bir göz attım. "Java + bir şeyler - birşeyler" gibi göründü gözüme, güzel bazı özellikleri var ama ahım şahım şeyler değil. Java'nın felsefesi biras kalabalık ta olsa basitliktir, C# çok fazla keyword ve C++ dan gelen pointer kullanımı , operator overloading gibi gereksiz karmaşıklıklar içeriyor. O yüzden ısınamadım. bir de metod isimleri büyük harfle başlamasına alışamadım.
0
FZ

Application Serverler arası geçiş o kadar da korkunç bir problem değil.


Pek çok problem, baktığınız perspektife göre kolay/zor görünebilir.


propertylerin o kadar önemli olduğunu sanmıyorum. public üye değişkenlerden ne kadar büyük bir farkı var?


Deneyimli bir Java geliştiricisinin, dolayısı ile Object Oriented mantalite ile yatıp kalkan bir yazılımcının bu sözleri beni şaşırtmadı dersem yalan olur. OO'nun düsturlarından biri değil midir "sınıf içindeki bir şeye dışarıdan asla ve kat'a müdahale ettirmeyin, her şeyi metodları üzerinden yapın, yaptırın, güç sizde, kontrol sizde olsun" lafı? Bir "public" değişkene doğrudan atama yapılmasını engelleyemezsiniz oysa bunu C# tarzı bir property method üzerinden yapıyorsanız gerek "get" gerekse "set" aşamasında istediğiniz kontrolleri yapabilir, istediğiniz uyarıları verdirebilirsiniz. Yani "getter" ve "setter" metodlarının sağladığı tüm avantajları gömülü olarak sunar üstüne bir de sadeleşmiş ve daha doğal görünümlü bir sözdizim sunar. Ayrıca eğer isimlendirmede tutarlı davrandı iseniz bakar bakmaz anlaşılır noktadan sonra gelen sözün public değişken mi yoksa propert method şeklinde bir şey olup olmadığı.

"Java + bir şeyler - birşeyler" gibi göründü gözüme

Doğru görünmüş. Bana da öyle görünüyor.


güzel bazı özellikleri var ama ahım şahım şeyler değil.


Bence de değil, o yüzden Java dilini geliştirenlerin, dile yeni özellik katmada söz sahibi olanların nasıl olup da bunları daha önce katmadıklarına şaşırdım. Sonra baktık otomatik boxing/unboxing filan, haa demek ki Microsoft gibi bir rakibin çıkması gerekiyormuş dedik (nasıl ki C# ve .NET için Sun Microsystems ve IBM ve BEA, vs. gibi rakiplerin çıkması gerektiyse).


Java'nın felsefesi biras kalabalık ta olsa basitliktir, C# çok fazla keyword


Yok o kadar çok keyword içermiyor bildiğim kadarı ile. Bir C++ gibi değil yani.


ve C++ dan gelen pointer kullanımı


Kontrollü kod/yönetilen kod (managed code) şeklinde çalıştığınızda öyle pointer'dı, hafızanın istediğim yerine istediğim gibi erişirim türünden bir şey sunmuyor C#. "Unmanaged code" şeklinde bir şeyler yazma imkanına gelince bunu C++.NET için sunuyordu MS diye hatırlıyorum (şu anda C# için var mı o imkan emin değilim, herhangi bir C# kitabında pointer diye bir şey gördüğümü hatırlamıyorum).


, operator overloading gibi gereksiz karmaşıklıklar içeriyor.


Evet "operator overloading" var ama bunu unutun, zararlı çıkmazsınız. İhtiyaç duyacağınız bir zaman olursa elinizin altında. Çok fazla yük getirmiyor dile.


O yüzden ısınamadım. bir de metod isimleri büyük harfle başlamasına alışamadım.


Buna bir sözüm yok, yılların getirdiği bir alışkanlıktan ötürü elbet ters görünebilir ama en azından .NET bu konvansiyon bakımından kendi içinde tutarlı, kullanan programcı da bu konvansiyonu devam ettirip tutarsız bir kullanımdan kaçındığı sürece okumayı kolaylaştıracağını düşünüyorum bu alışkanlığın. Tabii ki hiç kimse o harf konvansiyonuna uymak zorunda değil, kendi alışkanlıklarınızı dayatabilirsiniz kendi yazdığınız sınıflarda ve o sınıfların üyelerinde.
0
yilmaz
.net 2.0 beta nisan ayında çıktı. MS in şimdiye kadar çıkardığı en iyi beta denilebilir. Kullanılabilen component sayısı en az 3 katına çıktı. eski datagrid kalktı gridview geldi. hemen hemen aklınıza gelebilecek birçok şey hazır olarak var içinde. artık program yazarken " set get property " muhabbetinden çok. "bu login kutusunun çalışması için iis te ne ayar yapıyorduk yahuu" gibi cümleler duyacağız. legolarla oynar gibi program yazılacak. tabi parçaların eksik kaldığı yerde tıkanıp kalacağız. tek başına c# ı ele almaktansa c# ın içinde bulunduğu platformu konuşmak lazım. (eski projelerimi .net 2.0 a aktarırken projeleri berbat ettim çalışmıyolar şimdi napıcam ben yaaa)
0
mdakin
Eskiden beri hep "Legolarla program yazacağız" muhabbeti gelir durur, Legolarla ancak "lego" tadında projeler yapılabiliyor, işler biraz çetrefilleşince legolar malesef yetersiz kalıyor.
0
ttk
Merhaba

Lego mego derken, Delphi 1'de vcx windows 3.X yapısına uygun (adını yanlış hatırlamıyorsam) vcx'ler vardı , Deplhi 2.0'dan sonra bunlar OCX diye bir şeylere dönüştü. Oradan buradan yakışıklı Wcx [:)] ler bularak program yapıp bir de programının temel noktalarını bunları koyanların başı bayağı ağrıdı hatırladığım kadarı ile.

Ayrıca, eğer NET 2.0'a geçişte, platformun hazırlayıcısı tek firma iken rezillik çekilecekse, bu durum insanları bir şeylerden soğutmanın en iyi yollarındandır. İnsanlar elleri mahkum iken aynı araçla yola devam eder ama ilk fırsatta da terkederler onu diye düşünüyorum.
Acaba bu NET 2.0'a geçişte saçmalık Mono'ya çelme takma amaçlı olabilir mi ? Neyse ...
0
BufferedReader

Etmeyin eylemeyin. Sözlerinizi duyan da ANSI [1], ISO gibi oluşumlar yok sanacak. Bu kurumlarda öneriler, taslaklar, oylamalar yok sanacak.


Bu kurumlar tabii ki cok onemli ve degerli ama micro~1 karsinda ne kadar etkili olduklari supheli, soyle bir ornek vereyim : Turkce karakter kumesinin ISO standarlarina gore ISO-8859-9, ama micro~1 karsiligi sizce ayni mi, tabii ki degil Cp1254 gibi biseyler. Bunun gibi basit bir olayda dahi yaptirici etkiler getiremeyen bu kurumlarin, bu yanlari bence eksik.

Bu tur standart disi hareketlere karsi Sun olayi en basinda gorerek micro~1 actigi dava ile yilanin basini ufakken ezdi :)


Sözlerinizi duyanlar, vakti zamanında insanlar J2EE, EJB gibi standartlar var ne güzel, yaşasın deyip sonra da IBM'den falanca filancanın "Application Server"ına geçişte hiçbir sorun yaşanmamış, her şey güllük gülistanlık olmuş sanacak.


Bu konuda ufak sorunlarin yasandigi dogru ama sebebi kodlarin uyumsuzlugu degil standartlar yine kullaniciyi koruyor, buradaki sorun konfigurasyon dosyalarindaki (xml dosyalarindaki) standartsizlik ki JCP bu konuda ne yapabilir ki ?


Java'nın bunu ortaya koyan ilk dil olduğu söylenmiyor (haklı olarak) ama bu dilin yapısında ciddi bir yenilik olarak lanse ediliyor. Bunu gören bir insan demez mi: Yahu bu JCP ne menem bir süreçmiş, nasıl bir organizasyonmuş da bunu şimdi akıl etmiş, bu kadar deneyimli programcı, bu kadar büyük şirket bir araya gelmiş de ancak şimdi mi bunu akıl edebilmiş? Üstelik madem sözdizimi bu şekilde basitleştirecekti buna çok daha önceden ağırlık verilmesi gerekmez miydi?


Bu sizin kendi fikrinizdir saygi duyarim, gec kalinmistir diyenler olabilir veya Java su zamana kadar cok iyidi, ne halt yemeye bunlari getirdiler ki diyenler olabilir, ama ortaki gercek bunlarin artik Java 5 de var oldugudur. Bunun yaninda Java'nin Generics ve Assertion gibi ozgun ozelliklerinde de bahsersek seviniriz. yigidi oldurelim ama hakkini yemeyelim.


Burada hazır "dil"in gücünden bahsederken, bazen Java'cılardan şu tür itirazlar duyuyorum: Yahu ben Eclipse kullanıyorum, süper IDE, "get"terları, "set"terları otomatik olarak yazıyor sınıf içindeki üye değişkenlere bakıp. Benim tepkim: Dile bunu otomatik ürettiremeyince IDE'nin gücüne bel bağlıyorsunuz. Dili çok daha güçlü kılmak yerine IDE'nin işlevselliğinden dem vurup sanki dilin gücüymüş gibi gösteriyorsunuz.


Bu konuda size hak veriyorum ama sunuda goz ardi etmeyelim, micro~1 su zamana kadar ne kazandiysa kolay bir sekilde uygulama gelistirme araclarindan kazandi. IDE'lerin onemini cok buyuk. "vi da kod yazsinlar efendim" diyen bir zihniyeti cagimiz ne yazik ki kabul etmemektedir. Oyunu kuralina gore oynamak lazim -ki Netbeans ve Eclipse gibi gelismis IDE ler, bu oyunda Java Teknolojilerinin en buyuk silahlari.


Toz duman? Armutlarla elmaları mı kıyaslıyoruz? Bir yanda VM üzerinde çalışan Java teknolojisi, öte yanda doğrudan mimariye yönelik binary kod üreten C derleyicileri. Kaldı ki, yine standartlara uygun C kodunu alıp ister Windows için, ister GNU/Linux için, ister Solaris için derlersiniz ve güzel güzel çalıştırırsınız. (Basit bir örnek: Millet tamamen UNIX sistemler üzerinde geliştirilen ve gcc, make, vs. için yazılan GMP - GNU Multiple Precision library sistemini alıyor ve MS Windows üzerinde derliyor, çalıştırıyor filan ki burada küçük bir uygulamadan bahsetmiyoruz, epey ciddi, detaylı, büyük, sofistike bir sayısal işlem kütüphanesidir söz konusu olan).


Sonucta C dilini her kullanan isletim sistemi yazacak degil, olaylara bu acidan bakacak olursak C de bir programlama dili, Java 'da , Pascal 'da.

Sizin verdiginiz ornekteki projenin boyutlari tam bilimiyorum ama ortada birde Visual C++ gibi bir gercek var. Herkes gcc gibi derleyiciler kullanmiyor, bu konuda dikkatinizi cekmek isterim. IDE sinin guzelligi sayesinde pek cok taraftari var. Hadi simdi standartlari saglayin bakalim ??


JCP'dekilere bir öneri: Madem C#'tan esinleniyorsunuz bazı şeyleri, bari şu get/set'lerin "property" gibi görünüp "method" olarak çalışmasına izin veren sözdizimini de alsaydınız ya, böylece sürekli BirNesne.getBasitBirProperty(); ve BirNesne.setBasitBirProperty(12); yerine BirNesne.basitBirProperty ve BirNesne.basitBirProperty = 12; vs. yazılabilseydi.


Bu esinlemek ifadesini pek sevmedim, C# in kimden esinledigi cok ortada. Sonucta bu esinlenme meselesinin disinda Java'nin en buyuk iki avantaji platform bagimsizligi ve satici (vendor) bagimsizligi. En azindan bu ikisi tam anlamiyla C# olmayacak (sakin mono projesinden bahsetmeyin, hala eski .NET catisini destekliyor)


Ya da aplikasyon da aplikasyon diye bir derdiniz varsa (enteresandır kongredeki sunumların ezici çoğunluğu masaüstü uygulamalardan/aplikasyonlardan değil, web programlamadan bahsediyordu) gider Qt kullanırsınız ve C++ ile yazdığını kodu ister GNU/Linux, ister MS Windows, ister bir cep telefonu üzerinde çalıştırırsınız.


Kongre hibernate, cep telefonlari ile ilgili sunumlarda yapildi. 2005 yilinda Turkiye'de ve Dunya'da uygulamalarin cogu web tabanli olmasi sunumlarin icerigini de bu yonde etkilemis olabilir. Kaldi ki Java'nin en guclu oldugu yerlerden bir tanesi cep telefonu sektoru. Cep telefonlarda oyunlarin neredeyse %95 'i J2ME ortaminda Java ile yaziliyor. Bu konuda biraz ince eleyip sIk dokumanizi tavsiye ediyorum. Insallah seneye cep telefonu agirlikli bir kongre olur, kongrede anlatilanlar Java'nin dunyadaki yerini belirlemez, hersey kismet nasip.


12-13 yıldır geliştirilen bir işletim sistemi çekirdeğinden bahsetmişsiniz. Çok güzel bir örnek. Acaba demokratik mi değil mi? Torvalds, gelişmenin çanına ot tıkayan bir diktatör mü? JCP gibi bir süreçle işlese idi Linux dediğimiz çekirdek bugün çok daha iyi bir noktada mı olurdu?


Java, JCP ile birlikte var olmadi, daha sonradan standartlari korumak icin var oldu ve bence gerekli ve hos bir topluluk. Torvalds icin diktetor demiyorum ama gelisimi ve kavgalar ortada. Bu sekilde micro~1 ile cok iyi kapisamiyor, yayginlamiyor (masaustu icin konuyorum) cunku insanlarin kafasi cok karasik (basit bir sirketi veya az bilgili insanlarida hesaba katmak lazim sonucta pazarin buyuk cogunlugunu onlar olusturuyor.)


Dil cephesinden bakalım, milyonların sevgilisi, kara gün dostu Perl dilinin 15 (yoksa 16 mı?) diktatörü (!) Larry Wall yüzünden Perl programcıları tutarsızlıkların pençesinde ölüm kalım savaşı mı veriyorlar, işleri bu anti-demokratik (mi acaba?)


micros~1 perl e bir el atarsa o zaman goruruz standartlarini ve demokratiklesmeye olan dusmanligi.


Bunları masaya yatıralım ve tartışalım hep birlikte. Bazı şeyleri öyle hap gibi kabul etmeyelim, biraz içini deşelim, işin ucu nereye varıyor biraz spekülasyon yapalım.


%100 katiliyorum..
0
FZ
Detaylı cevabınız ve katlandığınız zahmetler için teşekkürler. Baştan şunu belirteyim de bir yanlış anlama olmasın: Ben de IT dünyasındaki fani yazılımcılardan biriyim hatta son kullanıcıdan esinlenerek son geliştirici (end developer) diyebiliriz. Derdim, min. hamallık yaparak min. sorun çıkaran sistemleri geliştirip ayakta tutmaya çalışmak. Bu yüzden C# olsun, Java olsun, Common Lisp olsun... olsun da olsun yani, hangi araç ve teknoloji bana bu savaşta güç katacaksa onu seve seve kullanmaya, öğrenmeye çalışırım. Hem MS Windows hem Debian GNU/Linux kullanıyorum (hem de vakti zamanında Solaris ile haşır neşir oldum) ve bir aracı çok kullanıyorum diye ona laf etmeyecek değilim (mesela yıllarca ASP [içinde VBScript] programladım ve modern bir yazılım geliştirme yaklaşımından ne denli uzak olduğunu, yazılımcılara ne denli çile çektirdiğini her fırsatta dile getirdim).

Bu kurumlar tabii ki cok onemli ve degerli ama micro~1 karsinda ne kadar etkili olduklari supheli, soyle bir ornek vereyim : Turkce karakter kumesinin ISO standarlarina gore ISO-8859-9, ama micro~1 karsiligi sizce ayni mi, tabii ki degil Cp1254 gibi biseyler. Bunun gibi basit bir olayda dahi yaptirici etkiler getiremeyen bu kurumlarin, bu yanlari bence eksik.

Bu tur standart disi hareketlere karsi Sun olayi en basinda gorerek micro~1 actigi dava ile yilanin basini ufakken ezdi :)


Şimdi enteresandır, Java deriz, Windows deriz, her şey iki tıkla hallolur, uyumludur, standarttır deriz. Sonra bir bakarız misal FreeMind gibi Java ile yazılmış bir masaüstü uygulama I/i sorunu yaşamaktadır (eski sürümlerinde yani bundan 1 sene kadar önce) yani işte I'nın bizde küçük halinin "ı" olması, öte yandan bizim sevgili "i"nin upperCase deyince, hoppaa, "İ" olması ve bunun XML dahil pek çok yerde mütemadiyen patlaması, vs. Şimdi suçlu kim? Microsoft'a mı çamur atacağım? Java'ya mı? Aynı problemin programı Debian GNU/Linux'ta çalıştırırken de yaşandığını söylersem ne diyeceksiniz peki? Programcı dangalaklığı/dalgınlığı mı? Ya da bundan yaklaşık 4 yıl önce JCE (Java Cryptography Extension) mıydı neydi onunla uğraşırken sistemin Regional Settings = Turkish olunca çalışmamasını ama US/English yapınca çalışmasına ne buyrulur?

"Bunlar münferit vakalar efendim, bana bunlarla gelmeyin" dediğinizi duyar gibiyim :) Amacım bağcıyı dövmek değil üzüm yemek ve bundan ziyade işlerin öyle güllük gülistanlık olmadığını bazen küçücük gibi görünen problemli şeylerin insanları 3-4 gün uğraştırıp saç yoğunluklarını düşürdüğünü söylemek (JCE vakasında Sun Microsystems Certified Java mühendisi bir arkadaş yardımcı olamamıştı da yüzüğün sırrını Siemens Ankara'dan bir Türk söylemiş ve "Türk'ün Türk'ten başka dostu yok mu beeeaa" nidaları attırmıştı bana :)


Bu konuda ufak sorunlarin yasandigi dogru ama sebebi kodlarin uyumsuzlugu degil standartlar yine kullaniciyi koruyor, buradaki sorun konfigurasyon dosyalarindaki (xml dosyalarindaki) standartsizlik ki JCP bu konuda ne yapabilir ki?


Yukarıda da belirttiğim gibi, işlerin güllük gülistanlık olmadığına tekrar dikkat çekeyim istedim. Yoksa bol para ve bir sürü zeki adam şirketin emrinde olunca çözülmeyecek sorun var mıdır, pek fazla yoktur herhalde.


Bunun yaninda Java'nin Generics ve Assertion gibi ozgun ozelliklerinde de bahsersek seviniriz. yigidi oldurelim ama hakkini yemeyelim.


Generics mi özgün? Özgün sözcüğünü "unique" olarak da alsanız "original" olarak da alsanız bana pek doğru görünmedi dediğiniz. Yıllar öncesinin STL'si vs. dururken yani.


micro~1 su zamana kadar ne kazandiysa kolay bir sekilde uygulama gelistirme araclarindan kazandi. IDE'lerin onemini cok buyuk. "vi da kod yazsinlar efendim" diyen bir zihniyeti cagimiz ne yazik ki kabul etmemektedir. Oyunu kuralina gore oynamak lazim -ki Netbeans ve Eclipse gibi gelismis IDE ler, bu oyunda Java Teknolojilerinin en buyuk silahlari.


IDE önemsizdir, kullanılan araç seti de ne ki, peh! filan diyen bir adam olarak görmemişsinizdir umarım beni. Tabii ki araçlar çok önemlidir ancak maalesef yazdıklarınızdan sanki beni yanlış anladığınız düşüncesine kapılıyorum. Bunu da açalım: Benim bildiğim metin editör tabanlı çalışıyor gibi görünen yazılım geliştiriciler ezici çoğunlukla (diğerlerine kıyasla) VIM ya da GNU Emacs/XEmacs kullanırlar ki her ikisi de editörün çok çok ötesinde, aşırı özelleştirilebilir tümleşik geliştirme ortamları sunar (context sensitive help, kod tamamlama, derleyici sonuçlarından, hatalarından kodla ilgili yere zıplatma, vs.). Gördüğünüz gibi 2005 yılında kimse 30 yıl öncesinin "vi" editörü ile program yazmayı savunmamaktadır (yoksa savunmakta mıdır?) Tekrar tekrar belirteyim, araçlar elbette önemlidir, IDE çok çok önemlidir, Eclipse ne kadar önemliyse Visual Studio.NET de bazı işler için o denli önemlidir ama yine etmeyin eylemeyin diyorum, biz burada dilin kendisinden bahsediyoruz ve onun gücünden, tartışmanın orta yerine Eclipse'i, NetBeans'i sokarsanız konu Java dediğimiz "dil"in gücünün dışında bir mecraya kayar, bunu doğru bulmuyorum.


Bu esinlemek ifadesini pek sevmedim, C# in kimden esinledigi cok ortada. Sonucta bu esinlenme meselesinin disinda Java'nin en buyuk iki avantaji platform bagimsizligi ve satici (vendor) bagimsizligi. En azindan bu ikisi tam anlamiyla C# olmayacak (sakin mono projesinden bahsetmeyin, hala eski .NET catisini destekliyor)


Esinlenmek lafını neden sevmiyorsunuz? Akıllı olan tasarımcı gider bir sürü fikir çalar ve bunu kendi sistemine yedirir. Bunu yapmayan büyük teknoloji gösterebilirseniz çok şaşıracağım. Otomatik boxing/unboxing lafını duyduğum anda, aaaa C# dedim. Generics lafını duyduğum anda, aaa C# 2.0 ve C++ dedim mesela. C# da nerede ise tüm sözdizimini Java'ya dayanarak oluşturmuş durumda (bazı problemli şeyleri çıkarıp bazı güzel şeyler ekleyerek) ama misal ben C#'a baktığımda, aaa ne kadar orjinal ne denli özgün dil demiyorum. Peh, afferim size Java'dan feyz almışsınız diyorum. Platform ve satıcı bağımsızlığına gelince, bu yine "dil"in gücü, dilin özellikleri tartışmasına çıkmak gibi oluyor bence.


Torvalds icin diktetor demiyorum ama gelisimi ve kavgalar ortada. Bu sekilde micro~1 ile cok iyi kapisamiyor, yayginlamiyor (masaustu icin konuyorum) cunku insanlarin kafasi cok karasik (basit bir sirketi veya az bilgili insanlarida hesaba katmak lazim sonucta pazarin buyuk cogunlugunu onlar olusturuyor.)


Hah, bakın ne güzel demişsiniz. Küçük şirketleri ve süper hacker modunda 7/24 bilgisayar başında saç dökmeyen insanları hesaba katalım demişsiniz, tam da bu argümanlardan ötürü MIT'nin meşhur hocalarından Greenspun J2EE milletin yeteneklerini zorluyor, orta ölçekli işler için .NET kullanın diyor. Buyrun buradan yakın. Kriterimiz bu mu olacak?


micros~1 perl e bir el atarsa o zaman goruruz standartlarini ve demokratiklesmeye olan dusmanligi.


Larry Wall yaşadığı sürece imkansız. Öte yandan JCP gibi demokratik bir sürece Microsoft'un katılmasını engelleyen ne? Ben bile katılabiliyorsam? (Hemen hatırlanması gereken bilgi, IE yüzünden küfrettiğimiz Microsoft, W3C üyelerinden ve öneri sunanlarından biridir).






0
Nightwalker
Deneyimli bir Java geliştiricisinin, dolayısı ile Object Oriented mantalite ile yatıp kalkan bir yazılımcının bu sözleri beni şaşırtmadı dersem yalan olur. OO'nun düsturlarından biri değil midir "sınıf içindeki bir şeye dışarıdan asla ve kat'a müdahale ettirmeyin, her şeyi metodları üzerinden yapın, yaptırın, güç sizde, kontrol sizde olsun" lafı? Bir "public" değişkene doğrudan atama yapılmasını engelleyemezsiniz oysa bunu C# tarzı bir property method üzerinden yapıyorsanız gerek "get" gerekse "set" aşamasında istediğiniz kontrolleri yapabilir, istediğiniz uyarıları verdirebilirsiniz. Yani "getter" ve "setter" metodlarının sağladığı tüm avantajları gömülü olarak sunar üstüne bir de sadeleşmiş ve daha doğal görünümlü bir sözdizim sunar.


Bu kısmı biraz açar mısınız neden değişkeni hem public tanımlayıp hemde atamayı engellemek isteyesiniz ki ? Bunun dışında bir tanım yaptıysanız yani getter setter kullanıyorsanız o durumda zaten istediğiniz denetimi yapabilirsiniz.

Ben de IT dünyasındaki fani yazılımcılardan biriyim hatta son kullanıcıdan esinlenerek son geliştirici (end developer) diyebiliriz. Derdim, min. hamallık yaparak min. sorun çıkaran sistemleri geliştirip ayakta tutmaya çalışmak. Bu yüzden C# olsun, Java olsun, Common Lisp olsun... olsun da olsun yani, hangi araç ve teknoloji bana bu savaşta güç katacaksa onu seve seve kullanmaya, öğrenmeye çalışırım.


Tekrar tekrar belirteyim, araçlar elbette önemlidir, IDE çok çok önemlidir, Eclipse ne kadar önemliyse Visual Studio.NET de bazı işler için o denli önemlidir ama yine etmeyin eylemeyin diyorum, biz burada dilin kendisinden bahsediyoruz ve onun gücünden, tartışmanın orta yerine Eclipse'i, NetBeans'i sokarsanız konu Java dediğimiz "dil"in gücünün dışında bir mecraya kayar, bunu doğru bulmuyorum.


Sizce bu iki görüşünüz arasında çelişki yok mu ? Bir dilin gücünu (eğer bilimsel olarak araştırmalar ile değilde piyasa koşulları ile ölçüyorsak [Hızlı kod geliştirme sağlamlık vs..])
IDE de o dilin gücünü belirleyen önemli faktörlerden biri haline gelir. Aynı Dokümantasyon topluluk desteği (veya şirket desteği yerine göre...) gibi.
0
FZ
Bu kısmı biraz açar mısınız neden değişkeni hem public tanımlayıp hemde atamayı engellemek isteyesiniz ki ? Bunun dışında bir tanım yaptıysanız yani getter setter kullanıyorsanız o durumda zaten istediğiniz denetimi yapabilirsiniz.

Değişkeni "public" yapmıyoruz. Hiçbirisini yapmıyoruz. Hepsi "private" ve property-method tarzı bir şeyle erişiliyor. Dolayısı ile nesneyi kullanan kişi sanki public bir değişkene erişirmişçesine bir sözdizim kullanırken bir yandan da metodların kontrol edici gücünden, OO'nun temel düsturlarından faydalanıyoruz.

Ne demek istediğimi şuradaki kod örnekleri anlatıyor:

http://www.dotnetspider.com/technology/tutorials/ClassProperties.aspx


Sizce bu iki görüşünüz arasında çelişki yok mu ? Bir dilin gücünu (eğer bilimsel olarak araştırmalar ile değilde piyasa koşulları ile ölçüyorsak [Hızlı kod geliştirme sağlamlık vs..])
IDE de o dilin gücünü belirleyen önemli faktörlerden biri haline gelir. Aynı Dokümantasyon topluluk desteği (veya şirket desteği yerine göre...) gibi.


Çelişki yok. Bilimsel araştırmaları filan bir kenara bırakalım, kod yazarken kolaylık sağlamak iki şekilde olur, kolayca kod yazmanızı sağlayan dil yapıları vardır... ya da yoktur. İkinci yöntem ise araca bel bağlamaktır. Bir IDE'nin yaptığı şeyler "dil"in kendisinin bir özelliği değildir. Yarın öbürgün ben gider çok daha güçlü bir IDE yazarım, aynı dil sanki daha güzel ve kıvrak gibi görünebilir. Araçlar elbet önemlidir, Eclipse çok daha gelişsin, Visual Studio.NET daha da güçlü olsun, bundan en ufak bir şikayetim yok ama VS.NET güçlü bir araç diye C# çok matah bir dil olmuyor, Eclipse güçlü bir araç diye Java'nın kendisi süper bir dil olmuyor. (Bazılarının deyişi ile Eclipse, Java ile çalışmayı "katlanılabilir" kılıyor).

Bu konu hakkında birkaç güzel makale okumak isterseniz:

The IDE Divide
http://osteele.com/archives/2004/11/ides

The IDE divide
http://www.sitepoint.com/blog-post-view.php?id=212780
0
Nightwalker
Değişkeni "public" yapmıyoruz. Hiçbirisini yapmıyoruz. Hepsi "private" ve property-method tarzı bir şeyle erişiliyor. Dolayısı ile nesneyi kullanan kişi sanki public bir değişkene erişirmişçesine bir sözdizim kullanırken bir yandan da metodların kontrol edici gücünden, OO'nun temel düsturlarından faydalanıyoruz.

Ne demek istediğimi şuradaki kod örnekleri anlatıyor:

http://www.dotnetspider.com/technology/tutorials/ClassProperties.aspx


Verdiğiniz link için teşekkürler gerçekten çok temiz bir anlatım var. Ancak sonuçta olan yine çok önemli ve gerekli bir gelişme değil bana göre zaten bütün atılan taklaların sonucunda bize kazandırdığı (yazıya göre) daha az ve daha temiz kod yazmak. Ve bir de denetim işlevini değer değişkene atanmadan öce gerçekleştirmek (ki aslında o rada da bir geçici belleğe atama yapılması gerekir mantıksal olarak sadece biz bunu görmüyoruz. (özetle bunun da çok fazla bir anlamı olduğunu düşünmüyorum.) ).

Eğer daha kısa kod yazmak istersem ve bunun için java'dan vazgeçeceksem Ruby kullanırım kısa ve temiz kod yazımını en iyi şekliyle kullanırım ama bunun için tercihim .Net olmaz.

Çelişki yok. Bilimsel araştırmaları filan bir kenara bırakalım, kod yazarken kolaylık sağlamak iki şekilde olur, kolayca kod yazmanızı sağlayan dil yapıları vardır... ya da yoktur. İkinci yöntem ise araca bel bağlamaktır. Bir IDE'nin yaptığı şeyler "dil"in kendisinin bir özelliği değildir. Yarın öbürgün ben gider çok daha güçlü bir IDE yazarım, aynı dil sanki daha güzel ve kıvrak gibi görünebilir. Araçlar elbet önemlidir, Eclipse çok daha gelişsin, Visual Studio.NET daha da güçlü olsun, bundan en ufak bir şikayetim yok ama VS.NET güçlü bir araç diye C# çok matah bir dil olmuyor, Eclipse güçlü bir araç diye Java'nın kendisi süper bir dil olmuyor. (Bazılarının deyişi ile Eclipse, Java ile çalışmayı "katlanılabilir" kılıyor).


IDE tabiki dilin bir özelliği değildir. Ama özellikle büyük ölçekli yazılım geliştirirken dilin gücünü ölçmek için yalnız dilin kendi gömülü özellikleri yetmez. Sağlıklı ve objektif bir değerlendirme yapmak istiyorsak dili bir bütün olarak ele almalıyız kanaatindeyim.
0
yilmaz
.net ilk çıktığında benim duyduğum tepkiler adamlar müthiş ide yapmıştan oteye geçmedi. kimse c# 1.0 dan bahsetmiyordu. projeyi gerçeklemenin ne kadar kolay olduğundan bahsediyordu. java ile c# üzerine bu kadar konuşmak bence anlamsız. ikisininde belli alanlarda üstün olduğu ortada. ama javanın vizyonu farklı. çıkış tarihine bakın javanın o zamanda boyle bir dilin var olmasının ne demek olduğunu bir düşünün. java özgürlüktür kardeşim. beni işletim sistemlerinin arasına sıkştırmıyor. kod yazarken nefes alıyorsun. vb.net yazıyorum ben şu an boğuluyorum resmen. adamlar öyle bir code completion yapmışki. sırf onu anlamak için kitap yazılır.

ben java kodumu yazarım giderim tekrar compile etmeden solariste çalıştırırım linuxta çalıştırırım buna ne diyceksiniz o zaman. sağlam yazılmış bir java kodu her platformda çalışıyor. (JVM olan) hadi bunu yapsın c#. işte burda olay biter. "write once run everywhere"
0
BufferedReader
Ben ISO8859-9 ve Cp1254 orneklerini vermemdeki sebep micro~1 un bu kurumlar tarafindan standartlar icin zorlanamamasi idi, yoksa Turkce karakter sorunu ister Java 'ya ait degil, bu kodu yazan kisiye ait biseydir. Sonucta Java %100 d unicode destekli


Yukarıda da belirttiğim gibi, işlerin güllük gülistanlık olmadığına tekrar dikkat çekeyim istedim. Yoksa bol para ve bir sürü zeki adam şirketin emrinde olunca çözülmeyecek sorun var mıdır, pek fazla yoktur herhalde.


Ornegin :
HttpSession session = pageContext.getSession();

deyince tum JSP/Servlet kablarinda HttpSession nesnesini alirsin bu bir standarttir, ve her yerde aynidir. Standart deyince benim aklima bu geliyor.
Kisacasi Tomcat de calisan bu kod gidip baska bir kabda da calisir (container), method not found hatasi almazsin -ki esas onemli olan budur.


Generics mi özgün? Özgün sözcüğünü "unique" olarak da alsanız "original" olarak da alsanız bana pek doğru görünmedi dediğiniz.


Dogurusun ama ben Java nin kendi icerisinde yeni bir ozgunluk olarak tanimlamak istemistim, Assertion hakkinda ki fikirlerin nelerdir ?


IDE çok çok önemlidir, Eclipse ne kadar önemliyse Visual Studio.NET de bazı işler için o denli önemlidir ama yine etmeyin eylemeyin diyorum, biz burada dilin kendisinden bahsediyoruz ve onun gücünden, tartışmanın orta yerine Eclipse'i, NetBeans'i sokarsanız konu Java dediğimiz "dil"in gücünün dışında bir mecraya kayar, bunu doğru bulmuyorum.


Bu sozlerinizi ben katilmiyorum, programlama dili deyince bence top yekun olaylara bakmak lazim. IDE sizlik yuzunden Java teknolojileri su zamana kadar cok yipratildi ve kolayca anlasilamadi.

Java'dan kim esinlenirse esinlensin daha onceden de belirttihim gibi (bence konu disina cikmaliyizzz) Platform ve satıcı bağımsızlığı Java'nin en buyuk avantaji. Bu avantajlar JCP tarafindan korundugu surece bu boyle devam edecektir.


Hah, bakın ne güzel demişsiniz. Küçük şirketleri ve süper hacker modunda 7/24 bilgisayar başında saç dökmeyen insanları hesaba katalım demişsiniz, tam da bu argümanlardan ötürü MIT'nin meşhur hocalarından Greenspun J2EE milletin yeteneklerini zorluyor, orta ölçekli işler için .NET kullanın diyor. Buyrun buradan yakın. Kriterimiz bu mu olacak?

Greenspun demis ama cok genel bir soz soylemis. J2EE 'den kastettigi nedir ? J2EE icerisinde sadece JSP/Servlet lerde olabilir EJB lerde olabilir. Zaten EJB'ye karsi tepkiler kendilerini yeni projeler olarak gosterdi. Hibernate, Spring Framework gibi teknolojiler bu tepkilerin urunudur. Java Teknoloji dunyasinin alternatifliligi cok hos. Ayrica Greenspun bu lafi Linux dunyasindaki bu karmasiklikla ne alakasi var, yoksa "tencere dibin kara seninki bende kara demeye mi" getiriyorsunuz :)


Larry Wall yaşadığı sürece imkansız. Öte yandan JCP gibi demokratik bir sürece Microsoft'un katılmasını engelleyen ne? Ben bile katılabiliyorsam? (Hemen hatırlanması gereken bilgi, IE yüzünden küfrettiğimiz Microsoft, W3C üyelerinden ve öneri sunanlarından biridir).

Microsoft un W3C uye olmasi, yapmis oldugu kural tanimazliga hafifleticilik getiremez. Niye JCP'ye uye olmuyor sorunun cevabini ben net olarak veremem; bunu micro~1 'a sormak lazim ama adamlar bakti ki Java 'ya piyasayi ele geciyor, ustune ustuk mahkeme kararlariyla milyonlarca dolar kaybediyorlar hemen manevra yapip C# 'i cikartilar. Boyle bir pazarlama politikasi icerisinde JCP 'ye uye olmak yoktur herhalde.

0
yilmaz
java kongresinde anlatılanların bir çoğu hakkaten sadece java için yenilik. ama şunuda bilmek lazım ki java 1.4 çıktığı zamanki programlama dillerine göre daha kaliteliydi. bence SUN, MS in son zamanlardaki çıkışlarına acele bir cevap vermek istedi ve JAVA 5 de acele çıkarıldı diye düşünüyorum. JAVA 6 yı sabırsızlıkla bekliyorum. java server faces den bahseden olmamış mı?
0
FZ
Java Server Faces da kongre dahilinde gerçekleştirilen sunumlar arasında yer alıyordu ancak maalesef ben onu dinleyemediğim için buraya da bir yorum yazmadım. Dinlemiş olan arkadaşlar izlenimlerini bizimle paylaşırlarsa güzel olur.
0
Soulblighter
Ben JSF'yi dinledim. Oldukça teknik bir sunumdu, ama JSF'nin amacı da güzel bir şekilde vurgulandı.

Klasik HTTP'yi düşünürsek; sunucu/istemci mimarisi üzerine olduğunu görürüz. Veri alışverişinde istemci, HTML dilini kullanarak, bir istekte bulunur ve sunucu bu isteğe yanıt verir. JSF'de ise HTML'deki nesnelerin (metin kutusu, düğme v.b.) yerine, gerçek RAD uygulamalarında olduğu gibi, UI bileşenler ve olaylar vardır. Kullanıcı bu web tarayıcısında göreceği bu bileşenleri (metin kutusu, düğme v.b.) kullandığında olayları tetikler ve sunucu gerekli işlemi gerçekleştirip sonucu istemciye gönderir.

JSF'nin temel amacı şudur: RAD uygulaması geliştirir gibi web uygulaması geliştirmeyi sağlamak ve HTTP'nin hantal olan sunucu/istemci yapısının yerine daha hızlı ve esnek bir çözüm sunmak...

Umarım doğru bir şekilde anlamış ve anlatabilmişimdir. JSF hakkında daha teknik bilgi istiyorsanız, Turgul Yakay'ın hazırladığı bu belgeyi [www.bilgidata.com] okuyabilirsiniz.
0
FZ
A-aa, askerden ne zaman döndün? (Yoksa izin alıp mı geldin?) İnsan bir haber verir yahu :)

Yukarıda anlattıklarına bakınca, yine sormadan edemiyorum, bu Java Server Faces konseptinin .NET bağlamında Visual Studio.NET ile web uygulaması geliştirmekten farkı ne? Yukarıda JSF için yazılanlar .NET'teki WebForm (WinForm'dan esinlenerek) çok benziyor yani işte web kontrolleri ve bunlara yazılan eventler (eventlere yazılan fonksiyonlar manasında), sunucuya giden veriler, postback mekanizması, vs.
0
BufferedReader
.NET Webform ile ayni, yani artik Java da web uygulamasi gelistirme cok zor diye bir sey soylenemeyecek. Webform lar hakkinda derinlemesine bilgim yok ama Struts ve JSF 'nin birlesmesinden ortaya cikacak olan Shale projesi cok $Ik olacak gibi
bkz : Shale [today.java.net]
0
Soulblighter
Ya valla böyle çat kapı girdim ama :) 1 ay oldu döneli. Bilgisayar başında yedim askerliği. Kısa devreydim ben. Short circuit :)

Evet .NET'in WebForm olayı ile benzer ama ondan daha üstün bir olay sanırım. Yani öyle demişlerdi sunum sırasında ama farkı neydi unuttum valla :) Yaşlanıyoruz artık. Askerliği de yaptık...

0
yilmaz
özellikle kullanılan javascriptler .netten birazdaha ölçülü. css yi daha fazla kullanabiliyosunuz. özellikle .net teki datagrid deki eksiklikler faces ta yok. (.net 2.0 a bakan oldumu bilmem ama ortalığı biraz karıştıracak. (JAVA yada) faces ın işi zor)
0
Soulblighter
ağzına sağlık üstad... sağolasın...
0
Nightwalker
O belge bazı yanlış tanımlamalar içeriyor. Örneğin JSF mutlaka struts ile beraber kullanılmalıdır "onun yerine geçecek birşey olarak algılanmamalıdır" gibi... Oysa bu konu ilgili burada [www.jsfcentral.com] daha doğru bir tanım bulunabilir.

0
malkocoglu_3
JSF hakkinda her nasilsa surekli yakinmalar duyuyorum. Dilinin temiz olmadigi ve bu yuzden arac kullanilmasinin neredeyse zorunlu kaldigi duyumlar arasinda. En sIkI elestiri de BileBlog'dan:

"... The one amazing exception to this rule is Java Server Faces. To date, I have yet to see a single positive review of this spec that comes from a non-Struts user. WebWork, Tapestry, Spring, and pretty much every non-Struts framework users scoff and laugh at JSF. It's ugly, it's not intuitive, and it is hellbent on the Microsoft style approach; fuck the users and force them to use clever tools."

:)

http://www.jroller.com/page/fate/20040920

0
Soulblighter
Aslında Java çok karıştı be! Sizce de öyle değil mi? Java içinde o kadar çok teknoloji yaptılar ki. JSF, JSP, Servlet, Hibernate, Swing, SpringFramework falan filan... Ve bu teknolojilerin her biri de eskilerin hatalarını kapatmak için geldi. Sanki deneme yanılma gibi oldu. Java için teknolojiler çıkartıyorlar ve çıkan sorunlar yüzünden (genellikle yavaşlık sorunları) vazgeçip başka teknoloji çıkartıyorlar.

Bilmem yanılıyor muyum? Ya ben günah mı çıkardım ne :)
0
FZ
Haksızlık etmeyelim. Eski güzel günlerde dayardınız arkaya veritabanını, dayardınız kullanıcının önüne aptal terminali işinizi görürdünüz (min. estetik kaygı, maksimum bilgi işleme, iş güç yapma performansı, min. maymunluk). Sonra veritabanları çoğalmakla ve çeşitlenmekle kalmadı, araya Microsoft girdi, haydaa client-server mevzuları filan hadi neyse client epey yetenekli... derken hooop HTTP girdi, CGIlasak da mı n'apsak derken, yok yok öyle zor ASP yapın, JSP yapın J2EE yapın dendi e iyi ama HTTP. Yahu yapın işte programcı değil misiniz, bakın Java var, bakın Mikisoft var, vs. Olmayacak işleri oldurmaya çalışınca böyle oluyor, yamalı bohçaya dönüyor e peki şirketler ne yapsın, boşverin HTTP'yi bizim kendi geliştirdiğimiz protokolleri mi desinler (standartlar da standartlar diyenler tarafından bir kaşık suda boğulsunlar sonra tabii eğer önce piyasa bitirmezse işlerini) ne yapsınlar? Ortada dikensiz gül bahçesi yok, Oracle, SQL filan geliştirilirken kimse yahu ileride Nesneye Yönelik programlama çıkar, bazı yarılmalar olur diye düşünmedi ki. Sonra mecburan Hibernate, Object database filan... Internet işleri iyice allak bullak etti, bakar mısınız terimlere: JSF, JSP, Spring, Struts, en çok adı geçen şeyler olmayan işleri biraz oldurmak için, problemli altyapıyı görünmez kılmak için bir sürü akıllı adamın emek harcadığı teknolojiler. 2005 yılındayız ve hala bunlarla uğraşıyoruz. Biri "bilgisayar dünyası çok hızlı ilerliyor" mu dedi?
0
yilmaz
bence en sonunda herkesin kafası bozulacak HTML ye dönecek. (kaç sene sonra olur bilmem)
0
BufferedReader

(standartlar da standartlar diyenler tarafından bir kaşık suda boğulsunlar sonra tabii eğer önce piyasa bitirmezse işlerini) ne yapsınlar?


Standartlara karsi bu kadar isteksizlik neden acaba ? Standartlarin olmasi bu kadar kotu bisey mi ?


Sonra mecburan Hibernate, Object database filan... Internet işleri iyice allak bullak etti, bakar mısınız terimlere: JSF, JSP, Spring, Struts, en çok adı geçen şeyler olmayan işleri biraz oldurmak için, problemli altyapıyı görünmez kılmak için bir sürü akıllı adamın emek harcadığı teknolojiler. 2005 yılındayız ve hala bunlarla uğraşıyoruz. Biri "bilgisayar dünyası çok hızlı ilerliyor" mu dedi?


Terimler gayet guzel :) hepsi birer alternatif, daha bircok terim var ornegin JSF ye alternatif olan tapestry (kilim). Java dunyasi gayet hizli ilerliyor hemde standartlara ragmen ...
0
izOn
Melih Sakarya nin seminerinde ayrıca Sun Solaris disinda diger kutuda da Sun Java Studio Creator verildi bunu da eklemek istedim
0
malkocoglu_3
Cok guzel bir ozet olmus hakikaten... Kongrenin begenilmesi, bize bir sonraki icin enerji veriyor... Tesekkurler.

Görüş belirtmek için giriş yapın...

İlgili Yazılar

NetBeans 5.0 çıktı!

jfever

Sun tarafından açıkça desteklenen açık kaynak kodlu Java geliştirme platformu NetBeans baştan aşağı yenilendi ve 5.0 sürümü indirilmeye hazır.

Yenilenen arayüz geliştirme araçları, populer uygulama sunucularına destek (JBoss, Weblogic, Sun AppServer, Tomcat.) , JSF ve Struts desteği, geliştirilmiş kod yardımcısı, editör özellikleri ve daha pek çok yenilik.

Sun® firmasından olumlu bir adım

roktas

Son birkaç gün içinde Simon Phipps'in de belirttiği gibi sessiz sedasız önemli bir gelişme oldu ve Sun, Java dağıtımını belirleyen lisans şartlarını gevşetti. Bu değişikliğin en önemli sonucu Java'nın artık diğer Özgür Java gerçeklemeleriyle (GCJ, Kaffe, GNU Classpath vb.) birlikte (fakat onlarla karıştırılmadan) dağıtılabilecek olması. Daha da açık söylemek gerekirse Sun Java'yı Debian veya Ubuntu'da non-free depodan 'apt-get install sun-java5-jre ' komutuyla kurabileceksiniz, ilk paket hazır durumda.

NetBeans Java IDE ile Türkiye Yollarında

FZ

Eclipse ile sıkı bir rekabet içinde olan NetBeans'in artık bir de televizyonu var, daha doğrusu sanal televizyonu. Nisan ayındaki bölümlerde ise küçük bir Türkiye turu izleyebilirsiniz. ;-)

Java'nın Başı Türkçe ile Dertte

oaygun

Başınıza gelmiştir. Java temelli pek çok yazılımın kurulumunda, önce işletim sisteminin yerel ayarlarını değiştirmek (genellikle ABD, İngilizce), yazılımı kurmak ve sonra tekrar Türkçe'ye almak gerkmektedir. Bunun nedeni de 'i' harfidir. Alfabemizin 11 ve 12. harflerinin nelere kadir olduğunu gösteren bir makale: http://java.sys-con.com/read/46241.htm

Java Struts

malkocoglu

Jakarta projesinin gözde teknolojilerinden Struts, JSP sayfaları ile sunucu tarafı Java kodlarının bağlanması için çok faydalı bir teknolojiye dönüştü. Model/Görüntü/Kontrolör (Model/View/Controller), kısa namı ile MVC olarak olarak bilinen mimarinin gerçekleştirimi olan Struts, tekrar kullanılır servis tarafı kodlarının tasarlanmasında yardımcı da oluyor.

Bu teknoloji hakkında ki yazıları www.bilgidata.com adresinde bulabilirsiniz.