Yazilar:

 Sponsor Reklam 


16.09.2008 (00:05)

 public, protected, private Anahtar Kelimeleri 
Java'da sarmalamanın (encapsulation) önemli bir yeri bulunmaktadır. Koddaki karmaşıklığı gidermek, kodu kontrol altına almak için sarmalama mekanizması gerekmektedir. Bu da public, protected ve private anahtar kelimelerle metotlara ve değişkenlere erişim imkanı ile sağlanmaktadır.

Bu konuya şu yazıda yer verilmiştir.
Imza: admin

15.09.2008 (23:46)

 Nesneye Yönelik Programlama ve Java 
Nesneye yönelik programlama (Object Oriented Programming - OOP), Java'nın temelini oluşturmaktadır.

Giderek artan kod ve veri karmaşıklığının üstesinden gelmek için nesne yönelimli programlama modeli tasarlandı. Programın belirli bir organizasyon çerçevesinde geliştirilmesi, kontrol altına alınması, bir sorun çıktığında hemen müdahale edilebilmesi açısından bu model büyük bir önem taşımaktadır.

Geliştirilen bu modelde, her şeyin anlaşılabilmesi, hiyerarşik özetleme söz konusudur. Bu özetleme sayesinde onun ne işe yaradığını anlayabiliriz. Örnek olarak bir arabada fren sisteminin ne işe yaradığının özetini okuyarak onun işlevini kolay bir şekilde anlayabiliriz. Bunun için freni baştan icat etmeye veya arabayı ve arabanın diğer sistemlerini araştırmaya gerek yoktur.

Modelin temel prensipleri şunlardır:

* Kalıtım (Inheritance)
* Sarmalama (Encapsulation)
* Çok Biçimlilik (Polymorphism)

Kalıtım: Bir sınıfın hiyerarşik olarak üstünde bulunan sınıfı genişletmesi, yani onun özelliklerini devralması ve kendi özelliklerini de eklemesidir. Hayvanları bir sınıf olarak düşünürsek, Sürüngenler bu sınıfın bir alt sınıfıdır. Burada sürüngenlerin hepsinin hayvan olduğunu söyleyebiliriz. Ama her hayvan sürüngen değildir. Sürüngenler sınıfı Hayvanlar sınıfının özelliklerini miras yoluyla (kalıtımla) devralmıştır, o sınıfı genişletmiştir.

Kalıtımın Java'da kullanımı şu şekildedir:

İnsan sınıfını genişleten Futbolcu sınıfını inceleyelim:

Human.java:
package kodcu.net;

public class Human {

  protected String name;
  protected String surname;
  protected int age;

  /**
  * Constructor
  */

  public Human() {
    name = "";
    surname = "";
    age = 0;
  }

  /**
  * Constructor
  * @param name String
  * @param surname String
  * @param age int
  */

  public Human(String name, String surname, int age) {
    this.name = name;
    this.surname = surname;
    this.age = age;   
  } 

  /**
  * Kisinin adini verir
  * @return String
  */

  public String getName() {
    return name;
  }
 
  /**
  * Kisinin soyadini verir
  * @return String
  */

  public String getSurname() {
    return surname;
  }
 
  /**
  * Kisinin yasini verir
  * @return int
  */

  public int getAge() {
    return age;
  }
 
}

Footballer.java:
package kodcu.net;

public class Footballer extends Human {
 
  private String team; // Takimin adi
  private int number;  // Oyuncunun numarasi

  /**
  * Constructor
  * @param name String
  * @param surname String
  * @param age int
  * @param team String
  * @param number int
  */

  public Footballer(String name, String surname, int age, String team, int number) {
    super(name, surname, age);
    this.team = team;
    this.number = number;
  }
 
  /**
  * Takim adini verir
  * @return String
  */

  public String getTeam() {
    return team;
  }

  /**
  * Futbolcunun numarasini verir
  * @return int
  */

  public int getNumber() {
    return number;
  }
 
}

Görüldüğü gibi Futbolcu bir İnsan'dır. Onun adı, soyadı, yaşı genel insan özellikleridir ve İnsan sınıfından miras almıştır. Oysa takımı olması ve oyuncu numarası olması sadece ona hastır. Bu nedenle extends anahtar kelimesi kullanılarak Footballer sınıfı Human sınıfını genişletmiştir (extend etmiştir). Üst sınıf da yer alan bir metot alt sınıfta da tanımlanabilir, onu özelleştirebilir böylece kullanımını kendi amacına yönelik hale getirebilir. Daha açık bir şekilde, üst sınıfta yer alan public ya da protected değişkenler ya da metotlar alt sınıflarca tekrar tanımlanabilir böylece üst sınıflardakiler gizlenmiş olur. Buna geçersiz kılma (overriding) denmektedir.

Örnek verecek olursak, Footballer sınıfında çağrılan getName() metodu normalde Human'da yer alan ve public olan getName()'i çağırmış olur. Oysa aynı metot public özelliğiyle bir de Footballer sınıfında tanımlanmış olsaydı, bu sınıftan yapılan getName() metoduna çağrılar Human sınıfına değil Footballer sınıfdaki getName()'e olacaktı.

Sarmalama: Kodu, veriyi veya nesneyi dış müdahalelerden koruyabilmek için, amacı dahilinde kullanabilmek için, kullanılmayacağı yerlerde gösterimini engellemek için sarmalamaya ihtiyaç duyulmuştur. Gerçekten de temel unsurumuz olan özetleme konusunda sarmalamanın önemi bulunmaktadır. Bu amaçla public, protected ve private anahtar kelimeleri kullanılmaktadır. Yukarıda yer alan Human.java'da name, surname, age bilgileri protected olarak belirtilmiştir. Bu tanımlama bu değişkenlere alt sınıfların da erişebilmesi içindir. public anahtar kelimesi her yerden erişime imkan sağlar. private ise sadece aynı sınıf içinde erişime izin verir.

Çok Biçimlilik: Bir sayının karesini alan bir metot düşünelim. Parametre olarak int, float, double, long gibi farklı tiplerde değer alması gerektiği düşünülürse her biri için bir metot yazılması gerekmektedir. Fakat farklı dillerde her biri için farklı isimde bir fonksion tanımı yapılması gerekmektedir. 

Örnek olarak C'de:
int int_karesini_al(int a) {
  return (a*a);
}

float float_karesini_al(float a) {
  return (a*a);
}

Oysa Java'da aynı isim kullanılarak tek isim çok biçimli olarak kullanılabilmekte bu da programı yazmayı kolaylaştırmaktadır.
public int karesiniAl(int a){
  return (a*a);
}

public float karesiniAl(float a){
  return (a*a);
}

Görüldüğü gibi aynı isimde metoda aşırı yükleme (overloading) yapılmıştır. Metotların yanı sıra yapılandırıcılara da (constructors) aşırı yükleme yapılabilir. Bu, çok biçimliliktir ve Java'nın diğer bir önemli avantajıdır.
Imza: admin

13.09.2008 (06:43)

 Java'nın Önemi ve Önemli Özellikleri 
Tüm Java programları nesneye yöneliktir. Nesneye yönelik programlama yaklaşımı (Object Oriented Programming) mantığı Java'nın temelini oluşturmaktadır. Internet'in kullanımının yaygınlaşması, medya araçlarının, donanım özelliklerinin artması Java'nın gücünü artırmaktadır.

Java gerçekten de programlamada devrim olarak nitelendirilebilecek bir dildir. Bunun etkisi C#'ın doğuşu ile de görülmektedir. .NET Framework'ü desteklemek üzere Microsoft tarafından oluşturulan C# dili, Java ile yakından ilişkilidir.

Java'yı büyük bir dil yapan önemli özellikleri ise şunlardır:

* Basit ve Anlaşılabilir
* Platformdan Bağımsız, Taşınabilir
* Mimariden Bağımsız
* Nesne Yönelimli
* Sağlam Bir Tasarıma Sahip
* Güvenli
* Dinamik
* Yüksek Performanslı
* Yorumlanabilir
* Çok Kanallı
* Dağıtık

Java öğrenilmesi ve geliştirilmesi basit bir şekilde tasarlanmıştır.

Windows/Linux vs. işletim sisteminde, hatta cep telefonlarında gibi mikro sistem gerektiren cihazlarda bile çalışabilmesi platformdan bağımsız yani taşınabilir olduğunu gösterir, mimariden bağımsız olarak kodun uzun ömürlü olmasını sağlar.

Java ile uyumlu, ilişkili, geliştirilebilir, anlaşılır kodlar geliştirebilmek için nesneye yönelik yaklaşım mantığını temel almıştır.

Java, tasarımı gereği yaptığınız hataları kolayca bulmanızı sağlar bu nedenle programlama hatalarından koruyabileceğini söyleyebiliriz. Kodu derleme zamanında kontrol eder. Çalışma sırasında hata ile karşılaşmak zordur. C'den önemli bir farkı da bu özelliğidir. Tüm çalışma zamanı hataları yine program tarafından (try - catch - exception - throw - throws ile) yönetilebilmektedir. C ve C++'dan farklı olarak belleğin boşaltılmasını sanal olarak yönetir ve giderir. Bu nedenlerle Java'nın sağlam bir yapıya sahip olduğunu söyleyebiliriz.

Java, ağ uygulaması ile bilgisayar arasına güvenlik duvarı uygulaması (firewall) ile virüs, kötü niyetli programlar gibi endişeleri ortadan kaldırır. Bir java programını kendi çalışma ortamında sınırlandırarak bunu başarır. Bu nedenle Java destekli bir Web tarayıcısı ile güvenlik korkusu olmadan applet'ler indirilebilir. Başka bir açıdan bakacak olursak, Java ile J2ME platformu üzerinden mobil uygulamalar geliştirmek mümkündür. Java ile geliştirilmiş bir program ile telefonun mesaj alanına girilmek istenirse veya telefona ait diğer kısımlara erişilmek istenirse java araya girererk kullanıcıya programın ulaşılmak istediği yere erişip erişmemesini sormaktadır. Bütün bunlar güvenlik için önem verilmiş noktalardır.

Dinamik çalışmaya önem verir; çalışma zamanında nesnelere erişime, bytecode'un küçük parçalarının güncellenmesine izin verir. Dinamik olarak bağlama (dynamic binding) önemli yere sahiptir.

Java programları derlendikten sonra bytecode'lar üretildiği için bu kodların JIT derleyicisi ile doğrudan makine diline dönüştürülmesi kolay olmaktadır. Bu nedenle yüksek performanslıdır. Ayrıca üretilen byte kod Java Sanal Makinesi (JVM) olan bir makinede çalıştırılabilir olması da onun yorumlanabilir olmasını açıklar.

Java,  eşzamanlı olarak birçok şeyi yapabilen programlar oluşturulmasını destekler. Çoklu proses senkronizasyonu, thread yapıları söz konusudur. Bunlarla ilgili etkili çözümler sunar. Çok kanallı yapılar rahatça oluşturulabilir.

Farklı bilgisayarlar, farklı ortamlar arası etkileşim, uzaktaki (remote host) metot çağrısı (Remote Method Invocation - RMI) java ile TCP/IP protokolü kullanılarak sağlanır. Java, Internet'in dağıtık ortamı için tasarlanmıştır.

Görüldüğü üzere Java çok güçlü tasarlanmış bir yapıya sahiptir. Her alanda karşımıza çıkmaktadır. Sadece Sun Microsystems tarafından değil, herkes tarafından geliştirilen dil, 1980 sonu 1990 başı gibi çıkan, nesneye yönelik programlamaya önem katan C++'nın yerini Internet'in önem kazanmasıyla almıştır. 1991 yılında çıkmasına rağmen (gerçi ilk olarak Oak ismiyle çıkmış, 1995'te Java ismini almıştır) süregelmiş ve bu sağlamlılıkla kullanımını devam ettirecek görünüyor.
Imza: admin

12.09.2008 (05:30)

 Java Programının Derlenmesi 
Burada yazılım geliştirme ortamlarından, ide'lerden bahsetmiştik. Bahsedilen programlar yazılım geliştiriciler için kod yazım ortamı sağlamakta fakat derleyici program gibi bir rolü üstlenmemektedir.

Yazılan kodun derlenmesi, yüklenmiş olan SDK ile gelmektedir. Kurulu olan JDK'nın içindeki bin klasörü altında bulunan javac.exe kodun derlenmesini sağlamaktadır.

Diskimizin C bölümünde yer alan Example.java dosyasının derlenmesi için komut isteminde şu komut çağırılır:

C:\>javac Example.java

Javac derleyicisi, Example.java'yı derleyip byte kodları içeren (byte kodlar, direkt olarak çalıştırılabilir kodlar değildir, JIT derleyicisi ile karıştırmamak gerekir) Example.class isminde dosya oluşturacaktır. Artık program şu şekilde çalıştırılabilir:

C:\>java Example

java ve javac ile ilgili daha fazla bilgi için buraya bakabilirsiniz: javac.exe, java.exe
Imza: admin

12.09.2008 (01:58)

 Java Geliştirme Ortamları, IDE'ler 
Java üzerine program geliştirebilmek için IDE'lere (Integrated Development Environment) yani geliştirme ortamlarına ihtiyacımız vardır.

Bazı ücretsiz IDE'ler şunlar:

* Eclipse Foundation'a ait Eclipse,
* Sun Microsystems'a ait NetBeans,
* Oracle'a ait JDeveloper,
* JavaPLT group at Rice University'e ait DrJava Java IDE,
* Michael Kölling'e ait BlueJ Java IDE,
* Xinox Software'e ait JCreator Java IDE LE (Lite Edition)
* JIPE Java IDE,
* Gel,

Ücretli IDE'ler ise şunlar:

* Borland'a ait JBuilder,
* JetBrains'e ait IntelliJ IDEA,
* Xinox Software'e ait JCreator Java IDE Pro Edition

Genellikle tavsiye edilen kod yazma ortamları ise NetBeans, Eclipse, JBuilder, JDeveloper, IntelliJ IDEA, ufak şeyler için veya başlangıç için JCreator.
Imza: admin

12.09.2008 (00:13)

 JAVA Terimlerine Bir Bakış 
Java ile ilgili bütün terimlere buradan ulaşabilirsinz. Değinmek istediğimiz bazı terimler şunlar:

J2EE: Java 2 Platform, Enterprise Edition
J2ME: Java 2 Platform, Micro Edition
J2SE: Java 2 Platform, Standard Edition
SDK: Software Development Kit
JDK: Java Development Kit
JVM: Java Virtual Machine
KVM: Kilobyte Virtual Machine
JRE: Java Runtime Environment
JAR: Java Archive
CLC: Connected Device Configuration
CLDC: Connected Limited Device Configuration
JSDK: Java Servlet Development Kit
JDBC: Java Database Connectivity
JFC: Java Foundation Classes
JIT: Just-In-Time Compiler
JNDI: Java Naming and Directory Interface
JNI: Java Native Interface
JAIN: Java APIs for Integrated Networks
RMI: Java Remote Method Invocation

Şimdi bu terimlere değinelim:

J2EE: Multi-tier gerektiren uygulamalarda, server oluşturmada kullanılan bir platformdur.

J2ME: Cep telefonu, mikro sistemler gibi küçük, kısıtlı ortamlarda Java'nın yer alabilmesi için geliştirilmiş bir platformdur.

J2SE: Genel amaçlı Java'nın kullanımı, geliştirilmesi ve gösterilmesi için oluşturulmuş bir platformdur.

SDK: Java için yazılım geliştirme kaynaklarını, ortamını sağlar.

JDK: Java geliştirme kaynaklarını, ortamını sağlar. SDK'yla aynı isimde de kullanılabilmektedir. Fark ise JDK, SDK'nın bir alt kümesidir. SDK'nın özel bir hali olan J2EE SDK bir JDK'dır.

JVM: Java Sanal Makinesi (JSM) Java sınıflarındaki byte kodları işlemcide çalıştırılacak hale getirir. Bu nedenledir ki Java mimariden bağımsız olmasına rağmen mimariye uygun olarak kodların çalıştırılması JVM ile sağlanabilmektedir. Sonuç olarak hangi işletim sistemi olursa olsun ancak ve ancak o platforma has sanal makinenin kurulu olması şartıyla farketmeksizin java kodları çalıştırılabilir.

KVM: JVM'nin J2ME'de karşımıza çıkan CLDC'deki halidir. Kısıtlı cihazlardaki JVM'nin özel bir halidir.

JRE: Java uygulamalarının bilgisayarda çalıştırılabilmesi için gerekmektedir.

JAR: Platformdan bağımsız dosya formatıdır. Birçok dosyayı birleştirerek içinde barındırır. Projenin taşınabilirliği, dağıtılması açısından da faydalıdır.

CDC: J2ME platformundan bir konfigürasyondur Bağlantılı Aygıt Konfigürasyonu.

CLDC: J2ME platformundan bir konfigürasyondur Kesikli Bağlantılı Aygıt Konfigürasyonu.

JSDK: Servlet'ler oluşturabilmek için servlet geliştirme ortamına sahip olmak gerekir. Sun tarafından bu amaçla JSDK sağlanmaktadır. JDK + Sun Application Server diyebiliriz. Tomcat de JSDK'yi yenilemekte ve onun yerini almaktadır.

JDBC: Javanın temel standardı olan ortamdan bağımsız çalışma prensibi, veritabanı bağlantıları için de JDBC aracılığıyla sağlanır. MySQL, Oracle ve bunlar gibi SQL tabanlı diğer veritabanlarının Java platformlarında erişilebilmesi, bu platformlarda veritabanıyla ilişkili uygulamalar geliştirilmesi kolaylık kazanmaktadır.

JFC: GUI (Graphical User Interface - Grafiksel Kullanıcı Arayüzü) konusunda Swing bileşenleri (components) AWT bileşenlerinin yerine kullanılabilmektedir. Swing, JFC'nin bir parçasıdır ve önemli bir özelliği olarak karşımıza çıkar.

JNDI: Multiple naming ve directory hizmetlerinin arayüzlerinin oluşturulmasına yardımcı olan bir API kümesidir.

JIT: Java sınıflarında yer alan byte kodlarını çalışma esnasında JVM aracılığıyla alır, derler ve geçerli makine koduna çevirir.

JNI: Bir C kodunu bir Java kodu ile birleştirmek için JNI mekanizması oluşturulmuştur.

JAIN: Java platformu üzerinde yeni nesil telekomünikasyon ürünlerinin, servislerinin hızlı bir şekilde geliştirilmesine olanak sağlar.

RMI: Farklı hostlar üzerinde bulunan nesnelerin metotlarını kullanabilmeyi sağlar. Kodlar da uzaktaki JVM üzerinde çalıştırılmış olur.
Imza: admin

07.09.2008 (23:10)

 Kodcu.Net Açılmıştır: Merhaba Dünya! 
Java konusu üzerine kurulu sitemiz, kodcu.net, açılmış bulunmaktadır. Java ile ilgilenenler için faydalı bir kaynak site olması dileklerimizle...

Açılış mesajı olarak "Merhaba Dünya" diyelim:

package kodcu.net;

public class Main {

  /**
  * Ekrana Hello World! yazdırır.
  * @param args String[] : Konsola girilen parametreler.
  */

  public static void main(String[] args) {
    // sadece yazı yazdıralım
    System.out.println("Hello World!");
  }

}

Imza: admin

 1  ··  9   10 








Yazilar kaynak gosterilmeden kopyalanamaz © www.kodcu.net // Twitter