Jose M. Fernández Yazara
iletin
|
Java. Bölüm IÇeviri: İnci Gedik (Gözden geçirilmekte)Açýklama: Bu , Java programlama hakkýndaki bir seri makaleden ilkidir. Ýlk bölüm Java'yý bir dil olarak , genel karakteristiði ve en fazla rabet gören bilgi kaynaklarýnýn yeriyle açýklamaktadýr.
GiriþBu ,Java programlama dilini ve onun çevresel geliþimini açýklayan bir dizi makale ile baþlar.Birinci amaç olarak ,dilin tarihi hakkýnda yayýmlardan, mikrodalgalar ve çamaþýr makinelerinden... uzak duracaðým.( Eðer aranýzda bunlardan herhangi biri ile ilgilenen varsa bunlarý çoklu kütüphanelerden hatta literatürden bulabilir.) Ayný zamanda kocaman burunlu, üçgen vücutlu ve ellerini marimba'nýn ritmine göre sallayan ,bana eski Amerikan bilim kurgu filmlerini hatýrlatan Duke ' tan da (Java'nýn maskotu) uzak duracaðým.Java fenomeni de zamanýnda geçici popülerlik taþýdý.Her seviyedeki bilgisayar magazini bunun hakkýnda yazdý , Java apletlerini geliþtirmek üzere ürün satan birçok yazýlým firmasý var ve çok az web sitesi Java apleti içermiyor. Bu seriler arasýnda mümkün olduðu kadar , aslýnda temel iþler için basit fakat ustalýklý kullaným için haylý karýþýk ve zor olan bu programlama dilini derinlemesine incelemeye ve öðrenmeye çalýþacaðým. Bu ilk birkaç makale ile amacýmýz genel olarak dile bir tanýmlama saðlamak böylece daha sonra apletler,að-iliþkili planlar, JDBC,vb. gibi konularýn derinine inebiliriz. Þunu belirtmeliyim ki Java genel amaçlý bir dildir,bunu yapmada oldukça popüler olmasýna raðmen sadece web sayfalarýna aplet yazmak için kullanýlmak üzere yaratýlmamýþtýr. Java'nýn sadece görünüþüne takýlamayýz çünkü java apletlerinden çok daha ilginç bir çok alternatifi vardýr. Bu ilk makale tanýmlamadan çok pratiktir.Bir sonra ki makalede, dilin temel karakteristiklerini ve çevresel geliþimini açýklayacaðýz.Sadece en sonda Java programýnýn bir örneðini göreceðiz. OrijinJava Sun Microsystem Inc. 'de hayatýnýn 18 ayýný geçirdiði yerde 1991'de James Gosling, Patrick Naughton, Chis Warth, Ed Frank ve Mike Sherindan tarafýndan oluþturuldu. 1992 ve 1995 arasýnda Bill Joy, Arthur Van Hoff, Jonathan Payne, Frank Yellia, Tim Lindolm ilk prototipin olgunlaþmasý üzerine iþbirliði yaptýlar.Tarihlerden belli ki Java WWW 'den önce ya da en azýndan onunla eþzamanlý oluþturulmuþtur -- 1991'e kadar Tim Berners Lee HTML dilini geliþtirmemiþtir. Java'nýn yapýsý C'ye oldukça benzemektedir ve obje aðýrlýklý karakteristikleri de ayný zamanda C++ 'a benzemektedir. Java uygun ve mantýk çerçevesinde birbirini tutan bir programlama dilidir. C ve C++ arasýndaki benzerlikler, Java'nýn C++ 'ýn internet için bir versiyonu olduðu izlenimini verebilir, fakat önemli teorik ve pratik farklýlýklar vardýr. Java özellikle C++ ile karþýlaþtýrýlan obje kökenli parametreleri düzeltir ve arýtýr. Internet Java'yý ortaya
attý ve herkesin bildiði bir dil haline getirdi ve eþzamanlý
olarak Java, siberuzayda ücretsiz edinilebilen objeler dizisini geniþlettiðinden
beri Ýnternette derin etki yarattý (kendi çalýþtýrýlabilen
programlar ).
Ýncelemek ve ÝndirmekJava programlama için kesin birçok araç vardýr.Tesadüfen hep GNU/LINUX ortamýný önereceðim (kelimenin tam anlamý ile kayýplarýnýn bulunmasý):Ben JDK (Java Development Kit) ortamýný , Netscape versiyon 2.0.14 ya da sonrasý , ve Xemacs gibi bir yazý editörü kullanacaðým .Daima Xwindows ortamýnda çalýþacaðýz . Herzaman gerekli olmamasýna raðmen , Apletleri ve programlarý bir grafik arabirimi ile geliþtirirken buna ihtiyacýmýz olacak. JDK daðýtýmý aþaðýdaki sayfadan indirilebilir : Dosyalarý hemen indirmek yerine bu siteden baðlantýlý aynalardan birini seçebilirsiniz. Birkaç ay önce - son ziyaretimde - JDK-1.1.3 'nin son versiyonu (bu makale için kullanýlan) 1.19 versiyonunun orada olduðunu gördüm.Unutmayýn ki herþeyi indirmeye kalkarsanýz bu size 24 Mb'a mâlolur.Oysa sadece ihtiyacýnýz olan þeyler yaklaþýk 12 Mb yer kaplamaktadýr(deneyin!). gunzip ile arþivleri açtýðýnýzda baþlamanýz için hiçbir engel kalmayacak. Normal olarak daðýtýmý /usr/local dizinine yapmak ,sonra /JDK1.1.3 alt dizinini yaratmak ve beraberinde aþaðýdakileri yapmak gerekir : /doc HTML formatýndaki ofis dökümanlar /demo Java demo programlar /lib Kütüphaneler /bin JDK'nýn belli araçlarýnýn olduðu dizin. /lib dizininin içinde "classes.zip"(dosyayý açmayýn) dosyasýný buluruz , bu dizin JDK tarafýndan kullanýlan derlenmiþ sýnýflarý içerir. root dizini ile beraber "src.zip" dosyasýný buluruz , bu dizin classes.zip içerisinde yeralan kaynak dosyalarý içerir . Bunlar derlenemez ve sadece bilgi amaçlý daðýtýmlarla beraber desteklenirler. Ortamýn GeliþtirilmesiDaha önce belirtildiði gibi geliþme araçlarý /bin dizininde yeralýr :Java : java yorumlayýcýsý . Java baytkodlarýný çalýþtýrýr. jre : Java'ya benzer baþka bir yorumlayýcý ,fakat kullanýcýlar için olduðu düþünülmesine raðmen tüm seçeneklerin kullanýlýr olmasý istenmemektedir. appletviewer: apletleri test eder ve çalýþtýrýr. jdb: hata düzelticisi. javap: Java da derlenen baytkod dosyalarýnýn ayýrýcýsý. javadoc : dökümantasyon jeneratörü , genel ve korunmuþ sýnýflarý, arayüzleri , yapýlarý, methodlarý ve alanlarý tanýmlayan HTML sayfalarýný yaratýr.Ayný zamanda sýnýf hiyearaþisini ve üyelerin içinde bulunduðu indeksi yaratýr. javah : Java programlarýnýn bilinen metodlarýna eklenen araç ( C de ) jar: java sýnýflarýný ve kaynaklarýný bir Jar arþiv dosyasýnda saklar . javakey : Dijital imzalarý koruyan araç. updateAWT : bir baþvurudaki AWT1.02 metodu ile deðiþtirilen isimleri güncelleþtirir. KarakteristiklerDevam etmeden önce , kendimize Java nedir sorusunu sormamýz gerekir. Cevaplamak için JDK'nýn elkitabýnda yazdýðý gibi Java'nýn bir programlama dili ve ayný zamanda bir platform olduðunu gözönünde bulundururuz.Bir programlama dili olarak Java aþaðýdaki karakteristiklerle beraber yüksek seviyeli bir dildir. (ayný noktada onlarý detaylý olarak inceleyebiliriz ):
" Birkez yazýp herzaman çalýþtýrabildiðimiz " Java baytkodlarýna teþekkür ederiz. Java programlarýný bir platformda derleyebilir ve JVM (Java Virtual Machine ) aracýný içeren tamamen farklý baþka bir yapýda çalýþtýrabiliriz. Örneðin bir Java programý Windows NT platformunda derlenebilir ve bir Sun Ultra Solaris 'de sorun olmadan çalýþabilir . (en azýndan teorik olarak) Genel olarak bir platform uygulamanýn çalýþtýðý bir donaným/yazýlým ortamýdýr . Bununla beraber Java için bir platform çalýþtýðý bir yazýlým ortamýdýr . Her Java platformu bir donaným ortamýnda çalýþmak zorundadýr. Bir Java platformunun iki bölümü
vardýr :
Java'nýn API 'sý
grafiker kullanýcý arayüzü (GUI ) gibi özellikleri
destekleyen geniþ bir yazýlým bileþenleri koleksiyonudur
. Bunlar kütüphanelerde gruplandýrýlmýþtýr.
( Java terminolojisini kullanan Java paketleri ).Bu paketler sayesinde
çok bilinen web Apletlerinin yanýsýra,
Java'yý daha birçok uygulamada kullanmak mümkündür.
Web serverlarýný dizayn etmek mümkündür, örneðin,
vekiller, ileti serverlarý, IRC serverlarý, ve Ýntenet
ile ilgili hayal edilebilecek herhangi birþeyler...
Bu temel API kabuðunun yanýsýra ayný zamanda 3D uzantýlarý , iletiþimler, animasyonlar, vb. vardýr.
Bu uzun "konuþma" dan sonra (çoðu Java dökümanlarýnda bulunabilir) Java'nýn GNU/Linux dünyasýndaki yerini merak edebilirsiniz .Daha önce Linux için kullanýlan, Sun Mikrosistem tarafýndan geliþtirilen ticari amaçlý (ücretsiz daðýtýldýðý halde) JDK dökümanlarýndan bahsetmiþtik. GLP lisansý altýnda GUAVAC derleyicisi gibi herhangi bir Java kaynaðýný hiçbir sorun ile karþýlaþmadan derlememizi saðlayan birçok araç vardýr.Ayný zamanda Berkeley lisansý altýnda KAFFE olarak adlandýrýlan bir sanal makineden bahsetmeliyiz .Son iki proje , geliþme sistemini tamamlamak için Sun'nýn Java sýnýf kütüphanelerine (ücretsiz daðýtýmda olanlar ) ihtiyaçlarý olduðu halde oldukça iyi seviyedelerdir. Varolan birçok proje, hâlâ ilkel seviyede olmalarýna raðmen , geliþme ortamýný hýzlý ve sanal uygulamalar ile saðlamayý amaçlýyor. Son olarak nette Java ve GNU teknolojisinde büyük hareketlenmelerin olduðunu , özellikle Sun'dan baðýmsýz olarak Java için ücretsiz daðýtýlan tamamlanmiþ araç kutularýnýn yaratýldýðýný sevinerek söylüyorum . Java'nýn önemini modasý geçtiðinde yeni yeni anlýyor olabiliriz, ama eminim ki onu hatýrlatacak bazý þeyler olacaktýr.( Hatta birçok þeyin kalacaðýna bahse girerim) JAVA da ilk programDilin genel karakteristiklerinden bazýlarýný gördükten sonra gerçek bir programa bakalým.Giriþte belirttiðim gibi, merhaba dünya örneði gibi sýradan laflardan mümkün olduðu kadar uzak duracaðým, onun yerine istediðimiz boyutta bir kare çizecek olan bir program ile baþlayalým.(Fazla olmamak kaydý ile biraz karýþýk): class Cuadro { public static void main (String args[]) { int l ,a; if (args.length == 2) { l = Integer.valueOf(args[0]).intValue(); a = Integer.valueOf(args[1]).intValue(); } else { l= 20; a= 15; } for (int i=l; i>0; i--){ System.out.print("*"); } System.out.print("\n"); for (int i= a-2; i>0; i--){ System.out.print("*"); for(int j=l-2; j>0; j--) { System.out.print(" "); } System.out.print("*\n"); } for (int i=l; i>0; i--){ System.out.print("*"); } System.out.print("\n"); } }Java'da kaynak dosyaya verilen isim çok önemlidir çünkü bir "derleyici birim" tanýmlar.Dosya bir veya daha fazla tanýmlama sýnýfý içerebilir.Derleyici kaynak dosyadan uzantýyý taþýmasýný ister. Java (4 karakter) kesinlikle bazý sistemler tarafýndan desteklenmemektedir. (DOS ya da Windows 3.1) Verilen örnekte sýnýfýn ismi kaynak dosyanýn adý ile tanýmlanýr .Bu tesadüf deðildir , Java'da tüm kodlar bir sýnýfta olmalýdýr.Anlaþmaya göre sýnýfýn ismi ,sýnýfý içeren kaynak dosyanýn adý ile uyuþmak zorundadýr.Bundan baþka Java küçük büyük harfe karþý hassastýr. Komut satýrýnda örneði
derlemek için :
Java derleyicisi , (hersey iyi giderse) kendiliðinden ikilik (baytkod) formu içeren Cuadro.class dosyasýný yaratýr ve acil olarak yorumlayýcý tarafýndan çalýþtýrýlabilir : > java Cuadro Java kaynak kodu derlendiðinde , her sýnýf arþivde sýnýf ismi ile ayný ve bireysel olarak yerleþtirilir. Bu yüzden kaynak dosyalara içerdikleri sýnýfýn ismi ile ayný adý vermek güzel bir alýþkanlýktýr böylece kaynak dosya adý arþiv.class dosyasý ile örtüþür. Cuadro.java örneðimizin basitliðine raðmen Java'nýn temelini ve tipik java programlarýnýn yapýsýný anlamamýzý saðlar . Ýlk olarak bu örneðin HTML dosyasýnda varolan bir aplet olmadýðýný fakat komut satýrýnda java derleyicisi tarafýndan derlenebilen baðýmsýz bir program olduðunu anlayýn. Programýn ilk satýrý : class Cuadro {Ýlk kelime saklanan dilden alýnmýþtýr , "Cuadro" -- ispanyolca bir kelime-- isimli yeni bir sýnýfýn tanýmlamasýný yapmaktadýr. Tüm üyelerini içeren sýnýfýn verilmiþ tanýmlamas iki küme parantezinin {} içinde verilir. Bir sonraki satýrda: public static void main (String args[]) {main( ) isimli metod gösterilir .Tüm Java uygulamalarý main( ) olarak isimlendirilen metod ile çalýþtýrýlmaya baþlanýr .(C/C++'a benzer þekilde).Þimdi size örneði anlamak için gerekli detaylarý belirtmeme izin verin .(sonraki makalelerde bu daha ayrýntýlý açýklanacaktýr). public þifre kelimesi sýnýflarýn üye metodunu kontrol eder . Bir sýnýf public olarak tanýmlandýðýnda , bu sýnýf kendisinin dýþýnda tanýmlanmýþ kodlar tarafýndan kullanýlabilir . static þifre kelimesi main( ) metodunu sýnýfý araþtýrmadan uyanmaya zorlar . Void bu metodun herhangi bir deðere dönüþmediðini gösterir . Bir fonksiyon ya da metodun parametrelerini geçmek için fonksiyon isminden sonra parantezler kullanýlýr , bizim örneðimizde main String sýnýfýndan indisleri olan bir matrisi parametre olarak alýr . Belli ki bu metoda baðlý tüm kodlar ayný zamanda yuvarlak parantezler arasýnda kapatýlýr .Sonra, satýrda : int l, a ;iki deðiþken tanýmlarýz .Java da tüm degiskenler kullanýlmadan önce tanýmlanmalýdýr .Þunu farkedin ki koddaki tüm yapýlar noktalý virgül ";" ile biter . Kodun kalanlarý aþaðýdaki gibi küçük bir algoritma gösterir :
If (args.length==2) l = Integer.valueOf(args[0]).intValue(); a = Integer.valueOf(args[1]).intValue(); l = 20; a = 15; System.out.print()ifadesi ile gösterilebilir. System sisteme giriþi saðlayan sýnýfýn öntanýmlamasýdýr ve out konsol ile baðlantýlý çýktý dizisidir.Ayný zamanda, for (int i=l; i>0; i--)Beklendiði gibi C/C++ deneyi ve diðer dillerin dediði gibi hareket eder. ÖzetJava programlama dilinin genel özellikleri ile ilgilendik.Programa henüz baþladýk ve gidecek uzun bir yol var,gelecek makaleler dilin tanýmlamasý hakkýnda daha derinlemesine bilgi verecekler.Bundan sonraki makalede , tanýmlamalar ve deðiþkenlerin tipleri, temel yapýlar, sýnýflar gibi dilin ana özellikleri üzerinde çalýþacaðýz.Herbir makalede o makalelerin referanslarýný,kütüphanelerini ve URL'lerini vereceðim.
Miguel
A Sepulveda tarafından İngilizce'ye çevrilmiştir.
|
Bu sanalyörenin bakımı Miguel Angel Sepulveda
tarafından yapılmaktadır.
© Jose M. Fernandez 1998 LinuxFocus 1998 |