JSF Framework Services & Encoding, Decoding

JSF Framework Services

Java Server Faces scope olarak presentation tier ile sinirlidir.
Database persistence , web services ya da diger backend isleri JSF in scope u disindadir.

jsf-overview

MVC (Model View Controller) architecture

JSF view ve modeli birbirine baglar. View componenti bean property ile su sekilde birbirine bagladik ;

<h:inputText value="#{personBean.name}" />

FacesServlet , JSF frameworkunde controller olarak gorev yapmaktadir. Herhangi bir istek , action oldugunda FacesServlet calisacaktir ve hizmet verecektir.

<h:commandButton value="Login" action="welcome" />

Data conversion
Kullanici formdaki input alanlarina text(String) olarak giris yapar. Bununla birlikte business object (model) bu datayi number, date ya da farkli bir tipte bekliyor olabilir. JSF kolaylikla bu data conversion islemini yapabilir.

Validation & error handling
JSF , formdaki input alanlari icin kolaylikla validation/gecerlilik yapmamiza olanak saglar.
Kullanici uygun olmayan bir data girisi yaptiginda uyari/error mesaji gosterebiliriz.

Internationalization
JSF Internationalization problemine cozum sunar. Resource bundlelar ile Internationalization/ulusallastirma/farkli dil destegi ozelligini saglayabiliriz. Bu konuda ornek yapacagiz Continue reading JSF Framework Services & Encoding, Decoding

JSF Managed Bean

jsf_with_facade

Managed Bean dediğimiz kavram aslında Java Class’ları diyebiliriz. Yazılımımızda kullanacağımız Bean’ların belirli bir süresi vardır. Managed Bean’ların yaşam sürelerini sonraki derslerde görecek olduğumuz (Scope Kavramı) Scope’ler yardımı ile sağlanmaktadır. Bean’lerin yönetiminin sağlanması Managed Bean ile olur. Java Server Faces sayfalarımızda kullanacağımız Beanları eklemede de kullanırız.

  • Managed Bean , JSF tarafindan ulasilan/yonetilen/manage Java bean’leridir.
  • JSF 2.0 dan once managed beanler WEB-INF/faces-config.xml dosyasinda tanimlanmak zorundadir. JSF 2.0 ile birlikte Managed beanler @ManagedBean annotation’i kullanilarak yapilabilmektedir.
Managed Bean Tanımlamak
package _01.hellojsf;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean
//@ManagedBean(name="person")
@SessionScoped
public class PersonBean {

	private String name;
	private String password;

	public PersonBean(String name, String password) {
		super();
		this.name = name;
		this.password = password;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}
	
}

Continue reading JSF Managed Bean

JSF İle Merhaba Dünya

Java Server Faces Dersleri‘nde daha yeni adım attık ve bir önceki dersimizde Java Server Faces neydi kavramaya çalıştık. Bugün ilk JSF projemizi oluşturacağız ve yapısını incelemeye başlayalım.

IDE olarak Eclipse kullanmaktayım anlatacaklarım bu IDE üzerinden olacağı için farklı IDE’ler de menü ya da yapım şekli farklılık gösterebilir ama JSF sayfalarımızın yapısı kesinlikle aynıdır.

Hello Java Server Faces 

Yeni bir Dynamic Web Project olusturalim , daha sonrasinda projemize sag tiklayip Convert To Maven Project diyerek projemizi Maven projesi olarak donusturelim.

Jsf

pom.xml dosyamiza gerekli dependency tanimlarini ekleyelim ;

<dependencies>
		<dependency>
			<groupId>com.sun.faces</groupId>
			<artifactId>jsf-api</artifactId>
			<version>2.2.11</version>
		</dependency>
		<dependency>
			<groupId>com.sun.faces</groupId>
			<artifactId>jsf-impl</artifactId>
			<version>2.2.11</version>
		</dependency>
	</dependencies>

pom.xml gerekli jsf api ‘ leri ekliyoruz. Continue reading JSF İle Merhaba Dünya

38 the finalize()

Merhaba Arkadaslar,
Bir onceki yazimizda Java’daki Garbage Collection mekanizmasindan bahsetmistik. Bu yazimda ise bu mekanizma ile iliskili olan ve Object sinifinda bulunan finalize() metodundan bahsedecegim. Object sinifi Java’da sinif hiyerarsisinin tepesinde bulunmaktadir ve tum siniflar Object sinifini kalittigi icin her sinifin ornegi/instance’i bu finalize() metoduna sahip olacaktir.

Object sinifinda finalize metodunu inceledigimizde ;

	protected void finalize() throws Throwable {
	}

seklinde tanimlandigini gorururuz. Ici bos oldugu icin ilgili Sinifta bu metodu override etmemiz gerekir.

  • Garbage Collection mekanizmasi , Garbage Collector(GC) ile Heap’ten ilgili objeyi silmeden once, finalize() metodunu cagirir. Bunun bize ne gibi bir faydasi olabilir, obje silinmeden once yapmamiz gereken bir islem olabilir. Dosya kapatma islemi gibi bir islem olabilir veya silinmek uzere olan (eligible/uygun) objeyi silinmekten kurtarabiliriz (uneligible duruma getirebiliriz)
  • finalize() metodu GC tarafindan sadece bir kez cagrilabilir.
  • Eger GC bir objeyi silmeye karar verdiyse ve finalize() metodu kod icerisinden cagrilmadiysa, GC , finalize() metodunu cagirmayi garanti eder.
  • Hatirlaycagimiz gibi GC her objeyi silmek gibi bir garanti saglamaz. Dolayisiyla finalize() metodu hic calismayabilir.

Continue reading 38 the finalize()

37 Garbage Collection

Merhaba Arkadaslar bu yazimda Java da Garbage Collection mekanizmasindan bahsedecegim.

Oncelikle Garbage Collection nedir sorusuna yanit arayalim , Garbage Collection memory/kaynak yonetiminin adidir. Bir bilgisayar programi calistiginda ister Java ister C, C++ veya farkli bir dil olsun memory(hafiza) kullanimi soz konusudur.  C gibi dillerde pointer kullanimi, calloc() , malloc() ve free() gibi fonksiyonlarla memory yonetimi yapilirken Java da bu memory yonetimi Garbage Collector tarafindan saglanmaktadir.

Garbage Collector, otomatik Garbage Collection mekanizmasi ile memory-leak(bellek aciklari/sizintilari)’lere engel olarak Java’nin Robust (dayanikli, guclu,direncli) ozelligini saglamaya yardimci olur.
Ayrica C gibi dillerde olan free() fonksiyonu yerine, Javada Garbage Collector bu isi uslendigi icin bir nevi pointer mekanizmasindan kurtulmamiza destek saglar. Bu da Java’nin Simple(Basit) ozelligini saglamaktadir.
Java’nin ozelliklerine dair Akin Kaldiroglu hocamizin yazisini ve ingilizce kaynak olarak ilgili kaynagi inceleyebilirsiniz; Continue reading 37 Garbage Collection

36 More Overloading

Merhaba Arkadaslar,
Bir kac yazi boyunca Java’da Wrapper siniflari inceledik. Hatirlayacagimiz gibi Overloading konusunu onceki yazilarda incelemistik fakat daha derinlemesine inceleyecegimizi belirtmistim , bu yazida Overloading konusunu isin icine Wrapper siniflari ve Var-args degiskenlerini de katarak inceleyecegiz.

Overloading konusunun trickly olmasina neden olacak bir kac maddemiz sunlar olacak ;

  • Widening
  • Autoboxing
  • Var-args

Oncelikle kucuk bir hatirlatma icin basit bir kod ornegimizi gorelim ;

public class CoolClass {

	static void coolMethod(int x) {
		System.out.print("int ");
	}

	static void coolMethod(long x) {
		System.out.print("long ");
	}

	static void coolMethod(double x) {
		System.out.print("double ");
	}

	public static void main(String[] args) {

		byte b = 10;
		short s = 10;
		long l = 10;
		float f = 5.0f;

		coolMethod(b);
		coolMethod(s);
		coolMethod(l);
		coolMethod(f);
		// int int long double
	}
}

Continue reading 36 More Overloading

35 Wrapper Classes – 03

Merhaba Arkadaslar,
Bu yazimda  Boxing , AutoBoxing , Unboxing , AutoUnboxing  gibi konulardan ve giris olacak sekilde Wrapper siniflarda == (equality operatoru) ve equals metodundan bahsedecegim.

Boxing ve Unboxing islemleri , Wrapper siniflarin daha elverisli bir sekilde (convenient) kullanilmasini saglar.
Java 5 oncesinde bu ozellikler bulunmamaktaydi;

// Java 5 oncesi // Pre java 5		
Integer y = new Integer(1000);  // olustur
int x = y.intValue();          //ac
x++;                           // kullan
y = new Integer(x);            // tekrar olustur
System.out.println("y=" + y);  // ekrana bas

Java 5 sonrasinda ise su sekilde kullanilabilir ;

Integer y = new Integer(1000);  // olustur
y++;  // ac , kullan,tekrar olustur
System.out.println("y=" + y); //ekrana bas

Continue reading 35 Wrapper Classes – 03

34 Wrapper Classes – 02

Merhaba Arkadaslar,
Bir onceki yazida Wrapper siniflari incelemistik. Bu yazida Wrapper siniflara devam edecegiz ve wrapper siniflarda bulunan su metotlari inceleyecegiz.

  • valueof()
  • xxxValue()
  • parseXXX()

valueOf()
Wrapper siniflarda bulunan , static valueOf() metodunun bir kactane overloaded versiyonu vardir. valueOf() metodu String degeri veya primitive degeri Wrapper degere donusturur. Continue reading 34 Wrapper Classes – 02

33 Wrapper Classes – 01

Merhaba Arkadaslar, bu yazimda Java’da yer alan Wrapper siniflardan bahsedecegim. Wrapper’in turkce karsiligi sargi/sarici gibi anlama gelmektedir. Bu karsiligi aklimizda tutmakta fayda var. Oncelikle asagidaki tabloda Wrapper siniflar neler bunu gorebiliriz ;

OOP_WrapperClass

Dikkat edecek olursak Java’da yer alan tum primitive/ilkel tipler icin bir Wrapper sinif yer almaktadir. Bunlardan char haric digerlerinde sadece bas harfi buyuk char da ise Character sinifi olarak karsimiza cikmaktadir. Number abstract sinifi Byte, Short,Integer gibi Wrapper siniflarin super sinifidir.  Tum Wrapper siniflar Object sinifini kalitmaktadir. Dolayisiyla Wrapper turunden bir degisken primitive/ilkel tipte degildir.

Continue reading 33 Wrapper Classes – 01

32 Initialization Blocks

Merhaba Arkadaslar,
Bu yazimda Java’da bulunan initialization(ilk kullanima hazirlama) blocks konusundan bahsedecegim. Java da 2 turlu initialization block vardir.

  • static initialization block
  • instance initialization block

Bir sinif yuklediginde ilk olarak ve sadece 1 kez static initialization block calisir.st
Instance olusturulda her defasinda instance initialization block calisir.

Basit bir ornek yapalim ;

public class InititialTest {

	static {
		System.out.println("Static Initialization Block");
	}

	{
		System.out.println("Instance Initialization Block");
	}

	public static void main(String[] args) {

		System.out.println("Main -1 ");
		InititialTest initial = new InititialTest();
		InititialTest initial2 = new InititialTest();

	}

}

Continue reading 32 Initialization Blocks