İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır
Bora Yüret
borayuret@yahoo.com

Kurumsal Yazılım Geliştirmede C# ve Java Savaşı, IDE'lerin Önemi

Sun firmasının geliştirdiği Java'nın artık neredeyse tekelleşmeye başladığı kurumsal programlama alanına Microsoft C# ile hızlı bir dalış yaptı ve pazar payını giderek genişletiyor. Peki tam "artık çok geç kaldı" derken Microsoft'a bu hamleyi yaptıran ve başarıyı getiren faktörler neler?

Bu faktörlerin en başında yazılım geliştirme aracı (IDE) geliyor. Microsoft C#'ı çok kullanışlı bir IDE ile destekledi. Visual Studio .NET, Java tarafındaki IDE'lere göre daha kolay kullanımı olan ve daha çok özelliğe sahip olan bir yazılım geliştirme aracı. Java tarafındaki belli başlı geliştirme araçları ise Sun tarafından geliştirilen NetBeans (açık kod) ve SunOne Studio for Java (eski adıyla Forte for Java), Oracle tarafından geliştirilen JDeveloper, Borland tarafından geliştirilen JBuilder, IBM tarafından geliştirilen Visual Age for Java (durduruldu), Eclipse (açık kod) ve WebSphere Studio Application Developer (WSAD) , vb. olarak sıralanabilir.

Bir tarafta C#'ı tek başına destekleyen Microsoft, diğer tarafta Java'yı destekleyen onlarca firma. Dışarıdan bakıldığında ekosistem olarak Microsoft tarafından çok daha kalabalık olan (firma olarak) Java tarafının bariz üstünlük sağlaması bekleniyor. Ama öyle olmuyor, Microsoft bir şekilde pazara giriyor ve yavaş yavaş Java'nın pazar payından çalmaya başlıyor. Çünkü kalabalık olmanın Java tarafına kazandırdıkları olduğu gibi kaybettirdikleri de var.

Java tarafında yazılım geliştirme aracı (IDE) bazında bir standardizasyon yok. Her firma kendi geliştirdiği IDE'yi destekliyor ve ön plana çıkarmaya çalışıyor. Java tarafı onlarca Java IDE'sini geliştirmek için bölünmüşken karşılarında Microsoft bütün enerjisini Visual Studio .NET'e harcıyor. Kaba bir hesap yapalım. Yazılım dünyasının en büyük firması Microsoft. Diyelim ki Microsoft C# IDE'si için 5.000 eleman istihdam ediyor. Karşı tarafta Oracle, IBM, Sun ve Borland firmalarının 3.000'er eleman istihdam ettiğini düşünelim. Microsoft tarafında 5.000 kişi var. Java tarafında 12.000 kişi var. Ama Microsoft tarafındaki 5.000 kişinin tamamı Visual Studio .NET'i geliştirmek için uğraşırken karşı taraftaki 12.000 kişi 4 ayrı geliştirme aracına bölünmüş oluyor. Hatta bazı firmaların (Sun, IBM) birden çok geliştirme aracı olduğunu düşünürsek bu sayı iyice parçalanıyor. Yani Java tarafı ne kadar kalabalık olursa olsun, birbirlerinden bağımsız aynı özellikleri geliştirmek için enerji harcıyorlar. Yani Java tarafındaki IDE'leri geliştiren ekiplerin toplam sayısının fazla olması Java tarafı için bir avantaj sağlamıyor.

Bir de yazılım geliştiriciler gözünden bakalım. Java tarafındakiler neredeyse her projede ayrı bir geliştirme aracıyla çalışmak zorunda kalıyorlar. Örnek olarak, bir projede Oracle JDeveloper ile çalışırken, başka bir projede müşterinin IBM ürünleriyle çalışmayı tercih etmesi nedeniyle Eclipse ya da WSAD öğrenip yazılım geliştirmeyi onunla yapmak zorunda kalabiliyor. Veya proje değil de şirket değiştiriyor, tamamıyla farklı Java geliştirme araçlarını öğrenmek zorunda kalıyor. Microsoft tarafındakilere ise sadece Visual Studio .NET'i öğrenmek yetiyor. Bütün .NET projelerinde aynı aracı kullanıyorlar. Java tarafındaki kurumsal yazılım geliştiricilerin, belli sürelerde değiştiği için, çalıştıkları IDE'lerde uzmanlaşma şansı olmuyor. Microsoft tarafındakiler ise Visual Studio .NET'in her projede ayrı bir özelliğini öğrene öğrene üzerine ekleyerek gidiyorlar ve kullandıkları geliştirme aracında uzmanlaşma şansları Java tarafındakilere göre daha fazla oluyor.

Java tarafının bir avantajı Java ile geliştirilen programların her platform üzerinde (Windows, Linux, Unix, MacOS, vs.) çalışabilmesi. Bilindiği gibi C# ile geliştirilen yazılımlar sadece Windows platformlarında çalışabiliyor. Gerçi .NET tarafında .NET'in Linux üzerinde çalışabilmesi için Mono projesi yürütülüyor ama bu Microsoft'un kendisi tarafından yürütülen bir proje değil. Bu projenin çok fazla başarıya ulaşması beklenmiyor, en azından Microsoft bunu istemiyor. Çünkü eğer Linux üzerinde Visual Studio .NET ile C# programları geliştirebileceksek neden Windows işletim sistemi satın alalım? Bunun Microsoft'un kurumsal stratejisiyle bağdaştığını sanmıyorum. Microsoft'un bugüne kadar izlediği ve muhtemelen bundan sonra da izleyeceği politika müşterilerini tamamen Microsoft ürünlerine bağlamaktır.

Ama bu çok platformda çalışma Java'ya neler kazandırıyor? Türk kamu ve özel sektöründe işletim sistemlerinin çoğunlukla Windows olduğunu biliyoruz. İşletim sistemleri Linux olduğu zaman Java rakipsiz oluyor ama Windows olduğunda Java'nın bu çoklu platform avantajının çok anlamı kalmıyor. Aslında yazılımlarda 3 katman kavramı ortaya çıktıktan sonra işletim sistemine bağımlılık azaldı. Yazılımlar web tabanlı çalışabiliyorsa siz bu yazılımı Windows ya da Linux istemciler ile (herhangi bir tarayıcı vasıtasıyla internete bağlanabilen her sistem ile) kullanabilirsiniz.

Java tarafında da IDE'lerin giderek standartlardan uzaklaşmaya başlaması sonucu bir JAVA IDE'si ile geliştirilen Java yazılımının başka bir Java IDE'si ile açılıp üzerinde çalışılamaması sorunu var. Her IDE kendisine göre uzantılar ekliyor. Eclipse Java Community Process'i (JCP – Java dilinin standartlarını belirleyen, çeşitli firma ve kişilerin oluşturduğu grup) atlayarak SWT teknolojisini ekledi. Oracle JDeveloper, Oracle veritabanına bağlayıcı BC4J teknolojisini öne çıkarıyor. Bu gelişmeler de bir IDE ile geliştirilen yazılımın üzerinde başka bir IDE ile işlem yapılamaması dezavantajını doğuruyor.

Peki Java tarafının yapması gerekenler neler? Mutlaka C# tarafındaki Visual Studio .NET kadar güçlü bir IDE geliştirilmesi gerekiyor. Sun firması "Project Rave" olarak adlandırdığı yeni bir IDE projesi yürüttüğünü açıkladı. Programlamaya yeni başlayanların Visual Basic gibi kolay kullanılan araçları seçtiği ve Java ile yazılım geliştirmenin yeni başlayanlar için Visual Basic'e göre daha zor olduğu Sun tarafından vurgulandı. Sun bu amaçla kullanımı en az Visual Basic kadar kolay olan yeni bir IDE geliştirmek için "Project Rave" projesini yürütmeye devam ediyor (Proje tamamlanınca ürünün adı değişecek, Project Rave kalmayacak). 2003 yılının sonunda birinci versiyonunu, 2004'ün ilk çeyreğinde de 2. versiyonunu çıkarmayı planlıyorlar. Böylece JavaOne konferansında ortaya atılan 10 milyon Java geliştiricisi hedeflerine (şu anda 3 milyon kişiymiş) ulaşmak istiyorlar. Oracle da ADF teknolojisini kullandığı yeni JDeveloper 10G'nin preview sürümünü piyasaya sürdü. Oracle da JDeveloper'ı daha önce çok başarılı olan ürünü Form Builder kadar kolay kullanılan (kod yazmayı minimuma indirerek) bir ürün haline getirmeye çalışıyor. IBM'in de WSAD üzerinde çalışmaları devam ediyor. Açık kaynak kodlu olarak yürütülen Eclipse IDE'si temelli WSAD ürününe uygulama sunucusu ve Visual Age for Java'nın güzel özelliklerini entegre ederek Java IDE pazarında payını genişletmeye çalışıyor.

Kurumsal yazılım geliştiricilerin istediği yazılımlarını hızlı geliştirmek. Bu nedenle sürükle-bırak araçlarını saf (pure) kod yazmaya tercih ediyorlar. Yazılımlarını geliştirmek için veritabanıyla ayrı, uygulama sunucusuyla ayrı, IDE ile ayrı uğraşmak istemiyorlar. Hepsinin tek bir ürün olmasını istiyorlar. Yani bilgisayarına yazılım geliştirme ortamını kurduğu zaman veritabanının, uygulama sunucusunun da IDE ile birlikte kurulmuş ve çalışmaya hazır halde olmasını istiyorlar. Daha sonra performans için veritabanı ve uygulama sunucusunun ayrılıp başka bilgisayarlarda çalıştırılması işini sistemcilere devretmek istiyorlar. Yazılım geliştirirken de kod yazmayı minimuma indirmek, mümkün olduğunca çok sihirbaz desteği kullanmak istiyorlar. Bunu uzun vadede ilk gerçekleştirebilen taraf avantaj kazanacak. Bu Microsoft Visual Studio .NET'de olabilir, veya Java tarafındaki IDE'lerden birisi de olabilir. Gerçek olan, dilin yaygınlaşmasında IDE'nin çok büyük katkısı olduğu ve geliştiricilerin artık üzerlerindeki kod yazma yükünü ve entegrasyonla uğraşmayı azaltmak istedikleridir.

İyi çalışmalar,

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