Java


Java bir programlama dilidir. Java yazılımı online oyun oynamanızı, dünyanın dört bir yanındaki insanlarla sohbet etmenizi, konut kredinizin faizini hesaplamanızı, resimleri üç boyutlu olarak görüntülemenizi ve daha pek çok şey yapmanızı sağlar. Java, Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmış açık kodlu, nesneye yönelik, zeminden bağımsız, yüksek verimli, çok işlevli, yüksek seviye, adım adım işletilen (interpreted) bir dildir. C ve C++ arasındaki farkı ise, bu programların derleyicilerinde istediğiniz zaman “execute” edebiliyorken, java’da bütün programı yazdıktan sonra okutabilmenizdir. Bu da sizi çok dikkatli olmaya zorlar. Java Hakkındaki paylaşımları bu sayfadan takip edebilirsiniz.

 

4 Responses


  • raisondetre // // Reply

    1) Java ile programlama yapmak için neler gerekir?

    Öncelikle sisteminizde JDK (Java Development Kit) yüklü olması gerekir. JDK yüklü değilse depodan yükleyebilirsiniz.

    Bunun dışında bir geliştirme ortamına (IDE) ihityacınız olacak. Bu noktada yeni başlayanlar için ben kesinlikle BlueJ programını öneriyorum. Son derece basit, kullanıcı dostu bir program ve yaptığınız hatalarda anlaşılabilir bir şekilde sizi uyarıyor. Class’lar arası bağlantıları v.s oklarla gösteriyor. Bu gibi sebeplerden dolayı anlatımı BlueJ üzerinden yapacağım.

    2) BlueJ kurulumu

    Öncelikle BlueJ’i şu adresten indiriyoruz: http://bluej.org/download/files/bluej-220.jar

    İndirdikten sonra ALT+F2’ye basıyoruz ve “java -jar indirdiğiniz/dizin/bluej-220.jar” yazıp enter’a basıyoruz. Ekrandaki tailmatlara göre kurulumu yapıyoruz.

    3) BlueJ nasıl açılır?

    Kurulum yaptığınız dizinde “bluej” adlı dosyaya çift tıklayarak çalıştırabilirsiniz.

    Java’da bazı class’larda bir “main method” (ana metod) vardır. Ana metodu olan class’lar doğrudan çalıştırılabilir, bir constructor’a (ne olduğu şu anda önemli değil) ihtiyaç duymaz. Şimdi MerhabaJava class’ımız için main method’u yazalım.

    public class MerhabaJava
    {
    Buranın altına şunu yazıyoruz:
    public static void main(String[] args)
    {
    System.out.println(“Merhaba Java!”);
    }

    Kenar boşlukları zorunlu olmasa da kodunuzun okunabilir olması açısından önemlidir. BlueJ kenar boşluklarını (indentation) kendisi ayarlar.

    Kodumuzun son hali şöyle olmalı:

    public class MerhabaJava
    {
    public static void main(String[] args)
    {
    System.out.println(“Merhaba Java!”);
    }
    }

    Şimdi bu kodu satır satır inceleyelim: Öncelikle class’ımızı tanımlıyoruz, buna “class declaration” denir. “public” bu class’a diğer class’lardan erişilebileceğini, bir MerhabaJava nesnesi oluşturulabileceğini gösterir. İlk dersler boyunca tüm class’larımız public olacağı için üzerinde fazla durmuyorum.

    class ifadesi (anlaşıldığı üzere) bunun bir class olduğunu gösterir. “Class olduğu zaten belli değil mi?” diye soruyorsanız, biraz geriye dönelim ve New Class’a tıkladığımız yere bakalım. Orada seçenekler arasında “class” dışında seçenekler de var, ama bunlar ileri düzey konular, şu anda önemi yok.

    Ondan sonra { işareti ile class’ı açıyoruz. Java’da tüm class’lar, metodlar v.s { işareti ile açılır ve } ile kapatılır.

    Gelelim main method’a:

    public static void main(String[] args)
    {

    public’in ne olduğunu öğrenmiştik. static bu aşamada önemli değil, olduğu gibi kabul edin lütfen, void bu metodun herhangi bir sonuç döndürmeyeceğini (return yok) belirtir. Halbuki metodumuz bir tam sayı (integer) döndürecek olsaydı void yerine int yazacaktı. main metodumuzun adı. main’den sonra parantez içinde verilenler o metodda kullanılacak argümanlardır. main method için String[] args argümanı verilir (nedeni şu anda önemli değil, oraya da gelicez inşallah).

    Argümanlar konusunu biraz daha detaylı inceleyelim. Mesela sizin “my_method” adlı bir metodunuz olsun ve bu metoda yaşınız ve adınızı gireceksiniz. O zaman metod başlığı şu şekilde olabilirdi:

    public static void my_method(String my_name, int my_age)

    Not: Herşeyi İngilizce yazıyorum, çünkü karşılaştığınız kodlar çoğunlukla İngilizce olacak.

    Argümanları da anladıktan sonra, geçelim sonraki satıra:

    System.out.println(“Merhaba Java!”);
    Burada System modülünün içindeki out’a ait println fonksiyonunu çağırıyoruz. System modülü java tarafından otomatik olarak çağırılır, import etmeye gerek yoktur. println komutu verilen argümanı java konsoluna yazdırır ve alt satıra geçer. Eğer yazdırdıktan sonra alt satıra geçmesini istemiyorsanız println yerine print fonksiyonunu kullanabilirsiniz.

    Artık MerhabaJava class’ımız hazır. Sol üstten Compile butonuna basıyoruz ve pencereyi kapatıp, proje ekranına dönüyoruz.

  • raisondetre // // Reply

    Java’daki class’lar ile c’deki struct’lar genelde birbirine karıştırılsa da aslında büyük farkları var. Class belli bir parametrede kayıtlı bilgileri çekerken sizin bunu değiştirme şansınız yoktur. Struct yapısında ise siz istediğin değişkeni atama şansına sahipsinizdir. O yüzden class’lar daha bağımlı bir haldedir. Örnek olarak göstermek gerekirse: 

     

    Sınıflar, soyut sınıflar ve methodlar

    abstract class Ogrenci {
    public String okul=”Ogrenci” ;
    public abstract void ogretmen() ;// soyut sinif 
    public void notIste() { // soyut olmayan sinif
    System.out.println(“Hocadan not iste”);
    }

    Örnekte de görüldüğü gibi abstract programa soyut bir sınıf katar.  Örneğin “abstract void quiz()” soyut bir metoda örnektir. Soyut(abstract) sınıflarda new komutu ile yeni object yaratamayız. Somut sınıflardan en büyük farkı budur.

    Soyut sınıf ve methodlara ihtiyaç duyma nedeni

    abstract class Cizim {
    public abstract void noktaCiz(int x , int y) ;// soyut sinif

    public void cizgiCiz(int x1 , int y1 , int x2 , int y2) { // soyut olmayan sinif
    // noktaCiz(x,y); // metodunu kullanarak ekrana cizgi ciz
    }
    }

    class AkıllıTelefonCizim extends Cizim {
    public void noktaCiz(int x, int y) { // iptal etme (override)
    // Akıllı telefon ekrani icin nokta ciz…..
    }
    }

    class LcdCizim extends Cizim {
    public void noktaCiz(int x, int y) { // iptal etme (override)
    // Lcd ekrani icin nokta ciz…..
    }
    }

    public class CizimProgrami {
    public void baslat(int x1 , int y1 , int x2 , int y2) {
    // akıllı telefonun telefonunun ekranina cizgi cizmek icin
    Cizim c1 = new akillitelefonCizim();
    c1.cizgiCiz(x1 , y1 , x2 , y2);

    // Lcd ekranina cizgi cizmek icin
    Cizim c2 = new LcdCizim();
    c2.cizgiCiz(x1 , y1 , x2 , y2 );
    }
    }

    Çizim sınıfında bulunan cizgiCiz() metodu soyut(abstract) değildir fakat noktaCiz() metodu soyuttur , bunun sebebi cizgiCiz() metodunun ekranlara çizgi çizmek icin noktaCiz() metoduna ihtiyac duyduğu içindir. cizgiCiz() metodunun ihtiyac duydugu tek şey , ekran üzerinde tek bir noktanın nasıl çizileceğini bilmektir , bu bilgiler cizgiCiz() metoduna verildiği sürece sorun yaşanmıyacaktır. Ekrana tek bir noktanın nasıl çizileceğini , Cizim sınıfından türemiş alt sınıflar tarafından verilmektedir. Abstract kavramı da bu metodları ekrana yansıtmakta ihtiyaç duyulan bir kavram olduğu için gereklidir. Ayrıca ingilizcesi iyi olanlar için çok yararlı olacağını düşündüğüm bir videoyu da izlemenizi tavsiye ediyorum;

    Elimden geldiğince açıklamaya çalıştığım bu konuda umarım yardımcı olabilmişimdir. Java ile ilgili daha fazla bilgi için sayfamızı ziyaret edebilirsiniz.

     

     

  • raisondetre // // Reply

    Bir android programı yapmaya başladıysanız en önemli konulardan biri activityler arası buton veya farklı bir fonksiyonla geçiş yapma durumudur. Bunun için şu adımları uyguluyoruz:

    Android Uygulama Yapma

    İlk önce yeni bir Android Projesi oluşturmak için indirmediyseniz Eclipse Juno üzerinden Help-Install New Software geçişi ile Android  Sdk’yı kurabilir ya da direk sitesinden indirebilirsiniz. Şimdi yeni bir Android Projesi başlatalım:

    Bunun için File-New-Android Application Project(Eğer burada yoksa other seçeneğinden seçiyoruz) yolunu uyguluyoruz.

    Android 1

    Yeni bir Android uygulaması ismi yazıp apk’yı başlatıyoruz.

    Android 2

     

    Karşımıza eğer activity ismini değiştirmediyseniz MainActivity.java ve activity_main.xml layout’u açılacak.

    [notice]Android’de arayüz projede res’in altında bulunan layout kısmından yapılırken, fonksiyon, görev atama, nesne tanımlama gibi backend developer işlemleri src’nin altında bulunan java kısmında yapılır.[/notice]

    İkinci bir sayfa açmak için src’nin üstünde mouse ile sağa tıklayarak yeni bir Android Activity açıyoruz. 

    Android 3

     İkinci sayfaya GecisActivity ismini verdim ileride zorlanmamak için. Çünkü birçok Activity’e sahip projelerde hangi sayfada ne işlem olduğunu ileride karıştırmak olasılık dahilinde oluyor. Şimdi ilk açtığımız Activity’nin java kısmına geri dönerek yeni nesne oluşturup görev atıyoruz.

    Android java fonksiyon tanımlama

     

    public void ActivityGecisi(View view)
    {
    Intent intent = new Intent(MainActivity.this, GecisActivity.class);
    startActivity(intent); }

    Bu kod ile ActivitiyGecisi adında yeni bir nesne tanımlamış olduk. Bunun adını istediğiniz gibi değiştirebilirsiniz. Geçiş fonksiyonunda da gördüğünüz gibi MainActivity’den GecisActivity’e yönlendirme görev atadık.

    Şimdi activity_main.xml tarafına geçerek bir buton oluşturup, oluşturduğumuz nesne ismini android:onclick methodu ile button’a tanımlıyoruz.

    Android buton ile geçiş yapma

    Artık uygulamayı çalıştırdığın iki activity arasında geçiş yapabilirsiniz. Daha fazla örnek kodlamalar için Java sayfamızı takip edebilirsiniz. Sinir ve stresten uzak, ilk yazdığınızda çalışan uygulamalar dileğiyle :) .

     

  • raisondetre // // Reply

    Yazılım dillerinde yeterli düzeyde Türkçe kaynak olmamasından dolayı, biraz daha spesifik alanlara girdiğimizde sadece yabancı kaynaklara muhtaç kalıyoruz. Bu sebeple bugün yapacağınız Android uygulamasını nasıl Facebook’a entegre edeceğinizi işleyelim dedik:

    1- Öncelikle  bilgisayarımızda en çok tercih edilen ide’lerden  Eclipse mevcut değilse buradan indiriyoruz. Android SDK’sı için de şu siteden gerekli dosyayı indirip derleyici hazır hale getiriyoruz. Önceki yazımızdan göz gezdirebileceğiniz adımları tamamladıktan sonra artık projeye başlayabiliriz.

    Android Facebook

     

    2- Facebook bağlantısı için gereken Facebook’un Andorid SDK’sını bu linkten indiriyoruz. Eclipse üzerinden indirdiğimiz yerdeki Facebook SDK’sını projeye import ediyoruz. File-Import-General-Existing Projects into Workspace yolunu kullanıyoruz.

    facebook'u android'e ekleme

    Eğer SDK’yı Eclipse’e entegre ettikten sonra klasörün üstünden kırmızı hatala görüyorsanız, Project-Clean uzantısıyla düzeltebilirsiniz.

    3- Öncelikle sonraki adımlarda oluşturacağımız Facebook uygulaması için bilgisayarımızda bulunan bir hash key’e ihtiyacımız var. Buna iki yolla ulaşabiliyoruz;

    İlk yol komut istemi yani cmd’yi açıp:

    Windows için: 

    keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64

    OS X için: 

    keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
    

    komutlarını yazdıktan sonra çıkan satırdan şifre sorarsa “android” yazıp onaylıyoruz ve bize sayı, harf, sembollerden oluşan key veriyor. 

    Benim tercih ettiğim ikinci yol ise;

    Oluşturduğunuz  projenin;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    //kısmından sonra aşağıdaki hash key kodunu ekliyoruz.
    
    try {
            PackageInfo info = getPackageManager().getPackageInfo(
                    "projenizin package adresi", 
                    PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
                }
        } catch (NameNotFoundException e) {
    
        } catch (NoSuchAlgorithmException e) {
    
        }
    
    

    Programı çalıştırdıktan sonra LogCat akışına baktığımızda hashcode’umuzu görebileceğiz:

    hash key facebook android uygulaması

     

    4-  Şimdi developers.facebook.com adresine girerek yeni bir uygulama oluşturuyoruz.  Apps- Create a New App diyerek uygulama isim yerlerini dolduruyoruz:

    facebook developer örneği

     

    Uygulamayı oluşturduktan sonra Settings- Add Platform- Android uzantısını izleyip hashkey’imizi ‘Key Hashes’ alanına giriyoruz. Aynı zamanda uygulamamızın package name’ini ve class bilgilerini de giriyoruz.

    Facebook hash code android

     

    5- Projemizin values-strings.xml bölümüne gelerek resources kısmından app_id stringini ve facebook’ta oluşturduğumuz uygulamanın değerini add butonundan giriyoruz.

    Android Facebook ile bağlama

    Sonrasında AndroidManifest.xml dosyasını açıp, Permissions sekmesinden Add butonuyla “android.permission.INTERNET” değerini ekliyoruz. (meta-data olarak)

    Permission Internet Android

    7- Artık son düzenlemelere geldik. Şimdi res/layout dosyasından projemizin arayüzünü açıp bir TextView sürüklüyoruz.

    <TextView
        android:id="@+id/welcome"
        android:layout_width="wrap_content"

    Src dosyasında bulunan oluşturduğumuz MainActivity.java class’ına geri dönerek öncelikle aşağıdaki model package’leri import ediyoruz:

    import com.facebook.*;
    import com.facebook.model.*;
    import android.widget.TextView;
    import android.content.Intent;

    Sonra aşağıdaki oturum sürecini projeye implement ediyoruz.

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
      super.onActivityResult(requestCode, resultCode, data);
      Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
    }

    En son olarak da public void onCreate methodunun altına, aşağıda bulunan kodları ekliyoruz.

     @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        // Facebook Login Başlangıcı
        Session.openActiveSession(this, true, new Session.StatusCallback() {
    
          // oturum değişimi sonrası geri çağırım
          @Override
          public void call(Session session, SessionState state, Exception exception) {
            if (session.isOpened()) {
    
              // Uygulama istek gönderimi
              Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
    
                // uygulama çağırımından sonra istek başlatımı
                @Override
                public void onCompleted(GraphUser user, Response response) {
                  if (user != null) {
                    TextView welcome = (TextView) findViewById(R.id.welcome);
                    welcome.setText("Hello " + user.getName() + "!");
                  }
                }
              });
            }
          }
        });
      }
    

     
    Kodumuzda son görünüm aşağıdaki gibi olmalıdır:

     

    package com.firstandroidapp;
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Intent;
    import android.widget.TextView;
    import com.facebook.*;
    import com.facebook.model.*;
    
    public class MainActivity extends Activity {
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    
    Session.openActiveSession(this, true, new Session.StatusCallback() {
    
    @Override
    public void call(Session session, SessionState state, Exception exception) {
    if (session.isOpened()) {
    
    Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
    
    @Override
    public void onCompleted(GraphUser user, Response response) {
    if (user != null) {
    TextView welcome = (TextView) findViewById(R.id.welcome);
    welcome.setText("Hello " + user.getName() + "!");
    }
    }
    });
    }
    }
    });
    }
    
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
    }
    
    }
    
    Eğer pro guard kullanıyorsanız proguard-project.txt bölümüne aşağıdaki snipi eklemelisiniz.
    -keep class com.facebook.** { *; }
    -keepattributes Signature
    

    Artık uygulamamızı çalıştırıp Facebook ile bağlantıyı gerçekleştirebiliriz:

    [gallery type="slideshow" columns="1" ids="2575,2574,2573"]

     

    Umarım yeterince açıklayıcı bir yazı olmuştur. Daha fazla Android örneği için sayfamızı ziyaret edebilirsiniz. Mutlu bir kodlama serüveni dileğiyle.

Gitmeden yorumunuzu bırakın.


Time limit is exhausted. Please reload the CAPTCHA.