23.02.2010

Eclipse ~ MSSQL Connection with Java

  Pek kullanılmayan bir durum olsa da Windows 7 RC 7100 OS'den yapmaya çalıştığım connection için baya  kez başarısız sonucunu gördükten sonra mutlu sona ulaşmak kolay olmadı diyebilirim.

 Öncelikle kullandığım Eclipse Galileo IDE'sinden bu işi yapabilmek için driver'ları indirmek gereklidir.
Buradan indirebilirsiniz driverları.{Hemen klasik yöntemlerle inmiyor.Çıkan html sayfasında kabul et dedikten sonra yönlendirme yapılıp dosya upload ediliyor.}

 Dosya indirildikten sonra aut klasörü içerisindeki x86 içerisnde sqljdbc_auth.dll dosyasını windows\system32 içine gönderiyoruz.

 sqljdbc.jar dosyası desktopta dursun driver gösterirken yerini göstereceğiz.{JRE 1.6 ve üstü için, bunu desteklemeyecektir, sqljdbc4.jar'ın yerini göstereceğiz.}

Şimdi dll'i \system32'nin içine gönderdik ve .jar dosyamız hazır ise açalım Eclipse Galileo'yu oradan Data Source Explorer altındaki Database Connections'a sağ click ile New diyoruz ve SQL Server seçiyoruz ve gelen yerde driver göstermemiz gereklidir.

 Bu aşamada Driversın yanında New Driver Definition simgesi var ona clickledikten sonra karşımıza pencere gelecektir.İlk tabta Available Driver templates var oradan Microsoft SQL Server 2005 JDBC Driverını seçtik, 2.taba geçtik bu Jar List tabında Add Jar/Zip ile desktoptaki sqljdbc.jar'ın yolunu gösteriyoruz.




Kritik nokta: Eğer JRE sürümü 1.6 ve üstü ise sqljdbc.jar yerine indirdiğimiz diğer sqljdbc4.jar olmalı bunu gösteriyoruz diğerinde hata vermektedir.{Denedim, sonra anladım:/}

Bir şekilde bu kısmı hallettikten sonra Test Connection kısmını gördük hemen sevinmeyelim çok fazla sayıda ping failed yazısı görebilirsiniz şaşırmayın derim!, sonuçta birbirlerine destek vermeyen Database ile özgür bir yazılımdan Eclipse IDE'si ile Windows platformundan bağlantı yapmaya çalışıyoruz, normal Visual Studio'dan yapılan database connectionu gibi kabul edersiniz ki kolay değil!

Integrated Authentication'u seçip Test Connection deyip altı üstü ping succeed yazısı görmeye çalışacağız şimdi, aşağıdaki kriterleri sağladıktan sonra.


Öncelikle  yapılması gerekli kritik adımları aşağıda yazayım, tüm bunları yaptıktan sonra başarılı bir şekilde bağlanacağız.

-->SQL Server Configuration Manager'dan -> Sql Server 2005 Network Configuration oradan TCP/IP'nin

statusu Enable olması lazım, değilse sağ click ile enable yapalım.

-->Firewall'ları kapatalım, firewallar bağlantıyı engelleyebilir.!

-->Test connection ekranında bağlanmak istediği ayarları yaparken, host kısmında localhost yerine 

localhost'un ipsini yazın.

--> Port numarası default olarak Mssql için 1433'tür. Bu port aktif mi değil mi, konsoldan netstat -an ile 

bakın, kullandığız OS'e göre mi farklılık gösteriyor yoksa ben W7 RC kullanıyorum bunda mı birşey var, o 

kadarını denemedim; ama şunu diyebilirim port noyu 5356 yapın.

-->Sanırım bu kısmı W7 ile alakalı, SQL Server SP 3 yüklemeniz gerekmektedir.!

 Tüm bu kriterlere rağmen yine de başarılı connection yapamayan arkadaşlar, OS, IDE version,Sql version ve hata mesajı ile e-posta gönderebilirse diğer kriterlere de birlikte bakarız.


>>Kısa Bilgi: Konsoldan netstat - an ile TCP-UDP ile yapılan bağlantılar ve bu bağlantıların port numaraları ile bağlantının durumunu görebilirsiniz.

Kolay Gelsin.

18.02.2010

Java'da Garbage Collector ve finalize() metodu

    C ve C++ dillerinde kodu yazan kişi, ihtiyaçlar durumunda bellekten yerini alır ve kodun ilerleyen bölümlerinde gereksiz değişkenlere ihtiyaç kalmayınca; artık buranın boşaltılması gerekmektedir ve bu değişkenlerin bellekte bulunması sağlıklı bir işlem değildir{hele ki gereksiz değişkenler için ayrılan bellek alanı büyük ve bilgisayarın RAM'i azsa:/}. Dinamik bellek yönetimini yapmak ve belleği daha sağlıklı kullanma işi kodu yazan programcı için takdir edersiniz ki ayrıca bir yüktür, sağolsun Java bu işi ben hallederim demiş olup bizleri bu yükten kurtarmıştır.

 Uygulamada kullanılmayan objelerin Garbage Collector tarafından hafızadan silinmesi büyük kolaylık sağlar, yazılan kodlardaki temel sorunların başında bu temizlik işleminin düzgün yapılmamasını dikkate alırsak kolaylığın yanında kodumuzu daha sağlıklı yazma imkanı da verir.

 Şunu belirtmekte fayda var, yazdığımız uygulamada gereksiz nesnelerin sayısı fazla değilse Garbage Collector çalışmaz, çöp toplayıcının mimarisine göre silinme işlemi değişiklik gösterebilir. Belleğin boyutuna bakar, gereksiz nesnelerin boyutuna bakar mimarisi gereği silinme işlemi gerekli ise hiçbir tetiklemeye gerek kalmadan temizliğe başlar.Eğer biz gereksiz nesnelerin silinmesi konusunda kararlıysak bunu manuel olarak tetikleyebiliriz. System.gc() ile bu tetikleme işlemi gerçekleştirilebilir.System sınıfının statik metodu olan gc() metodu ile çöp toplayıcısı gereksiz nesneleri bulur ve siler. Çöp toplayıcı değişkene bağlı olmayan  nesneleri siler.
   
public class GC {

 public static void main(String args[]) {
  İnsan i = new İnsan(4);
  new İnsan(2);
  System.gc() ;//Garbage Collector çağırıldı..
 }
}
 
  Bu durumda tahmin ettiğiniz gibi i değişkenine bağlı 4 
parametresini gönderdiğimiz İnsan tipindeki nesne silinmezken, diğeri
silinecektir..Kısacası Garbage Collectoru tetiklerken dikkatli olmalıyız.
Eğer değişkene bağlı ise nesnelerimiz sorun yoktur,Çöp toplayıcısı bunu
silmeyeceğini garanti eder; ama değişkene bağlamadıysak sıkıntılar
yaşayabiliriz.
 
  Çöp toplayıcısı gereksiz nesneleri silmeden önce finalize() 
metoduna gider, orada varsa yapılması gerekenler onları da yapar
sonra silme işlemini gerçekleştirir.

 Mesela, uygulama içerisinde C'de de olan malloc() fonksiyonu ile
yerimizi aldık bu durumda bu yerin geri verilmesini 
Garbage Collector yapmaz; çünkü Garbage Collectorun silebildiği
gereksiz nesneler new ile oluşturulan nesnelerdir.

 Nasıl silebiliriz o zaman derseniz, Garbage Collector silmeyi 
yapmadan hemen önce finalize() metodunu çağırıyor
işte bu metodun içinde free() fonksiyonunu kullanırsak
aldığımız alanı geri verip boş duruma getirebiliriz.


Kısa Bilgi: Bilgisayarınızda sistem güncelleştirmesi veya antivirus yüklemesi/kaldıması dışında tekrar başlat demesi durumunda, bu restart işlemine gerek yoktur.
Bunun yerine muhteşem üçlüyü kullanarak Ctrl + alt + delete -> Görev yöneticisi->proceses->explorer.exe'yi kapatıp, File -> new task ile explorer.exe yazmanız yeterlidir.

6.02.2010

JVM, JRE, JDK Nedir ?

        Java, sanal makinede çalışan bir dildir. Platform bağımsız olayı da nasıl oluyor acaba? Java'nın çalışma mantığında gizli diyebiliriz:)

  Programcı Java kodunu yazdığı vakit derleyici devreye girer bu Java derleyicisi byte kod denen makinenin anlayabileceği makine koduna çevirir. Biz yazdığımız kodu byte koda yani makinenin anlayabileceği koda çevirebiliyorsak artık her makine anlar bu kodu, çünkü bu her makinenin algılayabileceği machine code'tur{Tost makinesinde bile çalışır:)} Bu byte kod Java Virtual Machine tarafından step by step işletilir.
Burada JVM'nin amacı anladığınız gibi Donanım bağımsız kodu yorumlamayı ve çalıştırmasını sağlamaktır.

   Normalde çalışma mantığı nasıldır?
Öncelikle şunu belirtmek gerek, Tüm dillerde yazdığımız kodu yorumlayan gerçek mikroişlemcilerdir{Amd, Intel, Sun Sparc bla.}. Mikroişlemcinin mantığı ise belirli komutları işler. Tüm kodlar çalışabilmek için öncelikle bu komut kümelerine dönüştürülmek zorundadır.
JVM'de virtual bir işlemci gibi davranıp bizim byte kodumuzu yani makinenin anlayabileceği machine kodu step by step işler.
JVM'nin ne işe yaradığını biraz öğrendikten sonra, JRE'yi şöyle açıklayabiliriz:
Java çalıştırma ortamıdır nam-ı diğer Java Runtime Enviroment.
JRE'nin içinde JVM ve kütüphaneler bulunmaktadır.

  Yavaş yavaş compile etmek için birşeyler daha yüklememiz gerek, o da ne diyebilrsiniz. Şimdiye kadar olanlar sadece çalıştırmak içindi; ama biz kod yazmak birşeyler yapmak istiyorsak derleyiciye ihtiyacımız vardır.

 Java SDK'larını{Software development Kit}

-JDK Java Development Kit Tipleri-
J2ME:Mobil uygulamalar geliştirmek için tasarlanmıştır ve kısıtlıdır.
J2SE:Standart uygulamalar geliştirmek içindir.
J2EE:Kısacası hemen hemen hepsini kapsıyor, en üst düzey diyebiliriz:)recommended
buradanyükleyebiliriz.
Yüklemede sorun yaşayanlar için buradan destek alabilirler.

  Şimdi istediğiniz IDE{Integrated Development Enviroments}'yi kurup kodunuzu yazabilirsiniz.Yeri gelmişken belirtmekte fayda var, kodu çalıştırmak için IDE olmazsa olmaz değildir. Sadece kod yazarken işimizi kolaylaştırır.
Yoksa notepad'te yazdığımız kodu ornek.java diye kaydedip konsoldan çalıştırabiliriz.
IDE işimizi kolaylaştırır, imdadımıza yetişir avantajları saymakla bitmez.

   C#' ta kod yazarken Visual Studio IDE'si var ki; popularitesinin artmasında geniş bir kitle tarafından kullanımasındaki mühim etkenlerden birisidir bence.

 Java'da durum biraz farklı çok fazla IDE bulunmaktadır yaygın olarak kullanılanlar Eclipse, Netbeans, jdeveloper, intellij.

  IDE'lerden biraz daha bahsetmek gerekirse makinenizin özellikleri güzelse Netbeans kullanmak avantajlıdır kullanımı kolay ve görsel programlama basittir, dezavantajı sistemde baya yer kullanma gibi bir ihtiyaç hissediyor kendisinde:) O yüzden makineniz pek iyi özelliklere sahip değilse tercih sebebi değildir.Ayrıca plug-in desteği Eclipse'e oranla iyi değildir.
Eclipse'e bakarsak sistem kaynaklarını fazla yormuyor, plug-in konusunda iyi bu demek değil ki default Eclipse'te plug-in var, indirdikten sonra Visual editor eklentisini indirip bu eklenti ile görsel ayar çekebilirsiniz(Başka eklentilerde var) bu arada arkasına IBM'i almıştır Eclipse:)

 Kısa Bilgi:
 Deep Freeze kaldırmak için tuş kombinasyonu : CTRL+ALT+SHIFT+F6.

3.02.2010

CETURK Java Kariyer Günü ;)






CETURK JAVA ve Kariyer Günü

CETURK olarak Çankaya Üniversitesi Uygulamalı Matematik Bilgisayar Bilimleri Topluluğu ile birlikte "JAVA ve Kariyer Günü" etkinliği düzenliyoruz. Etkinlik konusu dahilinde JAVA dünyasındaki kariyer olanaklarından bahsedilecek ve etkinlik sonundaki panelimiz ile bilgi alışverişi gerçekleştirilecektir.Etkinliğe katılım ücretsizdir.


Konuşmacılar ve Seminer Konuları:
Kadir Teke - Mehmet Gursul : İş İlanlarında Java

Kenan Sevindik : Java, Kariyer ve Gelecek


Mert Çalışkan : Fikrim Açık, Kodum Açık
Ümit Vardar : JavaFX
Adres:


Çankaya Üniversitesi - Mavi Salon
Tarih: 19 Şubat 2010 - Cuma
Saat: 12:00 - 17:00


Kayıt işlemi için bu bağlantıyı kullanabilirsiniz.

2.02.2010

Java ~ ~ C# Comparision

Object Oriented programlama dillerinden Java veya C#'ı iyi derecede biliyor ve benim gibi projeleri farklı dillerde yazma gerekliliğiniz oluyorsa takıldığınız yerlerde size yol gösterebilecek, güzel bir şekilde hazırlanmış bir dokumana buradan ulaşabilirsiniz.

Günün sevdiğim lafını da paylaşayım bu arada:)

Yazılımcı; güzel bir kahveyi projeye dönüştürebilen bir insandır:)