Şu JAVA DedikleriJava... Son günlerin en popüler kavramı... Peki Java hakkında neler biliyorsunuz? Peki ya JavaScript hakkında? PC kullanıcısından program geliştiricisine, sörfçüsünden Web sayfası tasarlayanlara kadar herkesin merak ettiği bu kavramlara açıklık getiriyoruz.![]() Kelime anlamına bakılırsa içilir. Java aslında bir tür kahve ve bu yüzden bilgisayar alanındaki Java'nın amblemi de dumanı tüten bir fincan sıcak kahve. Bizim konuştuğumuz Java ise, Sun Microsystems'in geliştirdiği bir programlama dili. Özelliği ise her türlü işletim sisteminde yeniden derlemeye gerek kalmadan çalışabilmesi. Java'yı destekleyen Web browser'lar sayesinde belli başlı tüm işletim sistemlerinde çalışabiliyor. Bunları kısaca sayacak olursak Windows, Windows 95, Windows NT, Apple Macintosh, OS/2, Unix (Sun Solaris, IBM AIX, Digital Alpha, HP-UX, Linux, SCO, v.b.). Ana bilgisayar işletim sistemleri ve hatta DOS ortamında bile çalışabiliyor. Bunu Java Virtual Machine (JVM - Java Sanal Makine) denilen bir yorumlayıcı sayesinde gerçekleştiriyorlar. Java programları yazıldıktan sonra derleniyor ve bir kod elde ediliyor. Bu kodu da Web browser'lar içerisine yerleştirilmiş Java Virtual Machine'ler çalıştırıyor. S: Yani bir Java programını çalıştırmak için illa bir Web browser mı kullanmam lazım. Bu pek de akla yatkın değil. Niye üzerine çift tıklayınca çalışmıyor? Üzerine çift tıklayınca çalışmıyor çünkü Java derlendikten sonra çalışabilir bir EXE dosya haline gelmiyor. Bu kodun çalışması için bir JVM'e ihtiyaç var. IBM, OS/2 Warp 4.0 işletim sistemine bu JVM'i entegre etti ve böyle ve OS/2 kullanıcıları Java programları üzerine çift tıklayarak çalıştırabiliyorlar. IBM bu özelliği AIX işletim sistemi büyük ana bilgisayarlarının işletim sistemlerine eklemek için çalışıyor. Sun da NC denilen bilgisayarlar için geliştirdiği Java işletim sistemine bu özelliği ekledi; daha doğrusu Java işletim sistemi Java uygulamalarını çalıştırmak üzerine geliştirildi. Başka birçok işletim sistemi üreten firma da bu konuda çalışmalarını sürdürüyor. Microsoft ise Internet Explorer'ı masaüstüne entegre ediyor. Internet Explorer da Java uyumlu olduğu için bu sürüm piyasaya çıktıktan sonra Windows 95 ve NT'de de Java programlarını üzerine tıklayarak çalıştırabileceğiz. S: Tamam bu Java her yerde çalışabiliyor, onu anladık. Ama bu ne işimize yarayacak? Bugün herhangi bir dil ile yazdığımız programı sadece bir işletim sistemi için geliştirebiliyoruz. Java ise bu sınırı ortadan kaldırıyor. Java'nın Internet ile beraber yaygınlaşmasının temel sebebi de bu. Internet üzerinde bir programın hangi işletim sistemi kullanan bilgisayar tarafından çalıştırılacağını önceden kestirmeniz imkansız. Bu durumda yazdığınız programın her türlü bilgisayarda çalışması gerekiyor. Java bunu sağlıyor. Java ile sadece Internet üzerinde çalışan programlar geliştirmiyorsunuz. Mesela sizin bir muhasebe programınız var. Bu programı Windows üzerinde yazdıysanız sadece Windows'ta çalışabilir. Eğer müşterinizde bir Macintosh veya bir Unix işletim sistemi varsa bu programı çalıştıramaz. Eğer bu muhasebe programını Java ile yazarsanız, kim olursa olsun sizin programınızı çalıştırabilir. JVM bir yorumlayıcı ve hiç bir yorumlayıcı EXE hale gelmiş bir programdan daha hızlı çalışamaz. Ama günümüzde işlemci performanslarının her on sekiz ayda bir ikiye katlandığını düşünürsek bu hız sorununu yakın zamanda aşacağız demektir. Ayrıca daha başka gelişmeler de var. Mesela bir çok firma Java'yı daha hızlı çalıştırmak için Just-in-time derleyiciler çıkardı. Bu derleyiciler Java programınızı Internet'ten çektiğiniz zaman ya da çalıştırmak istediğinizde derleyerek EXE hale getiriyor ve böylece programınız gayet hızlı şekilde çalışıyor. Java'yı geliştiren Sun ise aynı zamanda işlemci de üreten bir firma ve Java'nın performansını arttırmak için Java kodunu direkt olarak çalıştırabilen işlemciler üzerinde çalışıyor. picoJava denilen bu çekirdek işlemci mimarisi her türlü işlemcinin içerisine eklenebiliyor. Şu anda çeşitli alanlarda işlemci üreten 10'un üzerinde firma picoJava'yı kullanmak için Sun ile anlaştı. Ne yazık ki bu firmalar arasında Intel, AMD ve Cyrix gibi x86 uyumlu işlemci üreten firmalar yok. Ama Java'nın yaygınlaşmasıyla bu firmalar da Java'yı işlemcilerine entegre edebilirler. S: Peki, bu picoJava denilen şey PC'lerde kullanılmayacaksa nerede kullanılacak? Bilgisayara sadece PC'den ibaret değil. Bu firmaların ürettiği işlemciler geçtiğimiz aylarda dergimizde de adından bahsedilen NC adlı bilgisayarlardan telefonlara kadar çeşitli elektronik araç içerisinde kullanılacak. Aslına bakarsanız şu anda teorik olarak çalışıyor. Her yazılım ürününde olduğu gibi Java'nın da sürümleri var. Java'nın ilk sürümü bundan yaklaşık 1.5 yıl önce Java Development Kit (JDK) 1.0 olarak çıktı. JDK'da bir çok konuda kullanılmak üzere geliştirilmiş Java nesne sınıfları bulunuyor. Daha sonra bu sürümü JDK 1.01 ve JDK 1.02 olmak üzere iki düzeltme sürümü izledi. JDK 1.0x sürümleri Java'nın temel özellikleri, kullanıcı arabirimine sahipti ve daha çok ufak çaplı uygulamalar için kullanılabilecek düzeydeydi. Geçtiğimiz aylarda Sun, JDK'nın 1.1 sürümünü çıkardı. Bu sürüm ile Java, 10-15 milyon dolarlık büyük mainframe bilgisayarlardan şu cep telefonlarında da kullanılan akıllı kartlara kadar her yerde kullanılabilir hale geldi. S: Java ile sadece ufak tefek oyun benzeri programlar yapılabiliyor diye duyduk. Nedir bunun doğrusu? Eğer sadece böyle şeyler yapılabiliyorsa ne işimize yarayacak bu Java? JDK 1.1 için bu belki doğru bir şeydi fakat 1.5 yıl içerisinde Java'da çok büyük gelişmeler oldu. Veritabanı uygulamaları, güvenlik, sistem yönetimi, ticari uygulamalar konusunda Java'ya yapılan eklemelr ile belki de bir programla dili ilk kez bu kadar geniş bir firma desteği tarafından bu kadar kısa bir zamanda kullanım alanlarını geliştirdi. Sun, her biri kendi alanında lider konumda olan bir çok firma ile görüşüp bu firmalar ile yaptığı ortak çalışmalar sonunda Java nesne kütüphanesini geliştirdi. PCWorld okuyucunun en çok ilgileneeği konu olan veritabanı desteğine gelirsek. Java'nın veritabanları ile iletişim kurmasını sağlayan JDBC (Java Database Connectivity - Java veritabanı bağlantısı) protokolleri var. JDBC belli başlı kurumsal veritabanları olan Oracle, Informix, Sybase gibi veri tabanlarını direkt olarak destekliyor. Bunun yanısısa JDBC, bugün en küçüğünden en büyüğüne kadar hemen hemen her veritabanının uyumlu olduğu ODBC'yi destekliyor. Böylece Java ile istediğiniz büyüklükte veritabanı uygulaması yazmanız mümkün. İster bir muhasebe paketi yazın, ister basit bir fihrist, isterseniz de bir devasa bir üretim planlama paketi. Java bunların hepsini destekliyor. Mesela çok büyük şirketlerde kullanılan SAP R/3 üretim planlama yazılımını SAP en baştan Java ile yazıyor. Sadece SAP değil, dünya yazılım sektörünün tüm büyük firmaları bu konu üzerinde çalışıyorlar ve bazıları ürünlerini Java üzerine taşımaya başladı bile. Bu da Java'nın ne kadar güçlü olduğunun bir göstergesi. S: Internet'e pek güven olmaz. Peki, Java güvenli mi? Yani Internet'ten bir Java programı çektiğimizde sabit diskimizi filan formatlamasın da! Java iki yönden de güvenli bir ortam. Birincisi Java işletim sisteminden bağımsız bir programlama dili olduğu için sisteminize direkt olarak erişemez. Eğer bir Java programı sabit diskinizi formatlamak gibi istenmedik bir işlem yapmaya kalkarsa JVM bunu engeller. Ayrıca Java programlarının çalışırken başka programları etkilemesi de söz konusu değildir. Bu yüzden Java programlarına Java ile yazılmış bir virüs bulaşsa bile bu virüsün istenmedik bir şey yapmasına imkan yok. Doğal olarak Intenet üzerindeki hiç bir bilgi yüzde yüz güvenli olarak seyahat edemez. Java tabanlı bir uygulama üzerinden bilgi gönderdiğinizde bunun başkası tarafından görülmeyeceğine de garanti vermezsiniz; fakat Java bu riski minimuma indiriyor. Çoğu şifreleme sistemini destekleyen JDK 1.1 ayrıca Visa, EuroCard ve MasterCard'ın ortak geliştirdiği ve Internet üzerinde elektronik ticaret yapmada kullanılacak olan SET protokolünü de destekliyor. Yani Java hem sisteminize zarar vermeme açısından, hem de Internet'e açtığınız bilgilerinizin açısından güvenli bir ortam. S: Java'yı kullanmaya karar verdim diyelim. Bu dilin yapısı nasıldır? Visual Basic'e mi yoksa başka bir şeye mi benziyor? Visual Basic gibi görsel programlama özellikleri var mı? Java üçüncü kuşak nesne tabanlı bir programlama dili. Java'yı geliştiren Sun firması aslında programlarını geliştirirken C++ kullanıyordu fakat bu dilin malum bir takım zorluklarını aşmak için oturup kendi programlama dillerini yazmaya karar veriyorlar. Java programlama mantığı olarak C++'a çok benziyor. Değişken tanımları, fonksiyon yapısı ve nesneleri de yine C++'tan araklanmış. Daha önceden C veya C++ kullandıysanız Java'yı öğrenmeniz çok daha kolay fakat hiç programlama yapmamış bir kişi de fazla zorlanmadan Java'yı öğrenebilir. Görsel araç tarafına gelince, Visual Basic için sadece bir tane görsel uygulama geliştirme aracı var, oysa Java için piyasada 20'ye yakın büyüklü küçüklü araç bulunuyor. Bir bu kadarı da beta aşamasında ve yakında çıkacak. Örnek vermek gerekirse, Symantec'in Visual Café ve Visual Café Pro'sunu, Sun'ın Java WorkShop'unu sayabiliriz. Microsoft'un da Visual J++ isimli bir aracı var ama fakat ne kadar görsel olduğu tartışılır. Çıkacak olanlara bakarsak IBM'in VisualAge for Java'sı kod bile yazmadan Java programları geliştirmenize izin veriyor. Borland ise Delphi'deki tecrübesini, yakında çıkacak olan Open Jbuilder isimli aracında kullanıyor. S: Java ile yazdığım programlar her türlü sistemde çalışıyor. Peki, her sistem için ayrı bir ekran tasarımı yapmaya gerek yok mu? Mesela bir pencere açtığımızda Windows'un penceresi ile Unix'in penceresi veya veri giriş kutusu aynı değil ki, yazdığım programın ekranları aynı olsun. Java'nın kendine özgü API'ları (Aplication Programming Interface - Uygulama programlama Arabirimi) var. Siz bir pencere açarken, bir tuş veya bir listeleme kutusunu çağırırken Windows'un, Unix'in veya OS/2'nun değil Java'nın penceresini, listeleme kutusunu veya tuşunu çağırıyorsunuz. Böylece yazdığını programın farklı sistemlerde çalışmasını kontrol etmek zorunda değilsiniz. Programınızı yazdıktan sonra diyelim ki Windows kullanan birisi çalıştırırsa Web browser'ı üzerinde yüklü olan JVM, sizin programınızın Pencere açmak istediğini veya listeleme kutusu kullandığınızı görüp, Windows'un o fonksiyonunu çağırıyor. OS/2 kullanan birisi programınızı alıştırırsa OS/2 Warp 4 Java'yı Web browser'a ihtiyaç duymadan desteklediği için işletim sistemi içerisindeki JVM programınızdaki koda göre işletim sistemi fonksiyonlarını çağırıyor. S: Bir de JavaBeans denilen bir şey varmış. Bu da bir çeşit Java programı mı yoksa apayrı bir şey mi? JavaBeans, Java nesne teknolojisine verilen bir ad. Java ile yazılan programların birbirleri ile iletişim kurması, bu program parçalarının başka programlarda tekrar kullanılabilmesi için bir dizi kurallara uyması gerekiyor. Bunun için Sun, JavaBeans'i geliştirdi. Kelime anlamı olarak da Java yani kahve taneleri demek. Ne işe yarayacağına gelince, bir çok firma JavaBeans'e uygun Java programcıkları ve Java nesneleri, genel bir ad vermek gerekirse Java bileşenleri geliştiriyor. Bu Java bileşenleri arasında neler yok ki, hesap tablosu bileşeninden kelime işlemciye, görüntü oynatıcıdan ses kaydedici bileşenlere kadar her şey var. Java programcıları bu bileşenleri kaynak kodunu bile görmeden istedikleri gibi programlarında kullanabiliyor, bunu da bu bileşenlerin JavaBeans olması sağlıyor. Peki bu bileşenleri nereden bulacağız? Bileşenlerin bir kısmı standart olarak JDK içerisinde var, bir kısmını ise görsel Java uygulama geliştirme araçları üretenler yazıyor veya yazan firmalardan satın alıyor. Bir kısmı ise parasını sayıp almanız gerekiyor. Eğer siz kendiniz bir JavaBean yazmak istiyorsanız, bunu herhangi bir Java programı gibi yazıyorsunuz ve derleyicinize bunu JavaBean olarak derle diyorsunuz o da Java programınızı bir JavaBean haline getiriyor. JavaBeans'i destekleyen görsel araçların belli başlılarını sayarsak Borland Open Jbuilder, IBM Applet Author, IBM VisualAge for Java, Sun Java WorkShop, Symantec Visual Café. S: Ben program yazmak için Visual Basic'i kullanıyorum. Şimdi oturup Java'yı öğrendim diyelim. Bugüne kadar yazdığım binlerce satır Visual Basic kodunu çöpe mi atacağım? Visual Basic Windows platformuna özel bir uygulama geliştirme ortamı. Java ise platform bağımsız bir dil. Ama Sun dünyadaki milyonlarca Visual Basic programcısını da kendi cephesine çekmek için Visual Basic uygulamalarını Java'ya dönüştüren bir çevirici üzerine çalışmaya başladı. Bu yılın sonlarına doğru Visual Basic programlarınızı Java'ya dönüştürecek araç piyasaya çıkmış olacak. Visual Basic kullanıcıları genelde ActiveX kontrollerini kullanıyor. JavaBeans de aslında aynı şey. Eğer isterseniz Java içerisinden ActiveX kontrollerini de kullanabilirsiniz fakat bunu pek tavsiye etmiyoruz; çünkü eğer ActiveX kontrollerini kullanırsanız bu sefer yazdığınız program '%100 Saf Java' olmayacak. Bu da programınızın her yerde çalışmayacağı anlamına geliyor. Her ne kadar Microsoft ActiveX'i Macintosh ve Unix platformlarına da taşımaya başladığını söylese de ActiveX'ler Java kadar yaygın değil. S: Java'nın akıllı kartlardan dev bilgisayarlara kadar her yerde çalıştığını söylemiştiniz. Hadi bilgisayarı anladık da bu kart ne oluyor. Kart içerisine işlemciyi nasıl sığdırıyorlar da Java programlarını çalıştırıyor. Bir programın çalışması için tabii ki bir işlemciye ihtiyaç var. Ama işlemci deyince aklımıza sadece 5x5 cm ebatlarında iki veya üç milim kalınlığında, altında bir sürü ayağı olan bir şey gelmesin. İşlemciler bugün hayatımızın bir çok noktasına girmiş durumda. En basitinden televizyonunuz içerisinde, telefonunuz içerisinde, incecik hesap makinanızın içerisinde de işlemci var. Akıllı kartlardaki işlemci de işte bu bizim bildiğimiz fiziksel boyutlara uymayan işlemcilerden birisi ve kart üzerindeki sarı kısımda buluyor. Bu kartları çalıştırmak için de ya özel ya da genel bazı programlama dillerinde programlar yazılıyor. Bu işlemcinin yapabileceği şeyler de tabii ki sınırlı. Java akıllı kartlar üzerinde bile çalışıyor derken akıllı kartların çalıştıracağı programın Java ile de yazılabileceğini anlatmak istedik. JDK 1.1'de SmartCard API'ları da bulunduğu için akıllı kartlar için program yazmak da oldukça kolaylaşıyor. Java Internet ile beraber yaygınlaştığı için daha yaygın olarak Internet araçları üzerinde çalışıyor. Bir çok kişi her türlü aracın birbiri ile Internet üzerinden iletişim kurabileceği bir dünyadan bahsediyor. Bu araçlar içerisinde bilgisayar, telefon, faks olduğu kadar televizyon, çamaşır makinesi, fırın, klima gibi günlük hayatımızda sıkça kullandığımız ev ve ofis eşyaları da var. Mesela sabah fırına bir tavuk koyuyorsunuz, akşam üzeri saat dörtte işyerinizdeki bilgisayarınızdan evdeki fırınınız ile iletişim kurup fırına tavuğu hangi programda, kat dakika pişireceğini belirtiyorsunuz ve eve gittiğinizde tavuğunuz pişmiş oluyor. Veya kış aylarından birinde iş için gittiğiniz bir akşam yemeğinden çıkıyorsunuz ama ev şimdi buz gibidir. Hemen yanınızdaki notebook'unuz ile cep telefonunu da kullanarak Internet'e bağlanıp kat kaloriferinizi yakıyorsunuz. Eve gidip kapıyı açınca sıcacık bir hava yüzüne çarpıyor. İşte tüm bu araçları kullanabilmek için Java bulunmaz bir fırsat. Gerçi şu anda bu saydığımız ev eşyaları bu tip uzaktan yönetim için uygun değil ama bir kaç yıl içerisinde gerek kahverengi eşya, gerekse beyaz eşya ve diğer ev ve ofis araçları olsun, hepsi uzaktan yönetime hazır olacak. Yine bu süre zarfında Amerika'da yaygınlaşan evlerin de Internet'e kiralık hatlarla bağlanması tüm dünyaya yayılacak. S: Ev eşyası, ofis eşyası dediniz de, şu son zamanlarda adını duyduğumuz WebTV'ler Java programlarını çalıştırabilecek mi onu merak ettim. WebTV'ler browser tabanlı araçlar olarak piyasaya sürülecek ve haliyle Java ile yazılmış uygulamaları da destekleyecekler. Bu aletlerin Java ile olan ilişkisi aslında daha da yakın. Biraz önce bahsettiğimiz gibi Sun, işlemcilerin Java programlarını daha hızlı çalıştırabilmesi için picoJava diye bir çekirdek işlemci mimarisi geliştirdi. Televizyon ve WebTV gibi araçlar için işlemci üreten bir kaç işlemci üreticisi firma da bu kodun lisansını Sun'dan aldı ve picoJava kodu içeren işlemciler üzerinde çalışmaya başladılar. Bir kaç yıl içerisinde bu tip araçlar Java'yı işlemci seviyesinde desteklemiş olacaklar. Bunun yararı ne olacak diye sorarsanız, Internet üzerinden alış veriş yapmak hızla yaygınlaşıyor. Bu sayede evinizden oturduğunuz yerden alış veriş yapmanız, çeşitli bilgi bankalarına bağlanıp araştırmalar yapmanız, banka işlemlerini yapmanız mümkün hale geliyor. S: Java'nın dışında JavaScript diye bir şeyden de bahsediyorlar. Nedir bu JavaScript? JavaScript ilk defa Netscape tarafından geliştirilen yeni bir script dilidir. Script dilini biraz açmak gerekirse, derlenebilen bir programlama dili değil, mevcut programınızı geliştirmek için kullanabileceğiniz bir kodlar silsilesidir. Etkileşimli Web sayfaları yaratmanıza imkan tanıyan JavaScript ile yazdığınız scriptleri kolayca HTML sayfalarınıza ekleyebilir ve çalıştırabilirsiniz. Bir zamanlar CGI (Comman Gateway Interface) dışında hiç bir scripting dili ile yapılamaz denilen işlemler, artık JavaScript ile mümkün duruma geldi. JavaScript'in kullanım kolaylığı o kadar benimsendi ki Web sitesi hazırlayanlar için neredeyse vazgeçilmez bir dil durumuna dönüştü. Internet üzerinde gezinirken hemen her sitede 1-2 JavaScript kullanan yer bulabilirsiniz. Java appletler ve JavaScriptler konusunda en iyi kaynaklardan biri olan Gamelan bu konuyla ilgilenenlerin ilk uğraması gereken Internet adreslerinden biri. http://www.gamelan.com adresinden JavaScript bölümüne girdiğinizde hem örnek JavaScript sayfaları bulabileceksiniz, hem de JavaScript kullanan bazı sitelerin adreslerine ulaşabileceksiniz. S: Peki bu JavaScript'in Java'dan farkı ne? Birçok kişi JavaScript'in Java olduğu konusunda yanılgıya düşer. Bunun en büyük sebebi ikisinin de Java kelimesini içermesidir. Fakat bu kesinlikle yanlış bir düşünce. Bu yazı boyunca neden JavaScript'in Java olmadığını anlayacaksınız. Ama hemen bir tanımlama yapmak gerekirse, şöyle açıklayabiliriz: Java ve JavaScript Internet programcılığı için kullanılan iki değişik teknik. Bunlardan Java, bir programlama dilidir. JavaScirpt ise isminden de anlaşılacağı gibi bir scripting dilidir. Aradaki en büyük fark, Java ile gerçek programlar - yani bildiğimiz anlamda bilgisayarlarımızda kullandığımız programlar - yaratılabilmesi, öte yandan JavaScript ile gerçek bir program yazılamamasıdır. JavaScript ile her ne kadar bildiğimiz anlamda program yazamayız desek de, JavaScript'in yetenekleri sayesinde Web üzerinden oynanabilecek basit oyunlar, formlar, diyalog kutuları hazırlanabilir. JavaScript genel olarak JavaScript yazarları tarafından bir HTML uzantısı yani HTML dilinin bir parçası olarak görülür. S: Tamam JavaScript'in ne olduğunu öğrendik. Peki bu JavaScript'leri nasıl çalıştıracağız? JavaScript ile yazılan scriptleri çalıştırmak için tek ihtiyacınız olan şey, JavaScript desteği olan bir Web tarayıcıdır (browser). Örnek vermek gerekirse Netscape Navigator 2.0 sürümünden, Microsoft Internet Explorer ise 3.0 sürümünden itibaren JavaScript'i desteklemektedir. Bu iki browser çok geniş bir Internet kullanıcı kitlesine hitap ettiği için, JavaScript'leri artık hemen her Internet kullanıcısı çalıştırabilir diyebiliriz. S: Bu JavaScript'leri hazır HTML sayfalarında nasıl kullanacağız? JavaScript kodları kolayca HTML sayfalarına eklenebilir. Aşağıda, basit bir HTML sayfasının içinde kullanılmış küçük bir JavaScript örneği göreceksiniz. <html> <body> <br> Bu normal HTML'dir. <br> <script language="JavaScript"> document.write("Bu ise JavaScript'dir!") </script> <br> Burası yine HTML'dir. </body> </html> İlk bakışta yukarıdaki örnek normal bir HTML dosyası gibi görünüyor. Buradaki asıl JavaScript kodu şunlardır: <script language="JavaScript"> document.write("Bu ise JavaScript'dir!") </script> Aşağıda ise yukarıda verdiğimiz örneğin JavaScript desteği olan bir browser'daki çıktısını göreceksiniz. Bu normal HTML'dir Bu ise JavaScript'dir! Burası yine HTML'dir. Bu noktada söylemeliyiz ki, bu tür bir JavaScript'i yukarıdaki gibi kullanmak pek pratik bir yöntem değildir. Çünkü bu işi sadece HTML kullanarak da yapabilirdiniz. Örneğin verilmesindeki tek amaç size <script> komutunun çalışma mantığını göstermekti. <script> ve </script> komutları arasında yazılan her şey browser'lar tarafından JavaScript kodu olarak algılanarak işlem görür. Bu ilk basit örnekten sonra JavaScript'in daha yoğun kullanıldığı fonksiyonları inceleyelim. JavaScript fonksiyonları HTML sayfanızda <head> ve </head> komutları arasında yer alır. Bu sayede yazdığınız fonksiyonlar ekrana çıkacak her öğeden önce hafızaya yüklenir ve kullanıcı bir fonksiyonu çağırdığında fonksiyon hazır olur. <html> <head> <script language="LiveScript"> function pushbutton() { alert("Selam!"); } </script> </head> <body> <form> <input type="button" name="Button1" value="Buraya Basın" onClick="pushbutton()"> </form> </body> </html> Bu script bir düğme yaratır. Bu düğmeye bastığınızda içinde "Selam!" yazılı bir diyalog penceresi açar. "PushButton" isimli fonksiyonumuz <head> ve </head> komutları arasında olduğu için önceden hafızaya yüklenir. Arkasında <form> HTML komutu ile bir düğme yaratılır. "onClick" komutu ise düğmeye bastığınızda "PushButton" fonksiyonunu çalıştırmasını sağlar. Çalıştırdığımız fonksiyon ise "alert" komutu ile bir diyalog penceresi açar ve içine "Selam!" yazar. S: Peki ya biz JavaScript'i desteklemeyen bir browser kullanıyorsak? Yazımızın başında her browser'ın JavaScript'i desteklemediğinden bahsetmiştik. JavaScript'i desteklemeyen browser'larda yazdığınız tüm JavaScipt satırları aynen görünür ve sayfanızın tüm görüntüsünü bozar. Bunun çözümü yok mu diye merak ediyorsanız, tabii ki var. HTML dilinde sıkça kullanılan açıklama satırı komutu "<!--" "-->" ile yazdığınız script'lerin eski browser'larda görünmemesini sağlayabilirsiniz. Hem script'lerimizi JavaScript'i desteklemeyen browser'lardan gizleyen hem de kullanıcıdan aldığı bilgiyi sayfaya yansıtan iki örnekle devam edelim. 1. Örnek: <html> <head> <script language="LiveScript"> <!-- JavaScipt'i desteklemeyen eski browser'lar için gizlemeyi başlatır. function getname(str) { alert("Selam, "+ str+"!"); } // JavaScipt'i desteklemeyen eski browserlar için gizlemeyi bitirir. --> </script> </head> <body> İsminizi Giriniz: <form> <input type="text" name="name" onBlur="getname(this.value)" value=""> </form> </body> </html> Dikkatinizi çekeceği gibi, <script language="LiveScript"> satırının hemen altındaki satırda <!-- diye bir komut kullandık. Bu komut sayesinde JavaScript'in desteklenmediği browser'larda bu scriptler gözardı edilir. Örneğimizin ne yaptığını merak ediyorsanız size önce isminizi sorar arkasından da açacağı bir diyalog penceresinde "Selam, isminiz" yazar. 2. Örnek: <html> <body> <br> Bu normal HTML'dir. <br> <script language="JavaScript"> <!-- JavaScipt'i desteklemeyen eski browserlar için gizlemeyi başlatır. document.write("Bu ise JavaScript'dir!") // JavaScipt'i desteklemeyen eski browserlar için gizlemeyi bitirir. --> </script> <br> Burası yine HTML'dir. </body> </html> JavaScript'i desteklemeyen bir browser'da yukarıdaki kodumuz aşağıdaki gibi görünecektir: Bu normal HTML'dir. Burası yine HTML'dir. Eğer script'imizi eski browser'lardan saklamasaydık aşağıdaki gibi görünecekti: Bu normal HTML'dir. document.write("Bu ise JavaScript'dir!") Burası yine HTML'dir. Dikkat edilmesi gereken şey, JavaScript kodunun tamamen saklanamamasıdır. Bizim burada yaptığımız sadece yazdığımız script'in çıktısının ekrana gelmesini engellemektir. Kullanıcı browser'ından Görünüm*Kaynak seçeneği ile tüm sayfalarınızın içinde yazanları okuyabilir. S: JavaScript güzel bir şeye benziyor. Hem bu dili daha iyi anlamam, hem de hazırladığım Web sayfasında kullanmam için birkaç örnek verir misiniz? Birçok kişinin hoşuna gideceğini ve işine yarayacağını düşündüğümüz diğer bir örnek ise tarih fonksiyonu. Örneğin hazırladığınız her sayfanın sonuna "En son güncelleme Tarihi: xx/xx/xxxx" gibi bir satır ekliyorsunuz. O zaman bunu her seferinde elle güncellemenize gerek yok. Yazacağınız küçük bir JavaScript ile tarihin oraya otomatik olarak yazılmasını sağlayabilirsiniz. <html> <body> Burası normal HTML sayfasıdır... <br> En son güncelleme tarihi: <script language="LiveScript"> <!-- JavaScript'in desteklenmediği browserlardan script'I saklar. document.write(document.lastModified) // saklamanın bittiği yer --> </script> </body> </html> Bu script yüzde 99 oranla her makinede çalışsa da, bazı server'lar kullanıcılara sadece 1/1/1970 tarihini gönderirler. Fakat kullanmadan önce script'i kendi server'ınızda test ederek sizde çalışıp çalışmadığını anlayabilirsiniz. İkinci örneğimiz ise sizin server'ınızın sistem saati ve tarihini okur. Burada unutmamanız gereken, sizin sayfalarınıza başka ülkelerden bağlananların yerel saatleriyle sizin saatinizin farklı olabileceği. O yüzden bu tip script'lerin çıktılarında saatin ve tarihin yerel olduğunu belirtmek daha doğru olacaktır. <script language="JavaScript"> <!-- JavaScript'I saklar today = new Date() document.write("Saat: ",today.getHours(),":",today.getMinutes()) document.write(" Tarih: ", today.getMonth()+1,"/",today.getDate(),"/",today.getYear()); // saklamayı bitirir --> </script> Yukarıdaki örneğimizin ekrandaki çıktısı aşağıdaki gibi olacaktır: Saat: 5:27 Tarih: 3/25/97 OnMouseOver Özelliği: OnMouseOver JavaScript'te yine çok fazla kullanılan kullanışlı bir komuttur. Örneğin aşağıdaki örnek ekrana "Ana Sayfa" yazar ve bu yazıyı bir link haline getirir. HTML dilinden bildiğiniz gibi bu linkler bir sayfadan başka sayfaya geçmek içindir. Normalde biz "onMouseOver" komutunu kullanmasaydık browser'ımızın durum çubuğunda o linkin üzerine fare ile gittiğimizde gidilecek olan sayfanın ismi yazacaktı (anasayfa.htm). Fakat onMouseOver sayesinde durum çubuğuna daha anlaşılır bir yazı yazdırdık: "Bu link sizi ana sayfaya geri döndürür" <a href="anasayfa.htm" onMouseOver="window.status='Bu link sizi ana sayfaya geri döndürür...';return true"> Ana Sayfa </a> Bu konudaki ikinci örneğimiz ise yine fare ile bir linkin üzerine geldiğimizde bir uyarı penceresi açtırmak: <html> <head> <script language="JavaScript"> <!-- Hiding function hello() { alert("Dikkat!"); } // --> </script> </head> <body> <a href="" onMouseOver="hello()"> Buraya Tıklamayınız!.. </a> </body> </html> Yeni Bir Explorer Penceresi Açmak JavaScript'in etkileyici özelliklerinden biri de yeni pencereler yaratmasıdır. Önce aşağıdaki örneği bir inceleyelim: <html> <head> <script language="JavaScript"> function WinOpen() { msg=open("","DisplayWindow","toolbar=no,directories=no,menubar=no"); msg.document.write("<HEAD><TITLE>Yeni Pencere!</TITLE></HEAD>"); msg.document.write("<CENTER><h1><B>Artık Yeni Pencereler Açmak Çok Kolay ! </B></h1></CENTER> "); } </script> </head> <body> <form> <input type="button" name="Button1" value="Buraya Basın" onclick="WinOpen()"> </form> </body> </html> Bu tip örneklerde hep olduğu gibi burada da yine bir fonksiyon kullanıldı. WinOpen fonksiyonu "open" yöntemi ile yeni bir Explorer penceresi açar. open("","... ile başlayan satırda gördüğünüz gibi iki tane tırnak var yan yana. Bu iki tırnak arasında bir HTML sayfası ismi yazsaydık o sayfa yüklenecekti yeni açılan browser'a. Fakat yeni açılacak pencereye hazır bir HTML sayfası yüklemek zorunda değilsiniz. Yukarıdaki örneğimizde olduğu gibi msg.document.write komutu ile yüklenecek olan sayfanın içeriğini önceden hazırlayabiliriz. Açılacak olan pencerenin boyutunu veya ne özelliklerle açılacağını da açılmadan belirleyebiliriz. Aşağıdaki satır ile örneğin araç çubuğunun görünmemesi sağlanmış. msg=open("","DisplayWindow","toolbar=no,directories=no,menubar=no"); Bunun gibi yeni pencere açtığınızda oynayabileceğiniz özellikler şunlardır: Toolbar, location, directories, status, menubar, scrollbars, resizable, copyhistory, width=pixels, height=pixels Width ve height ile açılacak olan yeni browser pencerenizin boyutunu pixel cinsinden belirleyebilirsiniz. |