Java SE - Java ile Tanışalım
Merhaba Arkadaşlar, Bu dersimizle birlikte Java SE eğitimine başlamış bulunmaktayız.Asıl hedefimiz olan Android Programlama için olmazsa olmazımız olan Java SE'yi iyi öğrenmemiz gerekir.Çünkü Android programlama için iyi bir developer olmak Java SE bilgimizle doğru orantılıdır.Tabi sadece Android için değil,Java EE için'de çok önemli bir yeri vardır.Bu yüzden ben hep şöyle bir düşünceyle bu işe başladım."Ne kadar çok Java,o kadar Android" :)
Bu düşünceyle yola çıkarak blogumdaki Java SE eğitiminde de elimden geldiğince detaylı anlatımlar yapacağım ve sağlam bir altyapıyla Android dünyasına girmenize katkıda bulunmaya çalışacağım.Bu konu Android'de işime yaramaz deyip öğrenmemek etmeyin arkadaşlar.Hiç ummadığınız bir yerde kullanmak zorunda kalabilirsiniz.O halde lafı fazla uzatmadan artık ilk dersimizle eğitime başlayalım ve önce Java nasıl oluştu,neden oluştu,neler bilmeliyiz bunları öğrenelim.Besmele çekerek başlayalım ki Allah utandırmasın :)
Java 1991 yılında Sun firmasında çalışan "James Gosling" önderliğinde geliştirildi.Bu abimiz hakkında daha fazla bilgi için burayı inceleyebilirsiniz.
Bilgisayar dünyası 1970'li yılların başında öyle bir hızla ilerlemeye,gelişmeye başladı ki bu gelişmeler üzerine bu donanımlarda çalışacak yazılımlarda önem kazandı.Fakat bu yazılımların nasıl yazılacağı kısmı işte programlama dillerinin oluşmasına en önemli etken oldu. Assembly dili kullanılarak yazılımlar yapılmaya başlandı.(Tabi Alan Turing döneminde bilgisayarlar için elle kod eklemeleri yapıldı.Alan Turing demişken Yapay Oyun filimini izlemenizi öneririm.)Fakat Assembly dili kodlamasının zor olmasıyla birlikte profesyonel yazılımlar için yetersiz idi.Daha sonra çözüm olur belki diye BASIC,COBOL,FORTRAN gibi diller geliştirildi faka bu diller ile devamlı GO TO deyimi kullanılarak kodlama yapıldığı için oldukça karmaşık(spagetti kod diyoruz) programlamalar oluştu.Baktılar gördüler ki yok,bu böyle olmaz.Daha kaliteli,daha okunabilir kodlar yazarak yazılımlar geliştirilmeli ve en önemlisi öğrenilmesi kolay olmalı ve bu sayede programcıların artması gibi ihtiyaçlar ortaya çıktı.
Bunun üzerine 1970 yılında Dennis Ritche önderliğinde C programlama dili tasarlandı.Öğrenmesi kolay bir dil olduğu için kısa sürede yaygınlaştı.(Öğrenmesi o dönemki diğer dillere oranla kolaydı.Şuan C# ve Java ya göre C yi öğrenmek bu dönemin programcıları yani bizlere zor geliyor :) ) C'nin günümüzde hala sistem programlama için kullanıldığını unutmayalım.C dili ile çok profesyonel uygulamalar yapılabiliyordu fakat bu profesyonel yazılımlar için satırlarca kodlar yazmak gerekiyordu.Fakat C ne kadar güçlü olursa olsun birşeyler eksikti.Bu karmaşıklığın, kaba tabirle kod ameleliğinin yerine birşeyler olamlıydı.Bunu da "OOP(Object Oriented Programming)"-Nesne Yönelimli Programlama ile çözüme kavuşturabilirlerdi.
Bunun üzerine 1979 Bjarne Stroustrop önderliğinde ilk olarak "Sınıflı C (C with Classes)" daha sonra adı değiştirilen C++ inşa edildi.C++ tamamen C den miras aldı fakat içine birde nesne yapısı ekledi.Bu bir milattı.Artık nesne yönelimli diller programcılar için kod yazmayı bir hobi olarak kılıyordu.Bu iki dil C ve C++ günümüzde hala çok kullanılmaktadır kullanılmayada devam edecektir.Peki bu kadar güçlü iki dil varken başka dil arayışlarına neden girildi,Java'ya neden gereksinim duyuldu diye bir soru sormak hakkınız.
Evet normalde yazılımcılar işlerini bir bu dilleri kullanarak kolaylıkla çözüme kavuşturabiliyordu.Fakat bilgisayar dünyası öyle bir hızla büyüyorduki sürekli yeni gereksinimler ortaya çıkıyordu.İşte o zamanlar yani C ve C++ hakimiyetiyle devam eden yıllarda WWW(World Web Wide) ve İnternet büyük bir kitleye ulaştı.Artık internet için gerekli web tabanlı yazılımlara ihtiyaçlar duyuldu.C ve C++ ile bunlar yapılamıyorken nasıl oalcaktı.İşte James Gosling ve ekibi buna önceki adıyla "OAK" sonraki adıyla da "JAVA" dilini tasarlamayı kafasına koymuştu.
Buradaki cümlelerim ile haklı olarak yanlış bir düşünceye sahip olduk.Şöyle ki sanki Java'nın ortaya asıl çıkma nedeninin web uygulamaları geliştirebilmek olmasıdır.İşte bu yanlış bir çıkarım.O dönemde böyle gözükse de Java'nın asıl ortaya çıkma nedeni: "Bir kere yaz,her yerde,her zaman,sonsuza kadar çalışsın" misyonudur.İşte bu düşünce aslında o zamanlar C,C++ için de düşünülüyordu fakat acil değildi.İnternet dünyası öyle hızla gelişiyordu ki bu kavram geri planda kaldı. İşte Java bunu hep ilk planda tuttu ve o yüzden her geçen gün popülaritesini artırmakta arkadaşlar.Ama tabi bu felsefeyle geliştirilmiş olmasına rağmen web dünyası içinde çok büyük bir çözüm olmuştur ve hala web uygulamaları için vazgeçilmezdir.
Biraz da bu "bir kere yaz,her yerde,her zaman,sonsuza kadar çalışsın" olayını Java nasıl başardı onu açıklayalım arkadaşlar.Günümüzde de,o dönemde de kullanılan bilgisayarların kullandığı işlemciler(CPU) farklılık gösterebilir.Peki yazdığımız uygulamaları her işlemci için farklı farklı düzenlediğimizi düşünsenize ne halde olurduk.Yada işlemci değil de her işletim sistemi için ayrı ayrı tasarladığımızı.İşte bunun için JAVA gerçekten bir devrim olarak "bytecode" yapısını ortaya çıkardı.Nedir bu bytecode?
Arkadaşlar Java ile yazdığımız kod direk olarak çalıştırılabilir koda derlenmez. İşte bu yüzden her platformda sorunsuzca ve güvenli olarak çalışmakta.Devam edelim...Yazdığımız kodu derlediğimizde .class uzantılı bir dosya oluşur.Bunun içeriği bytecode'dur.Bu dosyayı çeşitli programlar yardımıyla açabiliriz fakat içeriği anlamak güç :)Ve programımızı çalıştırmak istediğimizde de devreye JVM(Java Virtual Machine-Java Sanal Makinesi ) devreye girer ve bu bytecodu çalıştırılabilir hale çevirir.Tabi diğer dillerde direk çalıştırılabilir koda dönüşüm yapıldığı için Java'da bir takım performans düşüklüğü çok az da olsa yaşanmaktaydı.Bu sorunu da HOTSPOT teknolojisi ile James Gosling ve ekibi çözmeyi başardı.HOTSPOT teknolojisinden bahsedecek olursak;
HOTSPOT teknolojisi ile JVM lerin içine JIT derleyicileri konuldu.Bu JIT derleyicileri ile kod bir yandan bytecode dönüştürülürken ihtiyaç olan yerlerde çalıştırılabilir koda dönüştürülür.İşte bu da kaybedilen performansı geri kazanmamızı sağlıyor.Gerçekten Java'nın bu kadar güçlü olması bir tesadüf olamaz çünkü gördüğünüz gibi arkadaşlar her soruna mükemmel çözümler üretilmiş. Java'nın gelişiminde önemli rol oynayan iki yapı vardır.Applet ve Servlet.Fakat bunlar Java'nın web kısmıyla ilgili olduğu için değinmeyeceğim.Java EE ile ilgilenen arkadaşlar araştırabilir.Önemlidir.
Birazda Java'nın önemli özelliklerinden bahsetmek istiyorum arkadaşlar:
- Basit
- Güvenli
- Taşınabilir
- Nesne Yönelimli
- Sağlam
- Çok kanallı
- Platform bağımsız
- Yüksek Performanslı
- Dağıtık ve Dinamik bir programlama dilidir.
Evet arkadaşlar.Dilim döndüğünce bildiklerimi aktarmaya çalıştım.Hatalarım varsa affola.Az çok Java'nın tarihini,neden ihtiyaç duyulduğunu,özelliklerini öğrenmiş olduk.Tabi bunlar sözel kısımlar.Çok önemli gibi görünmeyebilir ama öğreneceğimiz şeyin neden niçin ortaya çıktığını bilmemiz önemlidir.
Arkadaşlar ben daha da detaya inmek istemedim sıkılabilirsiniz diye.Bu kadar bilgi de aslında Java Temeli için yeterlidir fakat meraklı olan arkadaşlarımız burayı okuyabilir.
İlk dersimizi ilk yazımızı bitirmiş olduk. Diğer yazımızda Java'da bazı temel kavramları inceleyeceğiz ve yavas yavas kodlamaya geçeceğiz.
Comments