JavaServer Faces

**JavaServer Faces (JSF)** adalah spesifikasi Java untuk membangun antarmuka pengguna untuk aplikasi web. JSF merupakan bagian dari Java Platform, Enterprise Edition.

JSF 2 menggunakan Facelets sebagai sistem templat *default*nya. Teknologi tampilan lainnya, seperti XUL, juga dapat digunakan. Sementara itu, JSF 1.x menggunakan JavaServer Pages (JSP) sebagai sistem templat *default*nya.

## Versioning JSF
* JSF 2.1 (2010-10-22) — Versi saat ini. Rilis kedua dari 2.0. Hanya sangat sedikit perubahan spesifikasi.
* JSF 2.0 (2009-06-28) — Rilis untuk kemudahan penggunaan, peningkatan fungsi, dan performa. Bersamaan dengan Java EE 6.
* JSF 1.2 (2006-05-11) — Banyak perbaikan untuk inti sistem dan API. Bersamaan dengan Java EE 5. Awal adopsi ke Java EE.
* JSF 1.1 (2004-05-27) — Rilis perbaikan *bug*. Tidak ada perubahan spesifikasi.
* JSF 1.0 (2004-03-11) — Rilis spesifikasi awal.

## Cara kerja
Javaserver Faces berdasarkan model perancangan antarmuka pengguna berbasis komponen, menggunakan berkas XML yang disebut templat *view* atau *view* Facelets. Permintaan (*request*) diproses oleh FacesServlet, yang memuat templat *view* yang sesuai, membangun *tree* komponen, memproses berbagai *event*, dan me-*render* respons (umumnya HTML) kepada klien. *State* dari komponen UI (dan beberapa objek lain) disimpan pada setiap akhir *request* (dinamakan **stateSaving**), dan dikembalikan pada saat pembuatan selanjutnya dari *view* tersebut. Ada beberapa jenis penyimpanan *state*, termasuk penyimpanan *state* *client-side* dan *server-side*.

## Pengembangan terbaru
Facelets (yang sebelumnya dirancang secara khusus untuk JavaServer Faces) telah diadopsi menjadi teknologi *view* resmi untuk JSF 2.0. Ini menghilangkan konflik daur-hidup yang ada dalam JSP, dan mengharuskan pengembangannya ditangani oleh pengembang Java. Facelets memungkinkan pembuatan komponen/tag secara mudah dengan tidak menggunakan kode Java melainkan menggunakan markah XML, untuk menanggapi keluhan tentang JSF 1.x.

Pengembangan JSF yang baru juga menyediakan aksesibilitas yang luas untuk notasi **Java 5** seperti @ManagedBean, @ManagedProperty dan @FacesComponent yang menghilangkan perlunya faces-config.xml dalam semua ekstensi framework. Navigasi juga telah disederhanakan. Pergantian halaman dapat dilakukan dengan sederhana, dengan cara menuliskan nama View/Facelet yang diinginkan.

Penambahan *Partial State Saving* dan pemutakhiran DOM adalah bagian dari dukungan bawaan Ajax standar.

Rilis terbaru dari JSF telah mendukung penanganan sumber daya (*resource*) seperti gambar, CSS dan JavaScript, memungkinkan *artifact* dimasukkan dalam *library* komponen, memisahkan menjadi berkas JAR, atau meletakkan pada tempat yang konsisten pada aplikasi web. Termasuk penamaan logika dan versi dari sumber daya.

## Referensi
* Komunitas JSF - Halaman Utama & Referensi 
* Halaman perkenalan Teknologi JavaServer Faces oleh Sun
* Spesifikasi JSF
* JSR 314 (JSF 2.0 dan JSF 2.1)
* JSR 252 (JSF 1.2)
* JSR 127 (JSF 1.0 dan 1.1)
* JSR 316 (Perubahan ke JSF 2.0 pada Java EE 6)

### Catatan

## Pranala luar
*  Halaman proyek untuk JSF pada java.net
* Core Servlets JSF Tutorials  Tutorial dengan Kode Sumber
* ICEfaces Situs resmi Proyek Sumber Terbuka ICEfaces
* JSR 276 *Design-Time* Metadata untuk Komponen JavaServer Faces
* James Holmes' JSF Resources Daftar lengkap dari artikel JSF, entri blog, tutorial, dan lain-lain
* JSF Central Komunitas JavaServer Faces
* Tutorial Java EE 4 Chapter 17: JavaServer Faces Technology
* Tutorial Java EE 5 Chapter 10: JavaServer Faces Technology
* Tutorial Java EE 6 Chapter 4: JavaServer Faces Technology
* Katalog JSF Tutorials, Contoh dan Artikel 
* JSF Matrix daftar beragam penerapan JSF dan fitur-fiturnya
* Tinjauan singkat pada perubahan terkini ke JSF 2.0 yang akan digambarkan dalam Java EE 6
* PrimeFaces Situs resmi PrimeFaces