İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır
Onder Teker
on_der_tek_er@yahoo.com

Java Mı Döver C# Mı?

En Çok Tartışılan Dil : Java

C#'ın Microsoft tarafından ortaya atılışından beri C#'ın Java'ya benzeyip benzemediği, C#'ın Java'dan üstün olmadığı gibi başlıklar yazılım dünyasında en çok tartışılan konular arasında yer alıyor. Internet, iki dilin taraftarları arasındaki polemik düzeyine varan tartışmalar, iki dilin teknik özelliklerini karşılaştıran bilimsel makaleler, her iki dili de benimseyenlerin yaptığı yorumlar ve her iki dili de sevmeyenlerin verdiği beyanatlarla dolu.

C#'ın öncesinde Java'nın özellikleri en çok tartışılan konuların başında geliyordu. Java'nın Sun tarafından ortaya atıldığı günden beri, her yerde ne kadar kötü bir dil olduğu, ne kadar yavaş çalıştığı gibi konularda yoğun bir anti-Java kampanyası vardı. Elbette bunda Java teknolojisinin kendi ellerindeki teknolojileri geride bırakacağından korkan bazı firmalar var. (Yoksa 'firmalar' yerine sadece 'firma' mı demek lazım?) Ancak herşeye rağmen Java giderek yaygınlaştı, C++ gibi 'güçlü' diller, Visual Basic gibi 'kolay' diller arasında var olmayı bildi. Hatta giderek bir çok geliştirici eski dillerinden vazgeçip Java'ya geçer oldular. Java üniversitlerde okutulan, hemen her konuda yazılım geliştirmekte kullanılan bir dil oldu. Servlet ve JSP teknolojisiyle sunucu tarafında, J2ME'la el cihazlarında, Swing ve AWT gibi arayüzlerle masaüstünde bir çok dile ve platforma rakip oldu. Bazılarında başarısız oldu, bazılarında sildi süpürdü. Java 'rakipsiz'di. Ama artık bir rakibi var : C#.

C#'ın Java'dan daha iyi ve kötü olduğunu söyleyenler aslında genellikle 'taraflı' insanlar. Bu dillerden birini benimseyenlerin doğal taraflılığı değil bu üstelik. Şirketler açıkça kendi pazar paylarını düşünerek biri lehine diğerinin aleyhine propaganda yapıyor. Bunlar iki dili de bilen insanları hedeflemediklerinden, çok saçma, yanlış ve çarpıtıcı yorumlar da yapılabiliyor. İki dili de bilmeyen, ama öğrenmek isteyenleri sorduğu ortak bir soru var : "Hangisi doğru?"

C# Java'nın Nesi Oluyor?

C#'ın Java'yı model alınarak yaratıldığı bir çok yorumcunun ortak görüşü. Ancak bazıları onu model alıp daha iyisini gerçekleştirdiğini, bazıları da onu model almaya çalıştığını ama onun kadar iyi olamadığını söylüyorlar. C#'ın Java'yı model aldığını ve ona eşdeğer güçte bir dil olduğunu söyleyenler de var. İki dilin arasında farkların önemsiz olduğunu, önemli olanın onları destekleyen şirketler ve kurumların sayısı ve gücü olduğunu söyleyenler da oldukça fazla.

C#'ın Java'yı model aldığı özellikle gizlenmiş ve Microsoft tarafından sürekli C#'ın C++'ı model aldığı iddia ediliyor. Tıpkı Java'nın C++'ı model almasına benzetiliyor. Bu kesinlikle yanlış. Bir kere Java'nın C++'ı model aldığı da yanlış. Java tamamen yeni bir programlama mantığıdır. C++'a sintax benzerliği C++'ın piyasada yaygınlığı ve bilinen bir dil olması nedeniyledir. C++'tan yola çıkılmış ama başka noktalara ulaşılmıştır. Pekala Pascal veya herhangi bir başka dil de model alınabilirdi. Java, C++'ın bir anlamda anti-tezidir. C++'ın tıkandığı noktalarda Java bir çözüm getirmiştir. C++ internetin dili olamazdı, olamadı da. Ama Java bunu başarabilmiştir. Buna karşın C/C++ makineye yakın dildir. Java asla bu noktada olamaz. Aslında Java'yla C++'ı karşılaştırmak bile anlamsızdır. Java'nın kendisi içerisinde C/C++ koduyla çalışıyor. Yani Java aslında bir C uygulaması.

C#'ın C++'a benzemesi, onu model alması mümkün değil. Ancak sintax benzerliği olabilir. .NET platformunda Visual Basic.NET de var. O da Visual Basic'i model almamış. VB.NET'le VB arasında sadece sintax benzerliği var. Aslında VB.NET, VB'nin sintax'ını Java'ya uygulayınca ortaya çıkan şeydir. Aynı şekilde C# da C++'nin sintax'ını Java'ya nerdeyse birebir uygulanmasıdır. C# özellikle herhangi bir sintaks element'ine isim verirken C++'tan almayı tercih etmiştir. Yani C#'ın Java görünüş olarak benzememesi için elden gelen gayret sarfedilmiştir. .NET platformu o kadar Java'yı model almıştır ki, .NET'te Java diliyle yazılmış kodlar çalışmakta ama Visual Basic'le yazılmış kodları çalışmamaktadır. Çünkü NET'in altaypısı VB'ninkinden o kadar farklı ki, Microsoft VB'yi desteklemeyi düşünmemiş. Ama Java'yı desteklemeye devam etmektedir. VB.NET de C#.NET gibi Java'ya rakip bir dil olmuştur ve onlara denk bir dildir. Tabii VB adı altındaki geçmişine elveda diyip Java'ya benzeyerek sağlamıştır bunu.

Peki C#'ın Java'da hiç mi farkı yok? Bunu söylemek imkansız. C#'ın Java'dan bir çok farklı yönü var. Ama bu farkların hiç biri C#'ı yeni bir dil, yeni bir porgramlama tekniği, yeni bir platform, büyük bir devrim olma özelliği getirmez. C#'ta olan Java'da olmayan özelliklerin çoğu ya sadece C#'ın C++, VB gibi dillerden aldığı, Java'nın kasten almadığı özellikler ya da bazı küçük sintaktik kolaylıklardır. Dil olarak C#, platform olarak .NET, Java'da olmayan hiç bir üstün özellik içermemektedir. Üstünlük diye bahsedilen hiç biri gerçek bir yenilik getirmemektedir. Hatta 'üstünlük' diye sayılanların çoğu, programcıların istediği ama istememeleri gereken kötü özelliklerdir. Örneğin çok dil desteği, birbiriyle uyumsuz bir çok parametre aktarma tekniği, hafızaya erişebilme hakkı.

C#'ın Java'yla Ortak Özellikleri

C#'ın Java'yla ortak özellikleri saymakla bitmez. Burada sadece bir kaç anahtar özellik verilecektir. Özellikle C#'ın Java'yla benzer olup C++'la hiç de benzer olmayan özeliklerini dikkat edilmesi gerekir.

C#'la Java'nın Küçük Farkları

C#'la Java arasında sadece bazı kolaylıklar sağlayan, temel mantıkta değişiklik getirmeyen bir çok özellik var. Bir kaç örnek vermek gerekirse :

C#'la Java'nın Önemli Farkları

.NET'le Java Platformu Arasındaki Farklar

C#'la Java arasındaki farklardan başka, .NET'le Java Platform'u arasında önemli bazı farklar var.

Sonuç

C#'ın Java'dan daha iyi olduğunu söylemek yanlış olur. Ancak Java kadar iyi olduğunu söylemek de yanlış olmaz. C#'ın Java'nın yerini alma olasılığı sıfır. Java o kadar yaygınlaştı ve tutuldu ki sahibi Sun batsa veya Java'yı bıraksa IBM, Netscape, Oracle ve daha bir çok firma sahiplenir. C#, Java'dan daha iyi bir dil bile olsa sahibine karşı yazılım dünyasında duyulan genel antipati Java'nın tercih edilmesini sağlayacaktır.

Ancak C#'ın Java karşısında tutunamayıp giderek kaybolacağını düşünmek de saçma. C#, üç aşağı beş yukarı Java kadar iyi bir dil, .NET de Java kadar iyi bir platformdur. Microsoft kendi teknolojileri bir yana bırakıp, her fırsatta eleştirdiği Java'yı 'model' alması yanlış değil doğru bir karardır. Microsoft'un Java'nın gücüne yakın bir güçte teknoloji çıkarmasaydı muhtemelen topu atacaktı.

Her ne olursa olsun, nesneye yönelik programlama mantığını kavramış, kötü diller ve teknolojilerle çalışmaktan nefret eden geliştiriciler için C#'ın çıkması büyük müjde. Patronun yada bir yöneticinin "Biz Microsoft'un teknolojilerine geçiyoruz!" demesi durumunda attan inip eşşeğe binmeyecekler. Bir attan inip başka bir ata binecekler. Hangisinin daha hızlı hangisinin daha güvenilir olduğu o kadar da önemli değil. İkisi de insanı istediği noktaya götürür. Önemli olan da bu.

Gelelim C# mı döver Java'mı döver sorusunun cevabına. Teke tek kalsalar Java C#'ı zar zor da olsa döver. Ama C#'ın babası (Microsoft), Java'nın babasını (Sun'ı) döver. Ancak Java'nın akrabaları çok kalabalık. Amcası Netscape var, dayısı IBM var, eniştesi Oracle var, daha bir sürü akrabası var. Kimin kimin döveceği, çingene kavgasına dönen bu dövüşte kimin galip geleceği hiç belli olmaz. En iyisi iki tarafa da yakın durup, zamana ve mekana göre bir tutum takınmak. Visual C++'çıların Java'ya değil C#'a (ve VB'cilerin VB.NET'e, ASP'cilerin ASP.NET'e) yönelmeleri akıllıcadır. Ama Java geliştiricilerinin, Microsoft'a göbekten bağlı bir politika izlemiyorlarsa C#'a geçmeleri çok anlamsız olur. Java'nın uzun bir dönem daha, kendisine 'gerçek' bir rakip çıkana kadar gündemde olacağı kesin.

İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır