Neler yeni
Türkiye'nin En Güncel Forum Sitesi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı yada giriş yapmalısınız. Forum üye olmak tamamen ücretsizdir.

Günümüzde Java

ByOnur58

Kayıtlı Üye
MFC Üyesi
  • Üyelik Tarihi
    7 Ocak 2015
  • Mesajlar
    2,113
  • MFC Puanı
    10
  • MFC Seviyesi

Her iş sektörünün bir jargonu var, ve insan bir sektöre elini attığında ilk bocalamasını aslında hiç bir anlam ifade etmeyen terimlerin bu sektörde ne kadar anlam ifade ettiğini anladığında yaşıyor. Bana ilk "Java biliyor musun?" diye sorduklarında, yine arkasından her derde deva gelen birşeylerin çıkacağını kestirir gibi oldum. Artık bu Java kardeşimizi duymayan yok, bir de kim olduğunu bilsek...

Java bilgisayar dünyasına daha dün doğmuş bir programlama dili, ve daha doğar doğmaz bir isim benzerliğinden dolayı, uzun süre dünyanın her yerinde JavaScript ile karıştırıldı. Java'yı herhangi başka modern bir programlama dili ile aynı kefeye koyabiliriz. Sıfırdan oturup, her şeyiyle çalışan bir yazılım geliştirmek mümkün. JavaScript ise adından anlaşılacağı gibi bir scripting dilidir. Burada scripting dilinin ne olduğunu açıklamaktan kaçınıyorum, ancak Java ve JavaScript ile ilgili ortalarda en çok duyacağınız cümle şu olacaktır:"Biri derlenir, diğeri edilmez." Maalesef bu tür derme çatma açıklamalar, bu işin jargonu ile birlikte yeni başlayanın korkulu rüyasıdır. Bu iki isim benzeri arkadaşı ayıran en önemli özellik yukarıdaki cümle değildir. Yine burada bu dillerin farklarını anlatmaktan kaçınıyorum, çünkü bu yazının amacı bu değil. Bilinmesi gereken en önemli nokta bu iki dilin yapı gereği farklı olduğudur.

Java'nın yaratıcısı Sun Microsystems'in mühendislerinden biri olan James Gosling, bu uğurda saçlarını ağartmış ileri görüşlü biri. Java tasarlanırken amacın piyasadaki bir çok programlama diline bir yenisini eklemek olduğunu zannetmiyorum, burada amaç biligisayar dünyasına yeni bir ufuk açmak, yeni fikirler getirmek. Java'nın en büyük problemi kendisinden önce insanlara ulaşan bu yeni fikirlerin arasında kendini tanımlayamaması oldu. Çoğu insan Java'yı bu fikirlerle aynı kefeye koydu, bir başka kesimse yüzüne bile bakmadı. Bundan dolayı ilk olarak Java ile Java'nın getirdiği fikirleri birbirinden ayırarak işe başlamak istiyorum.

Java, gerçek anlamda bir programlama dilidir. Java ile günümuzün popüler dili C++ ile ne yapılıyorsa hepsinin yapılması mümkündür. İçinizden olur mu hiç öyle şey dediğinizi duyar gibiyim. Bal gibi de olur. Bilgisayar dilleri, syntax'ı hariç birbirlerinden çok farklı diğillerdir. Önemli olan sizin programı yazmak istediğiniz platform için elinizde bulunan kütüphane(library)'lerdir. C++ bu konuda çok geniş olup Java ise kısıtlıdır. Peki o zaman Java ile her şey nasıl yazılır? Java, başka bir dilde yazılmış bir kütüphaneyi çok rahat kullanabilmektedir. Bu da yeni doğmuş bu dilin işini oldukça kolaylaştırmaktadır. "Olur mu öyle şey o zaman Java programımız bütün platformlarda çalışmaz!" işte bu cümle yine Java ile Java'nın felsefesini karıştıran cahilliğin eseridir. Kim demiş ki biz Java programlarımızı her platformda çalıştırmak istiyoruz diye. Bilgisayar programları satan bir yerden bir yazılım(software) alırken hangi platform için yazıldığına bakarak alırız, ve de gidip aynı software'i cep bilgisayarımızda da güle oynaya kullanabileceğimiz fikrine kapılmayız (tabi eğer program cep bilgisayarı için yazılmadıysa). Aynı mantıktan yola çıkarak Java ile Java derleyicisini elde edebileceğimiz herhangi bir platform için spesifik olan bir yazılım çıkarmak hiçte yanlış bir davranış değildir.

Microsoft, Java'ya bir programlama dili olarak verilmesi gereken önemi daha çok önceden anlamış, ve çıkardığı Visual J++ adlı software'inde PC platformuna spesifik program yazmak için gereken bir çok gereci içine koymuştur. Sun Microsystems ise kanımca yanlış bir strateji izleyerek bunu baltalamaya calışmaktadır. İşte Sun Microsystems ile Microsoft arasında uzun süredir süren davaların nedeni bundan ileri gelmektedir. Peki ama Sun'ın, Microsoft'la alıp veremediği nedir? Niçin faydalı birşeyi baltalamaya calışmaktadır? Bunu anlamak için Java'nin getirdiği fikirleri anlamak gerekir.

Java'nin bir programlama dili olduğunu anladık. Peki getirdiği fikirler nelerdir? Java tasarlanırken amaç, bu dille yazılan bir programı kolay bir şekilde diğer platformlara taşıyabilmekti. Bir platform için yazılmış bir yazılım'ın başka bir platformda calışır hale getirmek çok emek gerektirir. İşte Java bu probleme ilaç olmak için düşünüldü. Peki bu iş nasıl olur? Öncelikle, bütün dünyadaki bigisayar tasarlayıcılarının bir araya gelip ortak, herkesi memnun edecek bir bilgisayar çıkartması ufukta görünmediği için, bu işi yazılım bazında halletmek gerekir. Bunun için Sun "Virtual Machine" dediği sanal bir bilgisayar tasarlamıştır. Bu sanal bilgisayar,sizin gerçek bilgisayarınızda çalışan bir program olup, Java programlarınızı çalıştıracaktır. Burada ortaya atılması gereken en büyük soru şu olmalıdır: "İyi de bu Virtual Machine denen programı butun platformlar için nasıl ve kim yazacak?" İşte Sun Microsystems ve birçok Java programcısının gözünden kaçan da bu olmuştur. Su anda bu sanal bilgisayar bir elin parmaklarını geçmeyecek kadar değişik platform için hazırda vardır, gelecekte bu sayının artması beklentimiz olmalıdır. Üstüne üstluk bu platformlardaki Virtual Machine'in en son version'larını sadece iki platformda bulmak mümkündür. PC ve Sun'ın ürettiği Solaris. Apple maalesef yarışta geride kalmıştır. Bu nedenden dolayı Sun'ın Microsoft'u, Java'yı güçlü bir programlama dili olarak sunmasını baltalamaya çalışması yanlıştır. Nede olsa, Java ile yazılan programlar hiç bir zaman dünyadaki bütün platformlarda calışmayacaktır. Bunu düşünmek aptallık olur.

Olayın biraz daha detayına inelim. Yukarıdaki paragrafta aslında dikkatli incelenirse bazı yanlışlar vardır, aslında basite indirgemek desek daha doğru olur. Virtual Machine'i baska bir platforma aktarmak zor olan bir şey değildir, ve de ilk çıktığından bu yana fazla yeni sürümüde çıkmamıştır. Şimdi yine bazı okuyucular bana gülüyorlar biliyorum, hatta içlerinden şu cümle geçiyor: "Çıktığından beri değiştirmedikleri yeri kalmadı, bir oğrendiğimiz ertesi gün yok!" Programcılar bu kaygılarını dile getirirken aslında bir şeyi unutmaktadırlar. Değişen Virtual Machine değildir. Değişen Virtual Machine ile birlikte Sun'in tasarladığı standard kütüphane'lerdir. Bir dili kullanılır yapan öğenin kütüphane'lerinin genişliği olduğunu daha önce belirtmiştim. İşte bu kütüphane'leri değişik platformlara taşımak gerçek bir azaptır, ve de bir gecede olmayacaktır, çünkü bir PC de ekrana bir pixel basmakla, bir Macintosh'ta ekrana bir pixel basmak farklı prosedürlerdir.

Peki Sun kendine Microsoft'a karşı destekçi nasıl bulmaktadır. Bu o kadar zor bir şey değildir. Microsoft piyasadaki monopol olarak zaten bir çok kullanıcının ve programcının nefretini kazanmayı başarmıştır. Dakka başı yeniden başlatmak zorunda kaldığımız Windows da bunun cabasıdır. Tek yapılması gereken piyasaya bir slogan atmaktır: "Visual J++ ile yapılan Java programlarınız başka platformlarda çalışmaz!" Bu doğru bir cümle değildir, ama amacına ulaşmaktadır. Burada bizlerin anlaması gereken, Java'ya yeni başlayan birinin ne yaptığını bilmeden bu yazılım'ı kullanıp yazdığı bir Java programının baska platformlarda calışmama olasılığının bulunduğudur. Şahsen ben Visual J++'in son sürümünü beğenerek kullanıyorum, ama kesinlikle bu işe yeni başlayan birine tavsiye etmiyorum. Eleştiriler çok da yersiz değil. Ancak, önemli noktayı kaçırmamak gerekir. Microsoft, kanımca Java konusunda kendisine özgü olmayan bir şey yapıyor: gerçekten faydalı olmaya çalışyor. Sun ise Microsoft'a pazarı kaptırmanın verdiği hiddetle saldırıyor. Olaydan zararlı çıkan aslında yine biz programcılarız.

Yazımı biraz da Java'yi popüler yapan "Java Applet"lerinden bahsederek tamamlamak istiyorum, çünkü maalesef etrafta bilir bilmez konuşulan kavramların başında geliyor. Java Applet'lerinin Java programlarından farkı, web browser'ınız tarafından çalıştırılabilmesi, ve de Internette dolaşırken bir web sayfasında karşımıza çıkabileceği için güvenliğiniz düşünülerek sınırlandırılmış olmalırıdır. Konun detayları, bu sınırlandırmanın nasıl yapıldığı, veya nasıl kaldırılabildiği yine bu yazının içeriği değildir. Bunların haricinde Java Appletleri, Java programlarindan hiç farklı değildir, onlar da Virtual Machine ile çalıştırılırlar. Önemli olan nokta Java Applet'lerini yazarken platform spesifik kütüphane'ler kullanılmaması gerektiğidir. Çünkü sizin web sayfanızı ziyaret eden kişinin ne marka bilgisayar kullandığını bilemezsiniz. İşte Sun'ın standard kütüphane'lerdinden şaşmamanız gereken yer burası. Yok hayır, beni sadece PC kullanıcıları bağlar derseniz, o zaman istediğiniz yapmakta yine serbestsiniz. Kalkıp Microsoft'un DirectX kütüphane'sini kullanip 3 boyutlu mekanlarda insanları dolaştırmak mı istiyorsunuz, yada insanlarin kulağına Directional Audio ile hitap mi etmek istiyorsunuz? Bunlarin hepsi mümkün. Unutulmaması gereken Applet'lerin uzunca bir süre gerçek programların yerini alamayacaği. Düşünülmesi gereken bir başka nokta ise, Appletler'in bu amaçla kullanılmasının ne kadar doğru olduğu. Bunu size düşünme konusu olarak bırakıyor, bir başka yazıda tartışmayı diliyorum. Java'yı desteklemeyi bırakmayın. Herkese iyi programlamalar.
 
Üst Alt