October 6, 2010 - Tagged as: java, tr.
Derslerim gereği Java öğrenirken, hocanın ders için tavsiye ettiği kitap değil de, Head First Java adlı kitaba başlamıştım. Kitabın bitmesine yaklaşık 150 sayfa kaldı(swing bölümünü atladım), fakat kafama takılan birşey var:
Python öğrenirken(hala öğreniyorum gerçi) pek çok yerde, bir sınınfı veya fonksiyonu import ederken, from modul_adi import *
kullanmanın dezavantajlarından bahsediliyordu, hatta Freenode’da o şekilde bir kullanım gördükleri zaman uyarıyorlardı beni(hatta Alex Martelli’nin StackOverflow’da bu konuyla alakalı bir yorumu için bkz). Ne yaptığından çok emin olmadığın sürece kullanmamalıyım diye.
Fakat nedense okuduğum kaynakta bu konu hakkında henüz tek satır bile okuyamadım. Ve şu ana kadar okuduğum tüm kodlarda gerekli sınıflar import java.sinif_adi.* şeklinde koda dahil edilmişlerdi. Bazı kodlarda bu şekilde 6 kütüphane import ediliyor ve daha sonra kodda hangi sınıf hangi kütüphaneden geliyor anlayamıyorsunuz. Netbeans veya Eclipse gibi bir IDE kullanmıyorsanız, her sınıf için Java belgelerinize bakmanız gerekiyor(Netbeans’da “browse source” seçeneği ile bulunduğu dosyayı açabiliyorsunuz).
Django ile muhatap olanlar from django.utils.translation import ugettext_lazy as _
şeklinde bir kullanımla mutlaka karşılaşmışlardır. Bu şekilde bu fonksiyonu _() şeklinde çağırabiliyoruz ve çok büyük kolaylık sağlıyor. Java’da sanırım böyle bir kolaylık yok.
İşin çözemediğim bir diğer yönü de, Java’da aslında kütüphaneleri import etmeden kullanabilirsiniz. Denemelerim sonucu şunu gördüm; java.io.PrintWriter()
şeklinde, java.io kütüphanesini import etmeden kullanabilirim. Fakat import java.io
şeklinde bir kullanım yok. Bu şekilde import etsem, daha sonra sadece io.PrintWriter()
ile çağırsam diyemiyorsunuz. Fakat eğer isterseniz import java.io.*
ile import edip, direkt sınıf adını yazarak çağırabilirsiniz.
DÜZENLEME: İlginç bir şekilde, import java.util.Scanner;
kodundan sonra direkt olarak Scanner() oluşturabiliyorum, fakat nedense kendim yazmadğım bir kodda import java.io.*;
yerine import java.io;
yazdıp, gerekli sınıflara io. eklediğimde kod çalışmıyor, bahsettiğim paket yok diye.
Yanlışım varsa düzeltin, bana çok saçma geldi. Büyük ihtimalle bir noktayı kaçırıyorum. Kitapda import mekanizmasından hiç bahsedilmemiş, fakat sürekli kullanılıyor.
Java’da bir diğer anlamadığım(saçma bulduğum) olay da “Exception” ve hata yakalama olayı. Ondan da bahsedeceğim bir ara.