Javada Veri Tabanı Kullanımı Veri tabanı, bir programın işlemesinde, depolanmasında, analiz ve kontrol edilmesinde çok önemli bir yer tutar. Veri tabanı ve veri tabanındaki tablolar herhangi bir veriye kolayca erişebilmemizi, güncelleyip silebilmemizi, veri eklemememizi ve programdaki verilerin düzenli bir tabloda tutulması sebebiyle de programın hızlı çalışmasını sağlar. Bu yazımızda sizler için Javada veri tabanının kullanımı hakkında bilgi vereceğiz. Biz yazımızda MySql veri tabanını örnekleyeceğiz. Javada MySql veri tabanını kullanabilmek için öncelikle bilgisayarımızda MySqlin çalışıyor olması lazım. AppServ veya XAMMP Server gibi uygulamaları MySqli çalıştırmak için kullanabilirsiniz. MySqli çalıştırdıktan sonra bilgisayarınızda hizmetler kısmından MySqlin başlatılıp başlatılmadığını kontrol edebilirsiniz. Hizmet Kontrolü MySQL Artık Java için kullanacağımız IDEmize geçebiliriz. Biz bu yazımız için NetBeans i kullanacağız. Programımızda MySql veri tabanı kullanmak için öncelikle bağlantısını kurmamız gerekiyor. Bunun için de projemizin kütüphanesine MySQL JDBC Sürücüsünü eklememiz gerekiyor. Artık Bağlantı yapabiliriz.
MySQL JDBC Sürücüsü JAVA-MySQL bağlantısı için classınızın içine şu kodları yazmanız gerekiyor. [crayon-5b7f03a598fa0823497300/] Burada username kısmına MySQLi kurarken belirlediğiniz kullanıcı adı ve password yerine de şifrenizi, dbname kısmına da MySQL de oluşturduğunuz veri tabanının adını girmeniz gerekiyor. Daha sonra main metodunuzun içine de aşağıdaki kodları yazdığınızda MySQL ile bağlantı kurma işlemi tamamlanmış olacak. [crayon-5b7f03a598fb5022647084/] JAVAda MYSQL kullanımını anlatmış olduk. Bundan sonra veritabanı üzerinde işlem yapabilirsiniz. JAVA DALLANDIRMA DEYİMLERİ Dallandırma deyimleri; döngüler üzerinde gerçekleşmiş bir durumu veya koşulu dikkate alarak, çalışmayı sonlandırmak veya pas geçmek veya uygulamanın akışını farklı bir yere konumlandırma amaçlı kullanılan komutlardır. Özellikle döngü deyimleri üzerinde kullanılan komutlardır. Java programlama dilinde dallandırma deyimleri üç adettir.
break continue return Break Deyimi Break deyiminin 2 farklı uyarlaması bulunur; birisi etiketli(labeled), diğeri ise etiketsiz (unlabeled) dir. Etiketsiz break, switch deyiminde nasıl kullanıldığı görelim. Örnek 1: public class AylarSwitchDefaultTest { public static void main(string[] args) { int ay = 25; switch (ay) { case 1: System.out.println("Ocak"); break; case 2: System.out.println("Subat"); break; case 3: System.out.println("Mart"); break; case 4: System.out.println("Nisan"); break; case 5: System.out.println("Mayis"); break; case 6: System.out.println("Haziran"); break; case 7: System.out.println("Temmuz"); break; case 8: System.out.println("Agustos"); break; case 9: System.out.println("Eylul"); break; case 10: System.out.println("Ekim"); break; case 11: System.out.println("Kasim"); break; case 12: System.out.println("Aralik"); break; default: System.out.println("Aranilan Kosul Bulunamadi!!"); Etiketsiz break deyimin switch deyiminde kullanımı Uygulamanın çıktısı: [crayon-5b7f03a59a174423948465/] olacaktır.
Etiketsiz break sayesinde koşul sağlandığında switch deyimini sonlanması sağlanıyor. Break deyimi aynı şekilde while, do-while veya for deyimlerinden çıkılması için de kullanabilir. Örnek 2: public class BreakTest { public static void main(string[] args) { for ( int i = 0; i < 100; i++ ) { if ( i ==9 ) { // for döngüsünü kırıyor break; System.out.println("i =" +i); System.out.println("Donguden cikti"); Etiketsiz break deyiminin for döngüsü ile kullanımı Normalde 0 dan 99 a kadar dönmesi gereken kod bloğu, i değişkenin 9 değerine gelmesiyle for dönüsünün dışına çıktı. Uygulamanın çıktısı aşağıdaki gibidir: [crayon-5b7f03a59a187730252739/] Etiketsiz break ifadeleri en içteki while, do-while veya for döngü ifadelerini sona erdirirken, etiketli break ifadeleri etiket (label) hangi döngünün başına konulmuş ise o döngü sistemini sona erdirir. Örnek 3: public class BreakTestEtiketli { public static void main(string[] args) { kiril : for ( int j = 0 ; j < 10 ; j ++ ) { for ( int i = 0; i < 100; i++ ) {
if ( i ==9 ) {// for dongusunu kiriyor break kiril; System.out.println("i =" +i); System.out.println("Donguden cikti"); System.out.println("j =" +j); Etiketsiz break deyiminin while, do-while ile kullanımı Yukarıdaki örneğimizde etiket kullanarak, daha geniş çaplı bir döngü sisteminden çıkmış olduk. Uygulamamızın çıktısı aşağıdaki gibidir. [crayon-5b7f03a59a194694845256/] Continue Deyimi Continue ifadesi, döngü içersinde o anki devir işleminin pas geçilmesini ve bir sonraki devir işleminin başlamasını sağlayan bir mekanizmadır. Continue ifadeleri de break ifadeleri gibi iki çeşide ayrılır. Etiketsiz continue ve etiketli continue. Etiketsiz continue en içteki döngü içersinde etkili olurken, etiketli continue ise başına konulduğu döngü sisteminin etkiler. Örnek 1: public class ContinueTest { public static void main(string[] args) { for ( int i = 0; i < 10; i++ ) { if ( i == 5 ) { // for döngüsünü kırıyor continue; System.out.println("i =" +i); System.out.println("Donguden cikti");
Continue deyimi kullanımı Uygulamanın sonucu aşağıdaki gibi olur: [crayon-5b7f03a59a19e912990855/] Ekrana yazılan sonuca dikkatli bakılırsa 5 değerinin olmadığı görülür; continue deyimi break gibi döngüleri kırmaz, yalnızca belli durumlardaki döngü işleminin atlanmasını sağlar sağlar. Örnek 2: public class ContinueTestEtiketli { public static void main(string[] args) { pas : for ( int j = 0 ; j < 6 ; j ++ ) { for ( int i = 0; i < 5; i++ ) { if ( i ==3 ) { // for döngüsünü kırıyor continue pas; System.out.println("i =" +i); System.out.println("Donguden cikti"); System.out.println("j =" +j); Pas etiketli continue deyimi Bu uygulamada, pasetiketini kullanılarak continue işleminin en dıştaki döngüsel sistemden tekrardan başlamasını (ama kaldığı yerden) sağlandı Uygulamanın sonucu aşağıdaki gibi olur: [crayon-5b7f03a59a1a7785843311/] i değişkeninin her seferinde yeniden 0 dan başladığını ve 2 de kesildiğini görmekteyiz. Bu işlem toplam 6 kez olmuştur. Yani en dıştaki döngünün sınırları kadar. Return Deyimi Return deyiminin 2 tür kullanım şekli vardır: Birincisi değer döndürmek için -ki yordamlardan üretilen değerleri böyle geri
döndürürüz, ikincisi ise eğer yordamın dönüş tipi buna izin vermiyorsa (voidise) herhangi bir taviz vermeden return yazıp ilgili yordamı terk edebiliriz: public class ReturnTest { public double toplamayap(double a, double b) { double sonuc = a + b ; return sonuc ; // normal return kullanımı public void biseyyapma(double a) { if (a == 0) { return ; // yordamı acilen terk et else { System.out.println("-->" + a); Return kullanımı Ayrıca return deyiminin işleyişi, bir bakıma break komutu gibidir. Ancak genellikle değer döndüren yordamlarda değer döndürmek için veya yordamları terk etmek için de kullanılır. Referanslar: 1. 2. 3. http://www.bilgisayarmuhendisleri.com/sayfa.aspx?s=34 Altuğ Bilgin ALTINTAŞ Java ve Yazılım Tasarımı dökümanları https://books.google.com.tr/books?id=9lencwaaqbaj&pg=pa8 4&lpg=PA84&dq=javada+dalland%C4%B1rma+deyimleri&source=b l&ots=2lurialrak&sig=690rpk6kn238ptgivqk4ice_9bk&hl=tr&s a=x&ved=0ahukewi0srzwupzsahvnkpokhfdqdfgq6aeigzaa#v=onep age&q=javada%20dalland%c4%b1rma%20deyimleri&f=false
Java JTextField JTextField KORAY ÇAMDALI Bilgisayar Mühendisliği Bölümü,Mehmet Akif Ersoy Üniversitesi,Burdur koraycamdali@gmail.com ÖZET:Bu makalede JTextField in Java üzerindeki ne işe yaradığını ve özelliklerini ele alacağız.aynı zamanda java da farklı text özellikleri olmasına rağmen TextField farklı opsiyonlar ile her işe yarıyor.bu durumları ele alıp aynı zamanda şekil ve kod örnekleri olarak bu konuları ele alacağız. Anahtar Kelimeler: Java, Event, Main, JTextField, Code. J ile başlayan bileşenlerin Swing isimlendirme kurallarına uyduğu Frame nesnesine JFrame denir.(jbutton, JLabel) JFrame Yüksek-Seviye taşıyıcı olarak adlandırılır, yani JFrame görüntülenmek için kendini başka bir nesneye ekleme gereksinimi duymaz.içerik bölme; bütün text, buton ve grafiklerin konulduğu yerdir. bu öğreticilerde İçerik bölmesiyle çalışacağız.bu örnekte gördüğünüz üzere jframe birkaç bileşenden oluşur. görüntü bileşenlerini eklemek için, içerik bölmesinde koyacağımız yerleri belirlemeliyiz.içerik bölmesi; kapsama hiyerarşisinde en üst sıradadır. kapsama hiyerarşisi kök dizin olarak üst sıra taşıyıcısını(bu durumda jframe) alan bileşenlerin oluşturduğu bir ağaç gibidir. aşağı doğru indikçe, bileşenleri tutmak için jpanel gibi diğer taşıyıcıları kullanırız. [1]
invokelater() metodu uygulamayı swing olay sırası(swing event queue) na sokar.gui nin belirli durumlarda takılmasını engellemek için kullanılır.bu konu daha sonraki konulardan biridir ve şimdi bunu düşünmemeliyiz. [2] Bu bölümde, Swing kullanarak ilk programımızı oluşturacağız.örnekler çok basit olacak. Örnek fonksyonellikleri inceleyeceğiz. İlk örnekte basit bir pencere yaratacağız. Alternative 1: JFrame in Genişletilmesi Alternative 2: JFrame Sınıfının Kullanılması Bu konuları ele aldıktan sonra Java da nasıl oluşturduklarını gördük ve aynı zamanda burdan sonra birkaç JTextField örneği ile makaleyi tamamlayacağız. Dikkat ettiğimizde Netbeans özellikle kalıp buton özellikleri ile dikkat çekiyor.son olarak da aynı örneği eclipse de inceleyelim. //Kodlar //MainFrame import java.awt.flowlayout; import java.awt.event.mouseadapter; import java.awt.event.mouseevent; import javax.swing.jbutton; import javax.swing.jframe; import javax.swing.joptionpane; import javax.swing.jtextfield; import javax.swing.windowconstants; public class MainFrame {
public static void main(string[] args) { //Jframe herşeyi kaplar ve //Swing kütüphanesi J ile başlar. JFrame bizimframe=new JFrame( Bizim Form ); //Formun Büyüklüğünü belirliyoruz. bizimframe.setsize(300, 100); //Bu kodu koymazsak Jframe penceresini kapatsakta //program kapanmaz sadece görünürlüğü false olur. bizimframe.setdefaultcloseoperation(windowconstants.exit_on_cl OSE); //Button oluşturuyoruz. JButton btngoster=new JButton( Göster ); //TextField oluşturuyoruz. //final olmasının sebebi addmouselistener içinde //erişmek için. final JTextField txtisim=new JTextField(15); //Buttonun olaylarını yakalıyoruz. //İç sınıf tanımladık (MouseAdapter) ve metotlarından birini ezdik. btngoster.addmouselistener(new MouseAdapter() { //Mouse tıklandığındaki olayı yakalar. @Override public void mousepressed(mouseevent e) { //txtisim.gettext() txtisimdeki Texti getirir. //txtisim.settext() dediğimizde de text atayabiliriz. JOptionPane.showMessageDialog(null, txtisim.gettext()); ); //Layout oluşturulan form nesnelerinin nasıl frame de //yerleştirileceğini belirler. //FlowLayout sıra ile koyar. bizimframe.getcontentpane().setlayout(new FlowLayout());
//Buttonu ve textfield ekliyoruz. //Eğer kodları koymazsak Frame de gözükmezler. bizimframe.getcontentpane().add(txtisim); bizimframe.getcontentpane().add(btngoster); //Frame i görünür haline getiriyoruz. bizimframe.setvisible(true); [3] Java da ben eclipse de gördük bunların eventleri aynı zamanda properties lerinde ayrı ayrı özellikler var bunları eğer sürükle bırakla yazmazsak elimizle yazmak zorunda kalırız.jtextfieldı şimdilik bu konularda ele aldık. Referanslar: [1].https://tr.wikipedia.org/wiki/E%C5%9Flik_biti [2]. http://www.yildiz.edu.tr [3].http://bilgisayarkavramlari.sadievrenseker.com This Anahtar Sözcüğü ve Kullanımı Java da kullanılan yaygın anahtar kelimelerden birisi de thisdir. Aslında this anahtar kelimesi üzerinde işlem yapılan nesnenin kendisini dönmektedir. Java, this anahtar sözcüğünü bir metot içinde geçerli nesneye bir referansta bulunmak için kullanır. O metodu çağıran ifadelerin özel olduğunu göstermek için kullanırız. Örnek
anahtar gizleme işlemi yapar (instance variable hiding). Aynı ada sahip 2 tane yerel değişken tanımlamak mümkün değildir ancak sınıfın örnek değişkenleriyle aynı ada sahip olan (metodun parametreleri dâhil) yerel değişkenlere sahip olabilirsiniz. Yerel değişken örnek değişkenle aynı ada sahip ise örnek değişken gizlenir. This kelimesi isim çakışmaları olduğu durumlarda bir yerel değişkenin değil de, nesne değişkeninin kullanılacağını belirtmek için kullanılabilir. Örnek 1 : public class Ogrenci { private int no; private String isim; public Ogrenci(int no, String isim) { this.no = no; this.isim = isim; this Yukarıdaki kodda Ogrenci sınıfının yapıcı metodu içerisinde no ve isim parametre değişkenleri bulunmaktadır. Ancak aynı zamanda nesneye ait aynı isimli no ve isim değişkenleri de bulunmaktadır. Bu durumda yapıcı metod içerisinde no veya isim değişkenine erişilmek istendiğinde nesne değişkenlerine değil, parametre değişkenlerine erişilecektir. Yapıcı metod içerisinden yukarıda tanımlanan nesne değişkenlerine erişilmek istenirse this anahtar kelimesi kullanılır. This kelimesi o anda üzerinde işlem yapılan nesnenin referansını döndürür ve böylece nesne değişkenlerine erişmiş oluruz. This anahtar kelimesini kullanarak aynı sınıf içerisindeki diğer yapıcı metotları da çağırabiliriz.
Örnek 2: public class Ogrenci { private int no; private String isim; public Ogrenci(int no) { this(no, "Seçkin Tozlu"); public Ogrenci(int no, String isim) { this.no = no; this.isim = isim; this_2 Bu sınıfta iki tane yapıcı metod bulunmaktadır. İki parametreli olanı zaten yukarıda incelemiştik. Tek parametreli olan yukarıdaki yapıcı metot içerisinde this anahtar kelimesi kullanılarak ikinci yapıcı metot çağırılmıştır. This ile nesne değişkenlerine erişirken normal referanslarda kullandığımız gibi nokta ile devam ediyoruz ancak başka bir yapıcı metot çağırıyorsak, normal metot çağırır gibi parantez kullanıyoruz. This o anda işlem görmekte olan nesnenin referansını döndürdüğü için tek başına kullanıp parametre geçilebilir veya bir metottan değer olarak geri döndürülebiliyordu. Daha iyi anlamak için örnekte görelim: Örnek 3: import java.util.arraylist; import java.util.list; public class Client {
public static void main(string[] args) { List<Ogrenci> ogrencilistesi = new ArrayList<Ogrenci>(); Ogrenci ogrenci1 = new Ogrenci(1, "Ali Bal"); Ogrenci ogrenci2 = new Ogrenci(2, "Ayşe Yaman"); ogrenci1.ekle(ogrencilistesi); ogrenci2.ekle(ogrencilistesi); this_3 Yukarıda önce bir Ogrenci listesi oluşturulmuş ve ardından iki tane öğrenci nesnesi yaratılmıştır. Daha sonra ogrenci1 ve ogrenci2 nesneleri üzerinden daha önce yazdığımız ekle metodu çağırılmıştır. Burada önemli olan nokta şudur: ogrenci1.ekle(ogrencilistesi); satırı çalışırken, ogrenci1 nesnesi üzerinden ekle metodu çağırıldığı için ekle metodu içerisindeki this anahtar kelimesi ogrenci1 nesnesini referans edecektir. Yani ekle metodu içerisinde ogrenci1 nesnesi listeye eklenecektir. Aynı şekilde ogrenci2.ekle(ogrencilistesi); satırı çalışırken de this kelimesi ogrenci2 nesnesini referans edecek ve dolayısıyla ogrenci2 nesnesi listeye eklenecektir. This kelimesini static bir metot içerisinde kullanamayız. Static metotlar bir nesneye değil sınıfın kendisine ait olduğu için this anahtar kelimesi burada anlamsız kalır, çünkü referans edebileceği bir nesne yoktur. Referanslar: 1. 2. 3. http://yazilimdersi.info/makaleler/detay/85/javada-this- anahtar-kelimesinin-kullanimi http://www.seckintozlu.com/674-javada-this-anahtar-kelim esi-ve-kullanimi.html http://okanuzun.com/tag/java-this-kullanimi/ 4. http://umiitkose.com/2016/08/javada-this-anahtar-kelimes
i-nedir-ne-ise-yarar-kullanimi/ Java JButton JBUTTON KORAY ÇAMDALI Bilgisayar Mühendisliği Bölümü,Mehmet Akif Ersoy Üniversitesi,Burdur koraycamdali@gmail.com ÖZET:Bu makalede Event ini ve aynı zamanda blok özelliklerini de inceleyeceğiz.aynı zamanda Java da sürükle bırakla bu buton kodlarının nasıl rahat ve aynı zamanda nasıl işlevsel olduğuna yönelik konuları da ele alacağız.java Neatbeans ve Eclipse de nasıl olduğunu irdeleyeceğiz.jbutton özetle birkaç durumla ele alınacak. Anahtar Kelimeler: Java, Event, Main, Button, Code. Java programlama dili için bir başka GUI kütüphanesi daha vardır ve SWT(The Standard widget toolkit) olarak adlandırılır. SWT kütüphanesi ilk olarak IBM tarafından geliştirilmeye başlanmıştır. Şimdilerde IBM in desteklediği açık kaynak kodlu bir projedir. SWT ağırsiklet araçların bir örneğidir. Altta çalışan işletim sisteminin GUI yaratmasına izin verir. SWT; çalışmak için yerel java arayüzünü kullanır. SWT nin ana avantajları sürat, alışılmış görünüm ve hissiyattır. Swing kadar güçlü değildir ve işletim sisteminin kütüphanesi bağımlıdır. [1]
Swing kütüphanesi Sun Microsystems tarafından piyasaya sürülen resmi Java GUI aracıdır. Swing; %100 java ile yazılmıştır ve Java Foundation Classes(JFC) nin bir parçasıdır. Tam donanımlı masaüstü uygulamaları geliştirmek için kullanılan paketler bütünüdür. JFC; AWT,Swing,Ulaşılabilirlik,Java 2D ve Sürükle Bıraktan oluşur. 1997 yılında JDK 1.2 ile birlikte piyasaya sürülmüştür. [3] Bu konuları ele aldıktan sonra Java da nasıl oluşturduklarını gördük ve aynı zamanda burdan sonra birkaç button örneği ile makaleyi tamamlayacağız.dikkat ettiğimizde Netbeans özellikle kalıp buton özellikleri ile dikkat çekiyor.son olarak da aynı örneği eclipse de inceleyelim. package com; import com.arif.r; import android.app.activity; import android.content.intent; import android.os.bundle; import android.view.view; import android.widget.button;
public class activityekleactivity extends Activity { public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); Button gitbuton=(button)findviewbyid(r.id.git); gitbuton.setonclicklistener(new View.OnClickListener() { public void onclick(view v) { // TODO Auto-generated method stub startactivity(new Intent( android.intent.action.ac2 )); //yönlendirmeyi yapan kod. intent ile activityler arası yönlendirme, internet sitesini açma vs. Yapılabiliyor.
); [3] Şimdi bunun da görsel halini görerek bitirelim.java da ben eclipse de gördük bunların eventleri aynı zamanda properties lerinde ayrı ayrı özellikler var bunları eğer sürükle bırakla yazmazsak elimizle yazmak zorunda kalırız. Referanslar: [1].https://tr.wikipedia.org/wiki/E%C5%9Flik_biti [2]. http://www.yildiz.edu.tr [3].http://bilgisayarkavramlari.sadievrenseker.com
Garbage Collector Özet Bilgisayar Biliminde garbage collection kaynak yönetiminin özel bir adımıdır. Bilgisayar hafızasının yönetilmesi işleminde kullanılmaktadır. Bilgisayar programları çalışma zamanı sırasında bellek ihtiyacı duyarlar ve ihtiyaç duyulmayan hafıza alanları programlar tarafından işletim sistemine iade edilir. Bu işlem C dilinde malloc() ve free() fonksiyonları ile yapılmaktadır. Belirli durumlarda programların akışında bu iki fonksiyonun izini sürmek zorlaşır. İşletim sistemine iade edilmiş bir alanın program tarafından tekrar kullanılması güvenlik açıklarını beraberinde getirmektedir. Giriş Bilgisayar Biliminde garbage collection kaynak yönetiminin özel bir adımıdır. Bilgisayar hafızasının yönetilmesi işleminde kullanılmaktadır.bilgisayar programları çalışma zamanı sırasında bellek ihtiyacı duyarlar ve ihtiyaç duyulmayan hafıza alanları programlar tarafından işletim sistemine iade edilir. Bu işlem C dilinde malloc() ve free() fonksiyonları ile yapılmaktadır. Belirli durumlarda programların akışında bu iki fonksiyonun izini sürmek zorlaşır. İşletim sistemine iade edilmiş bir alanın program tarafından tekrar kullanılması güvenlik açıklarını beraberinde getirmektedir.programlama yaparken hafıza yönetimini otomatiğe
bağlamak geliştiricilerin işini kolaylaştırmıştır. Böylelikle bir programcı program yazarken hafıza alanını garbage collector sisteminden talep edip, iade işlemine karışılmamaktadır. Kalan tüm işlemler garbage collection mekanizması tarafından yapılmaktadır.garbage collection kullanılan hafıza alanlarının izini sürerek ihtiyaç duyulmayan alanları işletim sistemine iade etmektedir. Yeni bir talep geldiği zamanda yer bulup programa göndermektedir.garbage collection çalışma zamanında hafıza alanlarını yönetmektedir. Bu da bu sistemin işlemci kullanmasına sebep olmaktadır. İşlemci kullanımı ile alakalı iki farklı yönetim yaklaşımı bulunmaktadır. Birincisi stop-the-world yaklaşımıdır. Herhangi bir t zamanında garbage collector devreye girdiği zaman ilgili programdaki tüm işlemler durdurulur, hafıza yönetimi yapılır, daha sonra işlemler başlatılır. Bu çalışma zamanı kritik uygulamalar için bir dezavantaj oluşturmaktadır. Bu nedenle daha sonra concurrent algoritmalar geliştirilmiştir. Concurrent yaklaşımda garbage collection ile ilgili uygulama eşzamanlı olarak çalışmaktadır. Çöp toplayıcısı (garbage collector) heap te herhangi bir nesne varsa halen bir uygulama tarafından kullanılıp kullanılmadığımı kontrol eder. Heap te nesne varsa ve bu nesneler memory kullanıyorlarsa, kullandıkları bu memory yi garbage collector tekrar kullanmak için geri isteyebilir (mecburi kaldığı durumlarda, memory taşması gibi). Eğer heap için kullanılabilecek daha fazla memory alanı yoksa (yani bir önceki adım da garbage collector yeterli memory alanı sağlayamadıysa) new operatörü OutOfMemoryException istisnası fırlatacaktır. Garbage collector çalışmaya başladığında tüm objelerin heap içersinde birer çöp olduğunu farz eder. Bir başka değişle uygulama (application) root larının heap içersinde ki hiç bir nesneyi referas etmediklerini farzeder. Daha sonra çöp toplayıcı root üzerinde çalışmaya başlar ve root üzerinden erişilebilen tüm objelerin bir grafiğini çıkartır. Garbage Collector(GC) ın yaptığı iş temel olarak; kullanımı son bulmuş, hiçbir nesne örneği tarafından referans
gösterilmeyen, bellek bölgelerini tesipit edip o bölgelerdeki bellek alanını boşaltmaktır. GC sizin yerinize yazılımınızı takip eder ve kullanılmaya bellek bölgelerini sisteme iade eder. Bu Java da asla bellek sızıntısı olmadığı anlamına gelmez tabi ki ama daha öncelerine göre çok da az oranlara indirgenmiş ve bellek sızıntısı hatalarının tedavisi daha kolay hale gelmiştir. Az önce de söylediğim gibi Java pointer kavramını kabul etmez ve herşeye nesne gözü ile bakar. GC ise bu nesnelerin aktif kullanımın bellek üzerindeki etkisi ile ilgilenir. Program çalıştığı sürece otomatik olarak bu işlemler gerçekleştirilebileceği gibi aşağıdaki biçimde manuel olarak da tetiklenebilmektedir.gc nin çalışma mantığı, program içindeki değişkenlerin veya nesnelerin durumlarını takip edip ona göre davranış sergilemekten ibarettir. Günümüzde birkaç GC algoritması kullanılıyor. Bu algoritmalarda önemli olan değişkenlerin veya nesnelerin ne zaman silinmeye hazır olduklarının bilinmesidir. Değer türleri, yani yığın tabanlı değişkenler geçerli oldukları alandan (scope) çıktıkları zaman silinmeye hazır birer parça haline gelmiş olur. Nesneler ise kendilerine başvuru olmadığı zaman silinmeye hazır değişkenler haline gelir. Son paragraflarda anlattıklarımızı şekil üzerinde anlatmamız, çalışma ortamında neden bellek yönetiminin gerekli olduğunu daha açık gösterecektir. Yazdığımız programda Main() yordamı içerisinden aşağıdaki fonksiyonu çağırdığımızı varsayalım; Program yüklenmeye başladığında Main() yordamı içerisindeki tüm değişken ve yordamlar sırayla yığın üzerine taşınır. Bu aşamada KareAl() yordamı ve yordamın yerel parametresi olan Sayi değişkeni ardışıl şekilde yığın birimi üzerine taşınır. Program içerisinde, bir yordamdan başka bir yordamı geçildiği zaman ikinci metodun çalışması bittikten sonra programın
kaldığı yerden devam edebilmesi için yığın üzerinde bir geri dönüş işaretçisi oluşturulur. Bu geri dönüş işaretçisi, fonksiyon çağrıları yapılırken geri dönüş adresini saklamak için kullanılır Heap üzerindeki bu bellek alanına programcı tarafından da ulaşılamayacaktır. Bu durumda, GC nin devreye girmesi beklenir. GC, çalıştığı zaman heap üzerinde yığın ile bağlantısı kesilmiş nesneleri belirleyip onları bellekten kaldırır. Sonuç : Sonuçta olarak Garbage collection çalışma zamanında hafıza alanlarını yönetmektedir. Bu da bu sistemin işlemci kullanmasına sebep olmaktadır. İşlemci kullanımı ile alakalı iki farklı yönetim yaklaşımı bulunmaktadır. Birincisi stopthe-world yaklaşımıdır. Herhangi bir t zamanında garbage collector devreye girdiği zaman ilgili programdaki tüm işlemler durdurulur, hafıza yönetimi yapılır, daha sonra işlemler başlatılır. Bu çalışma zamanı kritik uygulamalar için bir dezavantaj oluşturmaktadır. Bu nedenle daha sonra concurrent algoritmalar geliştirilmiştir. Concurrent yaklaşımda garbage collection ile ilgili uygulama eşzamanlı olarak çalışmaktadır. Referanslar http://www.buraksenyurt.com/ http://www.csharpnedir.com/ https://tr.wikipedia.org http://erensarigul.blogspot.com.tr/ http://www.solvusoft.com/
Java da Dizi İşlemleri Dizi Elemanlarına Erişme Dizilerdeki her elemanın bir indisi vardır ve bu elemanlara indis numaraları ile erişilir. Dizilerin indisi 0 dan başlar. Örnek: Dizinin 6.Elemanına ulaşacağız. [crayon-5b7f03a59aa55281898717/] Dizi Elemanlarını Listeleme Dizideki elemanları listelemek için basit bir for döngüsü kullanabiliriz. [crayon-5b7f03a59aa61394810017/] Dizinin Boyutunu Bulma Bir dizinin boyutu o dizideki eleman sayısıdır. Dizinin boyutunu bulmak için lenght özelliği kullanılır. [crayon-5b7f03a59aa69798341506/] Dizimiz 5 elemanlı olduğu için programın çıktısı 5 olacaktır. Dizileri Sıralama Dizileri sıralamak için birden fazla yöntem vardır. Ama en basit olan Array.sort() metodudur. Bu metod diziki elemanları büyükten küçüğe doğru sıralar. [crayon-5b7f03a59aa71136209887/] Dizilerde Arama
Java da dizi içerisinde arama yapmak için binarysearch metodu kullanılır. Bu metod ile aranan elemanın dizideki indis numarası bulunur. [crayon-5b7f03a59aa78914952484/] Dizilerde Karşılaştırma Java da karşılaştırma için kullanacağımız equals() metodudur. Yalnız karşılaştırılacak diziler aynı tipte olması gerekir. (int,char,byte,long,float ) Bu metodu kullanmamız için java.util.arrays paketini import etmemiz gerekir. [crayon-5b7f03a59aa80732978561/] Diziyi Kopyalama Java da dizileri kopyalamak için iki yöntem var. İlk olarak for döngüsü kullanabiliriz. [crayon-5b7f03a59aa87583056107/] Diziyi kopyalamak için diğer yöntem olarak System.arraycopy() metodu kullanılır. [crayon-5b7f03a59aa8f719103930/] Yazar: Necmi ALTUK GUI Programlama (JRadioButton Kontrolü) Bu kontrol JCheckBox kontrolüne alternatif kullanılabilir. Ancak işlevi farklıdır. JCheckBox kontrolünü bir tık ile seçili hale getirebilir, ikinci tık ile onayı kaldırabilirsiniz. Ancak bu kontrolde böyle bir durum söz konusu değildir. Onay kutucuğu işaretlendikten sonra, ancak
başka bir JRadioButon kontrolü işaretlenerek bir diğerinin onayı kaldırılabilir. Özellikle cinsiyet seçeneği ve/veya lisans kabul seçeneklerinde kullanılan bir kontroldür. Yapılandırıcılara ve metodlara gelince; bu kontrolün yapılandırıcıları ve metodları JCheckBox kontrolü yapılandırıcı ve metodları ile tamamen aynıdır. Ancak gelişmiş metodlarda farklılık gösterebilir. Örnek Kod: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Radiobutton extends JFrame implements ActionListener { JLabel jlab; public Radiobutton() { this.settitle("radiobutton Örneği");//Formun title'ını ayarlıyoruz this.setsize(300,150);//formun boyutunu ayarlıyoruz this.setdefaultcloseoperation(jframe.exit_on_close); this.setlayout(new FlowLayout()); JPanel jp_main = new JPanel(); jp_main.setpreferredsize(new Dimension(290, 140)); JPanel jpn1 = new JPanel(); JPanel jpn2 = new JPanel(); jpn1.setpreferredsize(new Dimension(280, 60)); jpn2.setpreferredsize(new Dimension(280, 65)); jp_main.add(jpn1); jp_main.add(jpn2); jpn1.setlayout(new GridLayout(1,3)); jpn2.setlayout(new FlowLayout()); jlab= new JLabel("Seçim Yapınız!");//oluşturulan jlabel nesnesinin yazısını
değiştiriyoruz JRadioButton jrb1= new JRadioButton("Seçim-1",true);//Radiobuttonların nesneleri olusturuluyor JRadioButton jrb2= new JRadioButton("Seçim-2"); JRadioButton jrb3= new JRadioButton("Seçim-3"); jrb1.addactionlistener(this); jrb2.addactionlistener(this); jrb3.addactionlistener(this); ButtonGroup bg = new ButtonGroup();//Radiobuttonları birbirine bağımlı yapmak için Grup oluşturuyoruz bg.add(jrb1);//oluşturulan ButtonGroup un içine radiobuttonları ekliyoruz bg.add(jrb2); bg.add(jrb3); jpn1.add(jrb1); jpn1.add(jrb2); jpn1.add(jrb3); jpn2.add(jlab); this.add(jp_main); this.setvisible(true);//görünür hale getiriyoruz //actionperformed ile buttonlara tıklandıkça jlab Labelının yazısını değiştiriyoruz @Override public void actionperformed(actionevent arg0) { JRadioButton jrb = (JRadioButton) arg0.getsource(); jlab.settext(jrb.gettext()); //jrb.settext("deneme"); //jrb.setvisible(false); //this.settitle(jrb.gettext()); public static void main(string[] args) { new Radiobutton();//Nesne üretmeden constructoru çağırıyoruz
JRadioButton Ekran Çıktıları: Referanslar: 1. 2. 3. 4. http://www.yazilimmutfagi.com/10251/windows/java/radiobu tton-kullanimi-ve-itemlistener-sinifi.aspx http://www.ethemsulan.com/2009/12/java-radiobutton-kulla nm.html https://oflazoglu.org/tag/jradiobutton/ A.Kerim Fırat, JAVA 8 SE, KODLAB, İSTANBUL, 2014 Java Yapılandırıcıları (Constructors) Bir sınıf tanımlandığında, bellekte henüz onu temsil edecek öğeler yoktur (static sınıflar hariç). Her sınıf için bu işi yapan özel bir metot vardır. Bu metoda yapıcı (constructor) diyoruz. Constructor bir sınıfın değişkenlerini somutlaştırarak kullanılan metoddur. Yapıcının görevi türe ait öğeler yaratmaktır. Java dilinde bu öğelere nesne (object, instance of the class) denir. Yapıcı (constructor), yaratılan sınıfın doğal bir parçasıdır ve aksi istenmedikçe ön-tanımlı (default) olarak derleyici tarafından oluşturulur ve kendi
işlevini yapar. Constructor, javadaki öteki metodardan tamamen farklıdır. Bu metodun bir değer-bölgesi yoktur; yani hiçbir değer almaz. Bir tek işlevi vardır: sınıftan nesneler yaratmak. Nesneye yönelik programlama yaklaşımında bir nesnenin oluşturulması sırasında ilk çalışan metodun ismidir. Buna göre bir nesnenin oluşturulması demek, nesneyi tarif eden sınıftan bir türün hafızada(ram) bir kopyası için yer açılması ve bu nesnenin bütün değişken ve metodlarının tanımlanan kısıtlamalarla erişilebilir olması demektir. Constructor Class ismi ile aynı olmalıdır. new anahtar kelimesi ve Sınıf isminden sonra parantezler eklenmesi ile oluşturulur. Constructorlar değer döndürmezler ancak kendi içinde işlem yapabilirler. Birden çok constructor tanımlanabilir. Sınıfa ait varsayılan işlemleri yapılandırırlar. Nesne yaratılırken, derleyici tarafından otomatik olarak oluşturulan constructor a ön-tanımlı (default) constructor demiştik. Ön-tanımlı constructor hiçbir parametresi olmayan ve sınıf ile aynı adı taşıyan bir metottur. Ancak, constructor bir metot olduğundan, istenirse aşkın yükleme (overload) yapılabilir, yani farklı parametrelerle farklı işlevlere sahip kılınabilir. Böyle bir constructor tanımlanınca, ön-tanımlı olan contructor kendiliğinden yok olur, onun işlevini tanımlanan constructor üstlenir. Derleyicinin yaratacağı öntanımlı constructor yerine, bir çok uygulamada aşkın constructor kurulması daha uygundur. Örnek 1: public class kalem { private String renk; private String tipi; // Boş Constructor // Tanımlanmadığı halde java bunu otomatik oluşturur. public kalem() { System.out.println( Boş Constructor );
// Parametreler farklı olduğunda 2 tane veya daha fazla constructor tanımlanabilir // Bunlara erişirken aldıkları parametrelere göre ayrıt edilir. // Constructor public kalem(string renk, String tipi) { System.out.println( Dolu Constructor ); this.renk = renk; this.tipi = tipi; public void kaleminiz() { System.out.println( Kaleminizin rengi + renk + tipi + tipi); public class MainClass { public static void main(string []args){ // boş constructor çalışıcak kalem bk=new kalem(); // boş oldugu için kalem rengi ve tipini boş döndürecek. bk.kaleminiz(); System.out.println(); // parametre alan constructor kalem k=new kalem( Kırmızı, 2b ); k.kaleminiz(); Constructor Ekran Çıktısı : Boş Constructor Kaleminizin rengi null tipi null Dolu Constructor Kaleminizin rengi Kırmızı tipi 2b Örnek 2:
public class dikdörtgen { int en, boy; public dikdörtgen() { en = 0,boy=0; public dikdörtgen(int en, int boy) { this.en = en; this.boy = boy; Constructor_2 yukarıdaki örnek kodda dikdörtgen sınıfının oluşturucusu (constructor) iki kere yazılmıştır. Buna göre bir dikdörtgen oluşturulurken, bu sınıfı kullanacak olan sınıf aşağıdaki iki şekilde de oluşturabilir: dikdörtgen d = new dikdörtgen(); dikdörtgen d = new dikdörtgen(10,15); Constructor_2 Yukarıdaki iki satırda bir dikdörtgen tanımlayarak bu sınıftan bir nesne oluşturmaya yaramaktadır. Sonuçta ilk satırdan sonra eni ve boyu 0 olan, ikinci satırda ise eni 10 boyu 15 olan bir dikdörtgen tanıtılmıştır. Bu iki alternatif satır, aslında aynı objeyi iki farklı şekilde olarak oluşturma imkanı sunmuştur. Referanslar: 1. 2. http://www.dijitalders.com/icerik/44/1997/java_class_yap isinda_constructor_ve_overloading.html#.wnv2fg_yjiu https://yazilimokulu.wordpress.com/tag/java-da-construct or-ne-ise-yarar/
3. http://bilgisayarkavramlari.sadievrenseker.com/2008/11/2 4/yapici-constructor GUI Programlama (JCheckBox Kontrolü) Onay kutucuğu olarak isimlendirilir. Kullanıcıya seçenek sunmak için kullanılabilen bir kontroldür. Kontrolün varsayılan durumu onay (check) sız halidir. Ancak varsayılan olarak onaylı yapılması istenirse, kontrole ait Properties penceresindeki selected sekmesinden ayarlanabilir. Veya manuel olarak oluşturulmuş ise, yapılandırıcı vasıtasıyla onaylı hale getirilebilir. Javada swing bileşenine aittir.
Kullanim şekilleri: JCheckBox box1 = new JCheckBox( ); //Yazı ve seçim yoktur JCheckBox box2 = new JCheckBox( Deneme ); //Sadece yazı var seçili değil JCheckBox box3 = new JCheckBox( Deneme,false); //Yazı var seçili değil JCheckBox box4 = new JCheckBox( Deneme, true); //Yazı ve seçili JCheckBox Yapılandırıcılar JCheckBox(): Varsayılan yapılandırıcıdır. Aksi belirtmedikçe bu yapılandırıcı ile kullanılır. JCheckBox(Action a): Birden fazla JCheckBox kontrolünün olay (event)larını tek bir yere bağlamak için kullanılır. JCheckBox(Icon icon): Kontrole bir ikon vermek için kullanılır. Kontrole ait Properties penceresinde bunu yapmak mümkündür. Ancak manuel olarak oluşturulduğunda Properties ayarlarını manuel yapmanız gerekir. Çünkü kontrole ait bir Properties penceresi olmayacaktır. Bu durum tüm kontroller için geçerlidir. JCheckBox(Icon icon, boolean selected): Birinci parametreyle bir ikon, ikinci parametre ile true değeri verilerek kontrolü seçili (check) hale getirebilirsiniz. JCheckBox(String text): Kontrol üzerine veri yazdırmak için kullanılır. JCheckBox(String text, boolean selected): Birinci parametre ile kontrol üzerine veri yazdırmak, ikinci parametre ile kontrolü seçili (check) hale getirebilirsiniz.
JCheckBox(String text, Icon icon): Birinci parametre ile kontrol üzerine veri yazdırabilir, ikinci parametre ile kontrole bir ikon belirleyebilirsiniz. JCheckBox(String text, Icon icon, boolean selected): Birinci parametre ile kontrol üzerine veri yazdırabilir, ikinci parametre ile kontrole bir ikon belirleyebilir ve son parametre ile kontrolü seçili (check) hale getirebilirsiniz. Metodları: box1.settext("deneme123");// box1 JCheckBox'ının yazısını değiştirir. box1.gettext(); //box1 JCheckBox'ındaki yazıyı almamızı sağlar. box1.setselected(true); //Kontrolün onay kutucuğunu işaretli (check) hale getirir. box1.setselected(false); //Kontrolün onay kutucuğunu işaretsiz hale getirir. boolean isselected(); //Kontrolün onay durumuyla ilgili bilgi döndürür. Kutucuk işaretliyse true, aksi taktirde false döndürür. Metodlar Örnek Kod: package jcheckboxkontrolu; import java.awt.flowlayout; import java.awt.font; import javax.swing.jcheckbox; import javax.swing.jframe; import javax.swing.jlabel; /** * * @author IOzturkler */
public class JCheckboxKontrolu extends JFrame { JLabel yazi=new JLabel("JCheckBox Örneği:"); JCheckBox box1=new JCheckBox("Onay Kutucuğu",false); public JCheckboxKontrolu(){ setlayout(new FlowLayout()); setsize(275,150); setvisible(true); Font font=new Font("Times New Romans",Font.BOLD,12); box1.setfont(font);//box1 JCheckBox'ının Fontunu ayarlıyoruz. box1.setselected(true); add(yazi); add(box1); public static void main(string[] args) { JCheckboxKontrolu nesne=new JCheckboxKontrolu(); Ornek Kod Ekran Çıktısı Referanslar: 1. http://www.oguvenir.com/2013/04/java-gui-4-jcheckbox.htm l 2. https://docs.oracle.com/javase/8/docs/api/javax/swing/jc heckbox.html 3. http://www.yazilimmutfagi.com/10245/windows/java/checkbo x-kullanimi-ve-itemlistener-sinifi.aspx 4. A.Kerim Fırat, JAVA 8 SE, KODLAB, İSTANBUL, 2014