Bir Uzmanın Kaleminden Java

Bu başlık kilitlidir. Yeni mesajlar gönderilemez veya mevcut mesajlar düzenlenemez.
SeRBoY_WHiTe
10-03-2005, 14:12   |  #1  
OP Yıllanmış Üye
Teşekkür Sayısı: 0
390 mesaj
Kayıt Tarihi:Kayıt: Tem 2004

Neden Java?
Java'ya geçeli tam üç sene oluyor. Bu yazıya o zaman başlamıştım, ancak tamamladım.

Otuz dört senedir program yazıyorum. Bu süre içinde 50 kadar işletim sistemi ve bir o kadar programlama dili kullandım. Çeşitli düzeylerde programlama eğitimi verdim. Doktora çalışmam da dahil, ilk on iki sene Fortran tek aletim oldu. Sonra Pascal’a geçip yirmi sene boyunca çeşitli Pascal derleyicilerinde ustalaştım. Elbette bu arada Cobol’dan APL’e, Prolog’dan SQL’e kadar bir çok dili öğrendim, ama yaptığım işlerde sadece Fortran ve Pascal ön planda kalmıştı. 2001 yılının son günlerinde Java öğrenmeye başladım. İlk izlenimlerim o kadar iyi oldu ki, hemen köklü bir karar vererek diğer derleyicileri sildim ve sadece Java kullanmaya başladım.

Bu yazıda, Java kullanımında karşılaştığım sürprizleri anlatmak istiyorum. Programlama bilenlerin ilgisini çekmek için araya bazı kod örnekleri serpiştirdim. Programcılıkla ilgilenmeyen okuyucum, bu örnekleri okumadan geçebilir.

İlk sürprizi String sınıfında yaşadım: Java karakter dizileri 32 bit ile modellendiğinden 4Gbyte ile sınırlı. Bu pratik olarak sınırsız demek. Pascal ile programlama öğretirken 255 byte limitini hatırladım. Metin dosyalarını okuturken her satırın bir diziye sığacağını bile garanti edemiyorduk. Dosyada uzun satırlar varsa karakterleri tek tek okumak gerekiyordu. Daha sonra C'de 16 bitlik karakter dizilerine izin verilince bu sınır 64K'ya çıkmıştı. Artık Java programlama öğretirken farklı bir yöntem kullanıyoruz: Bütün dosyayı bir byte dizisine okuyup işlemleri ana bellekte yapıyoruz.
InputStream in = new FileInputStream(f);
byte[] b = new byte[in.available()];
in.read(b); //read the whole file into b
String s = new String(b); //convert b to s

Java’ya geçme kararını verdiğim günlerde “Text Processing” dersini veriyor ve dosya sıkıştırma (file compression) yöntemlerini öğretiyordum. Bu arada Java’da zip dosyalarını okuyup yazan bir format olduğunu farkettim. Çok basit bir iki komutla WinZip ayarında ve hızında sıkıştırma yapabiliyorduk.

Resim dosyalarını açmak için özel bir gayret gerekmiyor. Java’nın tanıdığı resim formatları içinde jpeg, gif ve png bulunuyor. Bütün yapmamız gereken dosyanın adını verip bir JLabel içine atmak. Dosyayı açıp resmi göstermek Java Virtual Machine (JVM) denilen sistemin sorumluluğu. Açılan resmin boyu sadece bellek ile sınırlı.
Icon I = new ImageIcon(f.toURL());
JLabel x = new JLabel(i);

Otomatik çöp toplama (garbage collection) çok ilginç bir özellik. Pascal’da en büyük sorun bellekten dinamik olarak kazandığımız yerlerin geri kazanılması idi. Bunu programcı her dinamik değişken için elle yapmak zorunda idi. Bu hem programları uzatıyor hem de en küçük bir programcı hatası bellek sızıntılarına (memory leak) yol açıyordu. Şimdi programcılar bu işi JVM’ye devrettiler. Sadece “new” demesini biliyoruz, “dispose” işlemi tarihe karıştı. Kullanılmayan bellek sihirli bir şekilde geri kazanılıyor. Böyle bir çöp kutusu evlerde de çok yararlı olurdu: Siz çöpe atın kendi kendine boşalsın!

İlk Java programlarımı yazarken bir soru hep aklıma takılıyordu: “Bu programları nasıl exe dosyasına çevireceğim?” Altı ay bu sorunun cevabını bulamadım. Daha sonra jar formatını öğrenince sorunun yanlış olduğunu farkettim. Java programları exe olarak değil jar olarak dağıtılıyor. Jar dosyaları aslında zip dosyalarına eşdeğer. Aynı format kullanılıyor. Yani WinZip gibi yaygın programlar ile açılabiliyor. Bir programda geliştirilen bütün sınıflar ve ilgili diğer dosyalar bir jar dosyasında toplanıyor. Hem dosyalar “paketlenmiş” oluyor, hem de “java –jar” komutu ile bir exe programı gibi çalıştırmak mümkün. Java kurulumu doğru yapıldıysa, jar dosyalarını tek tıklama ile açabiliyoruz.

GUI uygulamalarında Java çok yetenekli. Swing library içindeki yüzlerce sınıf ile hemen her türlü ekran tasarımı mümkün. Önce JList sınıfı ile ekranda binlerce satırlık listeleri çok hızlı olarak gösterip seçim yaptırmayı öğrendim. Satır sayısı hızı hiç etkilemiyordu. Daha önceki programlama tecrübemde bir kaç yüz satırdan sonra ekrana yazmanın ne kadar yavaşladığını hatırladım. Sonra JTree sınıfı ile hiyerarşik listeler yapmayı öğrendim. Windows Gezgininde olduğu gibi disk yapısını böyle bir ağaç içinde gösterip klasörleri açıp kapamak çok zor değil. Gene binlerce satır açınca ekranda yavaşlama ya da titreme gözlenmiyor.

Kendi programlarımı ve çalıştığım bölümün eğitim dilini Java'ya taşımak güzel sonuçlar getiriyor.

__MAE

Maramara Üniversitesi Bilgisayar Mühendisligi Bolumu öğretim uyelerinden olan M.Akif EYLER hocamızın bu guzel yazısını ve daha fazlasını http://eyler.blogspot.com/ adresinde bulabilirsiniz. Ben onemine inandıgım icin sizlerle paylasmayı uygun buldum.

Son Düzenleme: SeRBoY_WHiTe ~ 10 Mart 2005 14:16
Banned
10-03-2005, 15:19   |  #2  
Banlandı
Teşekkür Sayısı: 0
548 mesaj
Kayıt Tarihi:Kayıt: Oca 2005

Vayyy be benim üniversitemde ne cevherler varmış haberim yok..En kısa zamanda ziyeretine gidiyorum valla...

Arkadaşım çok sağol..

SeRBoY_WHiTe
11-03-2005, 14:13   |  #3  
OP Yıllanmış Üye
Teşekkür Sayısı: 0
390 mesaj
Kayıt Tarihi:Kayıt: Tem 2004

Bilader bu arada veridigin linkler icin sagol. Cok faydalı oldu...

kefukar
12-03-2005, 19:32   |  #4  
Yeni Üye
Teşekkür Sayısı: 0
44 mesaj
Kayıt Tarihi:Kayıt: Oca 2005

Güzellll.. Böyle değerli beyinlerin olduğunu bilmek sevindiriyor...

SeRBoY_WHiTe
12-04-2005, 13:49   |  #5  
OP Yıllanmış Üye
Teşekkür Sayısı: 0
390 mesaj
Kayıt Tarihi:Kayıt: Tem 2004

Peki sizde bu beyinlerden olmak istemez misiniz?

kefukar
12-04-2005, 16:04   |  #6  
Yeni Üye
Teşekkür Sayısı: 0
44 mesaj
Kayıt Tarihi:Kayıt: Oca 2005
alıntı:
Gönderen : SeRBoY_WHiTe

Peki sizde bu beyinlerden olmak istemez misiniz?



Elbette. Ama herşey istemekle olmuyor. Doğru zamanda doğru şeyleri doğru şekilde yapmak gerek.. Ben kendi adıma treni baya kaçırdım. Ama genede bazı şeyler için yeteri kadar olmasa da çaba harcıyorum. İnşaallah bir gün ben de kısmen de olsa isteğim seviyeye geleceğime inanıyorum. Yeterki hak edeyim. Azim ve kararlılık içinde doğru şekilde hareket edeyim. Peki bu konudaki tavsiyeleriniz mutlaka olacaktır. İletirseniz sevinirim...Gülümseme

SeRBoY_WHiTe
10-05-2005, 13:44   |  #7  
OP Yıllanmış Üye
Teşekkür Sayısı: 0
390 mesaj
Kayıt Tarihi:Kayıt: Tem 2004

Yok Estagfirullah oyle tavsiye verecek kadar iyi degiliz...
Aslını istersen ben birebirde tavsiye yazmaktan biraz usandım. O da foruma yeterince bu konu ile ilgili yorum bıraktıgımızı dusundugum icin. Onlara bakabilirsin.
Esasında isterimki foruma takılan yetenekli ve zeki arkadaslardan bir Java yazılım gurubu olusturup, proje gelistirmek. Aslolan ise projeyi gelistirirken kendimizi gelistirmek. Bu konuyla ilgili cok ciddi dusuncelerim var dogrusu. İlgili olana arkadaslar bana ulasırlarsa memnun olurum. Yani bu isin erkeni-geci olmaz yeterki calısalım.
Kolay gelsin!...

Son Düzenleme: SeRBoY_WHiTe ~ 10 Mayıs 2005 13:46
webadel
14-07-2005, 23:49   |  #8  
Yeni Üye
Teşekkür Sayısı: 0
38 mesaj
Kayıt Tarihi:Kayıt: Tem 2005

evet zamanında böyle yazılara çok ihtiyacım olmuştu

cursed
18-07-2005, 17:45   |  #9  
Yıllanmış Üye
Teşekkür Sayısı: 0
1,123 mesaj
Kayıt Tarihi:Kayıt: Oca 2005

BEn 17 yaşında bi yazılım  öğrencisiyim ve gerçekten bu yazı bana ilham verdi diyebilirm bu topic altında burda emeği geçen herkese tşk ediyorum hepinize saygılar...

CirkinkraL
01-11-2005, 09:38   |  #10  
Taze Üye
Teşekkür Sayısı: 0
7 mesaj
Kayıt Tarihi:Kayıt: Kas 2005

Buyuk saygi deger MAE ustadim ile su an bitirme tezi yapiyorum :)

Onun icin bir paragraf acmakta fayda goruyorum :)

Kendisinin programlama yetenekleri, bogazicinde kendi doneminin krali olmasini,harward birinciligini, idealist tarafini bir yana birakiyorum.
Gecen gun dersdeyken sabah 8.30, sinifa geldi her zamanki gibi dakik, baktik bi olay anlatiyor.

Sabah penceresinin onunde vakitsiz acan mimoza cicekleri ile tombul guvercinlerden bahsediyordu. Vallahi bir anlatisi vardi ki, mimoza ciceklerine "Acelen ne, daha senin acmana cok var..."  diye bir cumlu kurdu :) hepimiz vallahi yasaminin tadini bir kere daha anladik.

**********************************************

Biraz da java icin konusalim, MAE den sonra konusmak biraz anlamsiz kaciyor ama, siz buyuk sozu dinleyin onu dinleyin. 20 sene C ye gecmedi pascaldan daha fazlasi yok diye, ama javaya gecisi bu kadar cabuk olduysa var bir hikmet [8)]

Ayrica kucuk bir olay daha yine ogrencilerinden bir tanese ona javayi ilk defa gosteriyormus :)bundan 6 sene once sanirim bu olay, daha sonra cocuklar yazin gidip geliyorlar tabi o da haliyle o da geliyor, cocuklar bir bakiyorlar bu asmis gitmis javayi 3 ayda :D saka gibi...