javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · java programlama dili...

40
Java Programlama Java’ya Genel Bakış

Upload: others

Post on 05-Jan-2020

30 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Programlama

Java’ya Genel Bakış

Page 2: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Programlama Dili

• Nesneye yönelik (object-oriented) programlama dili

• C++ ile ilişkili bir dil

• Veri tipleri:• Temel veri tipleri (int, double vs.)

• Sınıflar

• İşletilen bir dil (interpreted) – Derlenen bir dil değil

• Derleme birimleri:• Kaynak kodlar: *.java dosyası (*.cpp ve *.h dosyaları yerine)

• Derlenen kod (bytecode): *.class dosyası (*.exe dosyaları yerine)

Page 3: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Dağıtımları (1)

• Hedeflenen platformun yeteneklerine ve ihtiyaçlarına göre farklı dağıtımlar oluşturulmuştur

• Böylece bir platformda ihtiyaç duyulmayacak ya da kullanılamayacak özelliklerin, bu platforma eklenmesine gerek kalmamaktadır

• Şu an dört farklı dağıtım bulunmaktadır:1. Java Card

2. Java Mikro Dağıtım (Java ME)

3. Java Standart Dağıtım (Java SE)

4. Java Enterprise

Page 4: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Dağıtımları (2)

• Java Card • Akıllı kartlar veya benzer düşük hafızalı ürünlerde kullanılır

• örnek: SIM kartlar ve ATM kartları

• Java Mikro Dağıtım (Java ME)• Mobil ve gömülü sistemlerde kullanılır

• örnek: cep telefonları ve navigasyon cihazları

• Android ile ilişkisi

Page 5: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Dağıtımları (3)

• Java Standart Dağıtım (Java SE)• Masaüstü ve sunucular için uygulama geliştirmek için kullanılır

• Sunucu uygulamalarında, uygulamayı aynı anda kullanan kullanıcı sayısı azdır

• Örnek: Her tür PC/Laptop uygulamaları

• Java SE pek çok API içerir• Grafiksel arayüzler için: Swing veya JavaFX

• Girdi/Çıktı işlemleri için, örneğin dosya işlemleri

• Veri tabaları ile bağlantı kurmak için

• Veri yapıları oluşturmak ve kullanmak için

Page 6: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Dağıtımları (4)

• Java Ticari Kuruluş Dağıtımı (Java EE)• Orta ve büyük ölçekli işletmelere uygun daha karmaşık uygulamalar

geliştirmek için kullanılır

• Uygulamalar genellikle sunucu tabanlıdır ve aynı anda çok sayıda kullanıcıya hizmet vermektedir

• Örnek: Çevrimiçi bankacılık sistemi, öğrenci bilgi sistemi

• Java SE dağıtımının genişletilmiş halidir. Çok kullanıcılı sistem gereksinimlerini karşılayan pek çok API içerir:

• Servlet ve JavaServer Pages (JSP)

• JavaServer Faces (JSF)

• Java Transaction API (JTA) ve Java Persistance API (JPA)

Page 7: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Tarihçe – C öncesi ve C

• C’den önce:• Fortran ile karmaşık bilimsel uygulamalar geliştirilebiliyor, ancak sistem kodu

için uygun değil

• Basic kolayca öğrenilebiliyor ama yapı eksikliğinden büyük programlar için uygun değil

• Assembly ile verimli çalışan programlar yazılabliyor ama öğrenmesi kolay değil ve etkin şekilde kullanmak zor

• GOTO – Spagetti kod: Yapısal olmayan ve anlaşılması zor kod

• B dili – Ken Thompson --> C dili – Dennis Ritchie, 1970’ler

• ANSI C Standardı, 1989

Page 8: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Tarihçe – C++

• Belirli fonksiyonları yerine getiren sistem programları zamanla kendini kullanıcıya yönelik karmaşık programlara bıraktıkça, bu karmaşıklığı yapısal diller ile (örn. C) yönetmenin zorluğu farkedildi

• Nesneye yönelik diller bu karmaşık programları kalıtım, encapsulation ve polymorphism yöntemleri ile organize etmeyi sağladı

• C++, Bjarne Stroustrup, 1979

• C++, C’nin tüm özelliklerini içeriyor ve nesneye yönelik özellikler ekliyor – başarılı olmasında önemli bir neden

Page 9: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Tarihçe – Platform bağımsızlık

• UNIX platformunda yazılan programlar, Windows ya da Macintosh’da çalışmıyordu --> Platform bağımlı diller

• İlk halka açık versiyon, 1995. Oak --> Java

• Hedef: Platform bağımsız (mimari bağımsız) bir dil

• Platformlar: Mikrodalga fırınlar, uzaktan kumandalar, buzdolabı, saatler, web vs.

• Applet: Web için yazılan, web tarayıcısı içerisinde çalışan Java programcıkları --> web’e o zamanlarda mümkün olmayan özellikler kattı

• Adobe Flash: Daha iyi çoklu ortam ve araç desteği

Page 10: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Tarihçe – Java 2 öncesi

• JDK alfa ve beta sürümleri, 1995

• JDK 1.0, 1996: Oak olarak

• JDK 1.1, 1997• inner classes

• JavaBeans

• JDBC – java database connectivity

• RMI – remote method invocation

• Reflection – ilk versiyon – değişikliğe izin verilmiyor

Page 11: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Tarihçe – Java 2

JDK 1.2, 1998

• Sonradan Java 2 olarak isimlendirildi

• Dağıtımları birbirinden ayırabilmek için JDK yerine J2SE kullanılmaya başlandı

• Java platformdaki sınıf sayısı üçe katlandı: 59 pakette 1520 sınıf

• Swing grafiksel arayüzleri

• JIT derleyeci (just-in-time compiler)

• Java eklentisi (java plug-in) – web tarayıcıları için

• Java IDL – CORBA için IDL gerçekleştirimi

• Java Koleksiyonları – Set, List, Queue ve Map gibi

Page 12: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Tarihçe – Java 3

Java 3, 2000

• HotSpot JVM dahil edildi

• Java Naming and Directory Interface (JNDI)

• Java Platform Debugger Architecture (JPDA)

• JavaSound

Page 13: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Tarihçe – Java 4

Java 4, 2000

• assert anahtar kelimesi. Örnek: assert !isEmpty() : "Stack is empty";

• Kurallı ifadeler (regular expressions), örnek: *.txt

• IPv6 desteği

• Bloklanmayan IO (NIO)

• Günlük tutma (logging)

• Image I/O: JPG/PNG gibi imge formatlarında okuma ve yazma

• XML ayrıtştırıcı (XML parser) ve XSLT işleyici (JAXP)

• Entegre güvenlik ve şifreleme uzantıları (JCE, JSSE ve JAAS)

• Java Web Start

• Tercihler API’si (java.util.prefs)

Page 14: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Tarihçe – Java 5

Java 5, 2004

• Jenerikler (Generics)• Kolleksiyonlar için derleme zamanı tip güvenliği sağlar ve pek çok elle tip dönüşümünü

gereksizleştirir

• Açıklama Notları (Annotations) • Sınıfların/Metotların ek bilgi ile etiketlenmesini sağlar. Daha sonra bu etiketler çeşitli

araçlarla işlenerek programcının pek çok alanda zaman kazanmasını sağlar.

• Otomatik Kutulama (Autoboxing/Unboxing): • Temel veri tipleri (int, double gibi) ile temel veri tipi paket sınıfları (primitive wrapper

classes) (Integer, Double gibi) arasında otomatik dönüşüm sağlar

Page 15: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Tarihçe – Java 5 (devam)

Java 5, 2004

• Numaralandırma (Enumerations) • “enum” anahtar kelimesi ile tip güvenli (typsafe) değerler listesi oluşturmayı sağlar

• Örnek: Gun.Pazartesi, Gun.Salı, Gun.Carsamba ...

• Değişken sayıda parametre (Varargs) • Metotların son parametresi değişken tipi ardından gelen üç nokta ve değişken adı olacak

şekilde tanımlanabilir

• Örnek: void drawtext(String... lines)

• Çağıran metotlar herhangi bir sayıda parametre ya da bir dizi gönderebilir

Page 16: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Tarihçe – Java 5 (devam)

Java 5, 2004

• Statik import (static imports) • Sınıfın statik elemanlarını, sınıf adını yazmadan kullanmayı sağlar

• Örnek: Math.PI yerine PI (import static java.lang.Math.PI;)

• Kodun anlaşılabilirliğini azalttığından nadiren kullanılmalıdır

• For each döngüsü • Diziler ve kolleksiyon nesneleri (Queue, Set vb.) üzerinde, tip dönüşümü ve sayaç

gerekmeksizin kolayca dönmeyi sağlayan döngülerdir

• Örnek: for (TimerTask t : c) t.cancel();

Page 17: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Tarihçe – Java 6

Java 6, 2006

• Komut dili desteği (Scripting Language Support) • Python, Ruby, JavaScript gibi komut dillerinin Java içerisinden kullanımını sağlar

• Mozilla Rhino JavaScript makinasi (JavaScript engine) Java SE’ye eklendi

• Jython, JRuby, JScheme, Scala, Closure, ePascal ...

• Java SE için performans iyileştirilmeleri (yaklaşık %60 daha hızlı)

• JAX-WS ile geliştirilmiş web servisleri desteği

• JDBC 4.0 ile geliştirilmiş veritabanı desteği

Page 18: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Tarihçe – Java 6 (devam)

Java 6, 2006

• Java Derleyici API • Java programlarının bir Java derleyicisi seçip çalıştırmasını sağlar

• Java programlarının (örneğin IDE’ler) diğer java programlarını derlemesini sağlayan güçlü bir API’dır

• JAXB 2.0 ile gelişmiş XML-Nesne eşleştirmesi• Nesneler ile XML dosyaları arasında iki yönlü kolay dönüşüm

• Pek çok Swing iyileştirmeleri: tablo sıralama, tablo filtreleme, çift-tamponlama (double-buffering) ...

• JVM iyileştirmeleri: senkronizasyon, derleyici, çöp toplama (garbage collection) ve uygulama başlatma performans artışları

Page 19: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Tarihçe – Java 7

Java 7, 2011

• Dinamik diller için JVM desteği • Yeni invokedynamic byte kodu

• Komut dilleri için esneklik ve performans artışı sağlar

• Eliptik eğri şifreleme algoritmalarının gerçekleştirimi

• Yeni ağ protokollerine (SCTP ve Sockets Direct Protocol gibi) geliştirilmiş destek

• Modern GPU özelliklerinin daha iyi kullanımını sağlayan XRender iletişim hattının (pipeline) Java2D için kullanımı

• Dizilerin ve kolleksiyonların sıralanmasında “merge sort” yerine “timsort” kullanımı

Page 20: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Tarihçe – Java 7 (devam)

Java 7, 2011

• Java diline küçük eklentiler • Switch içerisinde karakter katarları (string)

• Try-Catch bloklarında kaynak kullanımı ve bu kaynakların otomatik yönetimi

• Jeneriklerde basitleştirilmiş baklava biçimli operatör (<>) kullanım desteği

• Basitleştirilmiş varargs metot tanımlama

• Tamsayıları ikili (binary) olarak tanımlayabilme/kullanabilme desteği

• Sayısal değerlerde okunabilirliği arttırmak amaçlı alt çizgi kullanımı

• Aynı catch bloğu içerisinde birden fazla istisna tipini yakalayabilme

Page 21: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Tarihçe – Java 8

Java 8, 2014

• JavaFX grafiksel arayüz kütüphanesi • Java SE’ye eklenmeden önce ayrı bir kütüphane olarak kullanılabiliyordu

• Versiyon numarasının Java SE ile uyumlu olması amacıyla “JavaFX 8” olarak isimlendirildi

• Swing daha fazla geliştirilmeyecek ve JavaFX Swing’in yerini alacak

• 3D çizim desteği

• Algılayıcı desteği

• Yazdırma desteği

• Zengin metin desteği

Page 22: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Tarihçe – Java 8 (devam)

Java 8, 2014

• Lambda ifadeleri • Fonksiyon tanımı

• Varsayılan metotlar: çoklu kalıtımı gerçekleştirmeyi sağlıyor

• Nashorn JavaScript makinası• JavaScript kodlarının Java programları içerisinden çalıştırılmasını sağlar

• Mozilla Rhino’ya göre daha iyi çalışma performansı

• Açıklama notları (Annotation) yenilikleri. • Örnek: Tekrar eden açıklama notları

• Aynı kod parçasına, aynı tipte birden fazla açıklama notu eklemeye izin verir

• Gün ve zaman API’leri (Date and Time APIs)

Page 23: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Tarihçe – Java 9 ve 10

• Java 9, 2016• Daha iyi yerel kod (native code) entegrasyonu. Bkz. JNI (Java Native Interface)

• Java SE’nin modülerleştirilmesi

• Para ve para birimi API’si

• OpenCL (Open Computing Language) ile otomatik paralelleştirme (plan)

• Java 10, 2018• Temel veri tipleri silinebilir

Page 24: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Community Process (JCP)

• İlgilenen kişilerin Java dili ile ilişkili standart spesifikasyonlar oluşturmasını sağlayan oluşum: https://www.jcp.org

• 1998’de kuruldu

• Şirketler için senelik ücret varken, bireyler için ücretsiz

• Java Specification Request (JSR)

• JCP Executive Committee

• Şu ana kadar gerçekleş JCR listesi (300+):

http://en.wikipedia.org/wiki/Java_Community_Process

Page 25: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Sanal Makinesi (JVM) (1)

Page 26: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Sanal Makinesi (JVM) (2)

Page 27: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Byte Kodlar

• Java dili komut seti, her biri 1-byte olan 256 adet komuttanoluşmaktadır.

• Bunlardan 51 tanesi ileriki kullanımlar için ayrılmıştır.

• Komutlar aşağıdaki temel kategorilere ayrılabilir:

• Load and store (e.g. aload_0, istore)

• Arithmetic and logic (e.g. ladd, fcmpl)

• Type conversion (e.g. i2b, d2i)

• Object creation and manipulation (new, putfield)

• Operand stack management (e.g. swap, dup2)

• Control transfer (e.g. ifeq, goto)

• Method invocation and return (e.g. invokespecial, areturn)

Page 28: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Ön/Son Ek ve İşlemci Tipi

Ön/Son Ek İşlemci Tipi

i int

l long

s short

b byte

c char

f float

d double

z boolean

a nesne referansı

aload veya iload

Page 29: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Byte Kod Örnekleri

Komut Açıklama

aload_0 0. yerel değişkendeki nesne referansını yığına at

aload_1 1. yerel değişkendeki nesne referansını yığına at

iload_0 0. yerel değişkendeki tam sayıyı yığına at

istore_1 Yığının tepesindeki değeri birinci yerel değişkene at

iadd Yığının tepesindeki iki tamsayı değeri al, topla ve sonucu yığına at

dmul Yığının tepesindeki iki double değeri al, topla ve sonucu yığına at

Tüm byte kodlar: http://en.wikipedia.org/wiki/Java_bytecode_instruction_listings

Page 30: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Çalıştırma Kiti (JRE)

• .class dosyaları files Java byte kodlarını (bytecode) içerir• Donanım bağımsız komut seti

• Java byte kodları Java Sanal Makinesi - Java Virtual Machine (JVM) –tarafından yorumlanır.• Byte kodları makine koduna çevirir

• Java Çalıştırma Kiti - Java Runtime Environment (JRE)• JVM ve temel Java özelliklerini içerir (örn: java komutu)

• Donanım ve işletim sistemi detaylarını soyutlar

• Java programları için ortak API’leri gerçekleştirir

Page 31: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

java komutu ile Java programı çalıştırma

• HelloWorld.class isimli bir dosyada derlenmiş Java programınız olsun.

• Bu programı çalıştırmak için yandaki komut çalıştırılmalıdır:

java HelloWorld

• java komutu JRE içerisinde yer almaktadır.

• Web sitelerindeki Applet’ler web tarayıcısında çalışan Java programcıklarıdır.

• Web tarayıcısı, arka planda, java komutunu kullanarak bu appletleri çalıştırır. (JRE kurulu olmalıdır)

Page 32: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Geliştirme Kiti (JDK)

• Java programlarını geliştirmek için gereken araçları ve diğer bileşenleri içerir.

• Örnek araçlar:• javac: java dosyalarını derleyip class dosyası haline getirir.

• javap: class dosyalarını okunabilir byte kod satırlarına çevirir.

• jdb: java programlarında hata ayıklamak için kullanılır.

• JDK kurulumu:

http://www.oracle.com/technetwork/java/javase/downloads/index.html

Page 33: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Javac komutu ile Java programlarının derlenmesi

• Javac komutu Java kaynak kodlarından (*.java), JVM de çalışabilir Java byte kodlar (*.class) oluşturmayı sağlar.

• HelloWorld.java isimli Java programından HelloWorld.class isimli byte kod dosyası oluşturmak için aşağıdaki komut çalıştırılmalıdır.

javac HelloWorld.java

Page 34: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

NetBeans IDE

• Java’da yazılmış entegre geliştirme ortamı (IDE)

• Eklentiler aracılığıyla pek çok programlama dilini destekliyor

• Java geliştirme araçları:• Kaynak kod editorü:

• Dil spesifik kod renklendirme

• Kod otomatik tamamlama

• Java kodlarının oluşturulması ve yeniden yapılandırılması (refactoring) için özellikler

• Proje oluşturma, çalıştırma ve hata ayıklama

Page 35: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Development Kit (JDK) Kurulumu

• Java ile program geliştirebilmek için öncelikle JDK kurulmalıdır

• Aşağıdaki adrese gidip, sağda gösterildiği şekilde JDK’nın en son versiyonunu bilgisayarınıza indirin

• Şu an için en son versiyon 8u20 – JDK 8 Güncelleme 20 (22.09.2014)

• Indirilen kurulum dosyasını çalıştırıp JDK kurulumunu tamamlayın

http://www.oracle.com/technetwork/java/javase/downloads/index.html

Page 36: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

NetBeans Kurulumu

• Aşağıdaki adrese gidip, sağda gösterildiği şekilde NetBeans’in tüm alt bileşenleri içeren versiyonunu bilgisayarınıza indirin

• Indirilen kurulum dosyasını çalıştırıp NetBeans kurulumunu tamamlayın

https://netbeans.org/downloads/

Page 37: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Projesi Oluşturma (1/2)

• File -> New Project -> Java -> Java Application

• Next

Page 38: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Java Projesi Oluşturma (2/2)

• Proje adını (project name) girin

• «Finish» butonuna tıklayın

Page 39: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

main() metotu

• Yeni oluşturulan sınıfa ait HelloWorld.java dosyasını editörde açın

• main() metotunu yazın

• Dosyayı kaydedin:File -> Save (Ctrl+S)

Page 40: Javaleventbayindir.net/wp-content/uploads/2014/06/bms301-hafta1.pdf · Java Programlama Dili •Nesneye yönelik (object-oriented) programlama dili •C++ ile ilişkili bir dil •Veri

Uygulamayı Çalıştırmak

• Aşağıda gösterilen toolbar’daki «Run» (yeşil sağa doğru ok) butonuna basın

• Veya menüden Run -> Run Project (F6) seçin

• main() metodu çalıştırılacaktır

• Output penceresinden programın çıktısı aşağıdaki gibi görülebilir