Görsel Programlama

advertisement
Görsel Programlama
Görsel Programlamaya, JavaFX’e ve
Java’ya Genel Bakış
Grafiksel Kullanıcı Arayüzü
• Graphical User Interface (GUI)
• Kullanıcının bilgisayar ile etkileşime girmesini
sağlayan grafiksel tabanlı arayüzlerdir
• Metin tabanlı arayüzlerden farklı olarak,
grafiksel simgeleri de kullanır
• İşlemler genellikle grafiksel elemanlara direk
müdahale ile gerçekleşir
• kısa süreli veya uzun süreli tıklama veya dokunma
• sürükleme
•…
Komut Satırı Arayüzü
• Command Line Interface (CLI)
• Bilgisayarın kontrolü, birbirini takip
ederek girilen komutlarla
gerçekleştirilen arayüzdür
• Kişisel bilgisayarlarda çok tercih
edilmemektedir
• Özellikle UNIX/Linux tabanlı
sunucuların kontrolünde halen
kullanılmaktadır
Metin Tabanlı Arayüzler
• Text-based User Interface (TUI)
• Metin, sembol ve renkleri kullanarak
CLI’lere göre daha kullanıcı dostu bir
arayüz sunan arayüzlerdir
• Klavye tuşları, kısayollar ve fare
aracılığıyla işlem yapmayı sağlarlar
• Grafiksel arayüzün kullanılamadığı
durumlarda daha kolay kullanılabilen bir
arayüz sağlamak amacıyla kullanılırlar
• Örnek: İşletim sistemi kurulumu, BIOS
Grafiksel Arayüzlerin Evrimi
• 1973 - Xerox Alto: GUI kullanan ilk bilgisayar
• 1981 - Xerox Star 8010: GUI merkezli ilk bilg.,
IBM PC 5150 (DOS, $1565)
• 1983 - Apple Lisa
• 1985 - Apple Macintosh 128K ($2495)
• 1985 - Atari ST ve Commodore Amiga
Mac OS
• 1984: Mac OS 1 - hiyerarsik olmayan
dosya sistemi (sanal dizinler)
• 1985: Mac OS 2.1 - hiyerarşik dosya
sistemi ve Hard Disk 20 desteği
• 1987: Mac OS 5.0 - aynı anda birden
fazla programı çalıştırabilme desteği
• 1988: Mac OS 7.0 – pek çok yeni özellik
ve arayüz iyileştirmeleri
• 2001: Mac OS X – Unix tabanlı işletim
sistemi
Windows
• 1985: Windows 1.0 - MS DOS üzerine eklenti.
Windows Paint, Windows Word vs.
• 1987: Windows 2.0 - Popülerliği artıyor:
Microsoft Word ve Microsoft Excel
• 1990: Windows 3.0 - Gelişen donanım desteği
ve uygulama geliştiricilerin desteğiyle satışlarda
büyük başarı
• 1995: Windows 95 – 32 bit işletim sistemi,
Win32 API ve nesneye yönelik GUI kütüphanesi
• Windows XP, Vista, 7 ve 8
X-Windows
• UNIX tabanlı işletim sistemleri için pencere
yönetim protokolü
• Pencerelerin çizilmesi, hareket ettirilmesi,
fare ve klavye ile etkileşim
• MIT tarafından 1984’te geliştirilmeye
başlandı
• Protokolün son versiyonu: X11 (1987)
• X pencere tabanlı yöneticiler için temel
çerçeveyi sunar
• Polüler pencere yöneticileri: KDE ve Gnome
Bilgisayar Girdi Cihazları
• Klavye
• Fare
• 1963: ilk bilgisayar faresi prototipi
• Dokunmatik Ekranlar
• 1983: ilk ticari dokunmatik ekran (HP-150 bilg.)
• 1993: ilk dokunmatik ekranlı telefon (IBM SPC)
• Kalem
• 1955: ilk bilgisayar kalemi (MIT projesi)
• 196x: popüler ticari bilgisayar kalemi (light pen)
• Mikrofon
GUI Elemanları
• Pencere (Window)
• Menü (Menu bar, Tool bar, Menu, Context menu)
• İkon (Icon)
• Kontroller (Controls veya Widgets) – Grafiksel
kontrol elemanları
• Tab (Tab) – Diğer kontrolleri içeren dikdörtgen
şeklinde kutular
Kontroller (1)
• Button, Radio button, Check box
• Slider
• List box
• Combo box
• Tree View
• Grid View (Table)
• Label
• Text box
• Progress bar, Scrollbar, Slider
Kontroller (2)
• Status bar
• Tooltip
• Accordion
• Modal window
• Dialog box
• Canvas
GUI Olayları (GUI Events)
• Kontroller üzerinde kullanıcı tarafından gerçekleştirilen olaylardır
•
•
•
•
•
•
•
Butona tıklanması
Sağ tıklama ve çift tıklama
Text box’a değer girilmesi
Liste kutusundan bir elemanın seçilmesi
Ağaç kontrolünden bir elemanın seçilmesi
Bir elemanı başka yere sürükleme
Pencerenin küçültülmesi veya kapatılması
• Uygulamalar, bu GUI olaylarını yakalayıp, uygun biçimde cevap
verecek şekilde yazılmalıdır
GUI Çerçeveleri (GUI Frameworks)
• Windows: WinForms, Microsoft Foundation Classes (MFC) veya
Windows Presentation Foundation (WPF)
• OS X: Cocoa
• iOS: Cocoa Touch
• Android
• Platform Bağımsız
• C: GTK+, Tk
• C++: Qt, FLTK
• Java: SWT, Swing, JavaFX
JavaFX
• Java SE 7 ile standart dağıtımın parçası olan platform bağımsız
GUI çerçevesi
• Oracle: Swing’e yeni özellik eklenmeyecek ve JavaFX zamanla
Swing’in yerini alacak
• Var olan Swing uygulamaları ve bileşenleri ile uyumlu çalışabiliyor
FXML ve Scene Builder
• FXML: JavaFX uygulamalarının
arayüzünü oluşturmak için
kullanılan XML tabanlı işaret dili
• Tasarımcı direk FXML
dökümanlarını elle oluşturabilir
• Veya Scene Builder aracı ile görsel
olarak oluşturabilir
• Oluşturulan FXML dökümani Java
IDE’ler tarafından kullanılabilir
Scene Builder
WebWiew
• WebKitHTML teknolojisi tabanlı web bileşeni
• JavaFX uygulamalarına web sayfası gömmek için kullanılıyor
• WebWiew Java API’lerini çağırabiliyor ve Java API’ler WebView
içerisinde çalışan JavaScript’i çalıştırabiliyor
• HTML5 özelliklerini destekliyor:
•
•
•
•
Web Soketleri (Web Sockets)
Web İşçileri (Web Workers)
Web Yazıtipleri (Web Fonts)
Yazdırma yetenekleri
Yerleşik UI Bileşenleri ve CSS
• Bir uygulama geliştirmek için gereken
başlıca bütün UI bileşenlerini içerir
• Bileşenlerin görüntüleri Cascading Style
Sheets (CSS) ile değiştirilebilmekte
• En son versiyonuna DatePicker ve
TreeTableView UI bileşenleri eklendir
Üç Boyutlu Grafik Özellikleri
• Üç boyutlu (3B) grafik kütüphanesi
içeriyor
• Uygulamalarda 3B nesneler,
dönüşümler, efektler kullanılabiliyor
• En son versiyonunda:
• Shape3D (Box, Cylinder…)
• SubScene, Material, LightBase…
• Ve Camera API’si eklendi
Canvas, Printing API’leri ve Zengin Metin
• Canvas API’si uygulamada esnek bir
şekilde iki boyutlu çizimler yapılmasını
sağlıyor
• javafx.print paketi içerisindeki sınıflar
uygulamanızdan kolayca yazıcı çıktısı
alabilmenizi sağlıyor
• Gelişmiş zengin metin desteği sayesinde
kontroller içerisinde iki-yönlü, çok satırlı,
çok-stilli metni destekliyor
Çoklu Dokunma Desteği ve Hi-DPI Desteği
• Platform detekliyorsa (tablet, akıllı telefonlar
vs.) platformun çoklu dokunma (multitouch)
özelliklerini programlayabiliyorsunuz
• Retina (Hi-DPI) ekranlı platoformlar
destekleniyor (iPad gibi)
Donanım Hızlandırılmış Grafik Betimleme
• Grafik gösterimi Prism adlı grafik betimleme makinası içeriyor
• Prism eğer platformda bulunan grafik kartını veya GPU’yu kullanarak
görüntüleri daha hızlı betimleyebiliyor
• Desteklenmeyen GPU’lar bulunduğunda ise, grafikler yazılım yoluyla
çizdiriliyor
Yüksek Performanslı Medya Motoru ve Yazılım
Kurulum Desteği
• GStremer çoklu ortam çerçevesi tabanlı bir medya
motoru var
• Bu medya motoru çoklu ortam içeriklerini sürekli ve
etkili bir şekilde oynatabiliyor
• Yazılım kurulum desteği platform bağımlı kurulum
dosyalarını IDE içerisinden oluşturabilmenizi sağlıyor
• Gerekirse JRE’yi (Java Çalıştırma Kiti) kurulum dosyasına
dahil ediyor
JavaFX Mimarisi
• Prism: yüksek performanslı grafik makinası
• Glass: küçük ve verimlı pencere sistemi
• Quantum Toolkit: Glass ile Prism’i birbirine bağlıyor ve betimleme ile
olay yönetiminde kullanılan Thread’lerin zamanlamasını yönetiyor
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)
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.
2.
3.
4.
Java Card
Java Mikro Dağıtım (Java ME)
Java Standart Dağıtım (Java SE)
Java Enterprise
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
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
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)
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
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
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
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
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
Java Tarihçe – Java 3
Java 3, 2000
•
•
•
•
HotSpot JVM dahil edildi
Java Naming and Directory Interface (JNDI)
Java Platform Debugger Architecture (JPDA)
JavaSound
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)
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
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
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();
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
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, çifttamponlama (double-buffering) ...
• JVM iyileştirmeleri: senkronizasyon, derleyici, çöp toplama (garbage
collection) ve uygulama başlatma performans artışları
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ı
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
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
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)
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
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
Java Sanal Makinesi (JVM) (1)
Java Sanal Makinesi (JVM) (2)
Java Byte Kodlar
• Java dili komut seti, her biri 1-byte olan 256 adet komuttan
oluş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)
Ö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
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
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
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)
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
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
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
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
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/
Java Projesi Oluşturma (1/2)
• File -> New Project -> Java -> Java Application
• Next
Java Projesi Oluşturma (2/2)
• Proje adını (project name) girin
• «Finish» butonuna tıklayın
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)
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
Download