Jose M. Fernández Yazara
iletin
|
Java. Bölüm IÇeviri: İnci GedikAçı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 |