|
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 Internet'e 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,
|