Saya baru di StackExchange, tetapi saya pikir Anda akan dapat membantu saya.
Kami sedang membuat aplikasi Java Enterprise baru, menggantikan solusi JSP lawas. Karena banyak perubahan, UI dan bagian-bagian dari logika bisnis sepenuhnya akan dipikirkan ulang dan diterapkan kembali.
Pikiran pertama kami adalah JSF, karena ini adalah standar di Java EE. Awalnya saya memiliki kesan yang baik. Tetapi sekarang saya mencoba untuk mengimplementasikan prototipe fungsional, dan memiliki beberapa kekhawatiran serius tentang penggunaannya.
Pertama-tama, itu menciptakan campuran pseudo-HTML / CSS / JS tidak sah terburuk, paling berantakan yang pernah saya lihat. Itu melanggar setiap aturan tunggal yang saya pelajari dalam pengembangan web. Lebih jauh lagi, ini menjadi satu, yang seharusnya tidak begitu erat digabungkan: Layout, Desain, Logika dan Komunikasi dengan server. Saya tidak melihat bagaimana saya dapat memperpanjang output ini dengan nyaman, baik dengan styling dengan CSS, menambahkan permen UI (seperti hot-key yang dapat dikonfigurasi, widget drag-and-drop) atau apa pun.
Kedua, ini terlalu rumit. Kompleksitasnya luar biasa. Jika Anda bertanya kepada saya, itu adalah abstraksi yang buruk dari teknologi web dasar, pada akhirnya lumpuh dan tidak berguna. Apa manfaat yang saya miliki? Tidak ada, jika Anda memikirkannya. Ratusan komponen? Saya melihat sepuluh ribu cuplikan HTML / CSS, sepuluh ribu cuplikan JavaScript dan ribuan plug-in jQuery sebagai tambahan. Ini memecahkan banyak masalah - kita tidak akan memiliki jika kita tidak akan menggunakan JSF. Atau pola pengontrol depan sama sekali.
Dan Terakhir, saya pikir kita harus memulai dari awal, katakanlah 2 tahun. Saya tidak melihat bagaimana saya bisa menerapkan semua mock-up GUI pertama kami (Selain itu, kami tidak memiliki Ahli JSF di tim kami). Mungkin kita bisa meretasnya bersama-sama. Dan akan ada lebih banyak. Saya yakin kita bisa meretas retas kita. Tetapi pada titik tertentu, kita akan mandek. Karena segala sesuatu di atas tingkat layanan mengendalikan JSF. Dan kita harus memulai dari awal.
Saran saya adalah mengimplementasikan api REST, menggunakan JAX-RS. Kemudian buat klien HTML5 / Javascript dengan sisi klien MVC. (atau sedikit rasa MVC ..) Ngomong-ngomong; kita akan memerlukan api REST, karena kami juga mengembangkan front-end Android parsial.
Saya ragu, JSF adalah solusi terbaik saat ini. Ketika internet berkembang, saya benar-benar tidak mengerti mengapa kita harus menggunakan 'rake' ini.
Sekarang, apa pro / kontra? Bagaimana saya bisa menekankan poin saya untuk tidak menggunakan JSF? Apa poin kuat menggunakan JSF atas saran saya?
sumber
Jawaban:
Setidaknya ada satu alasan yang sangat bagus untuk mempertimbangkan JSF.
Ini adalah bagian standar dari tumpukan Java EE, dan karenanya akan tersedia - dan berfungsi - di SEMUA wadah Java EE untuk waktu yang sangat, sangat lama. Dan dipelihara juga, tanpa Anda perlu melakukannya jika Anda telah mematuhi secara ketat spesifikasi Java EE.
Jika ini merupakan masalah bagi Anda, maka Anda harus mempertimbangkannya. Sebagian besar perangkat lunak hidup lebih lama dari yang diperkirakan oleh perancang mereka, terutama jika dipertimbangkan saat ditulis.
sumber
Anda tampaknya sudah memutuskan tentang kontra, dan saya harus setuju dengan beberapa dari mereka (itu tidak cukup tata letak dan logika terpisah, dan HTML yang dihasilkan sering mengerikan), tetapi tidak setuju pada yang lain (jika Anda menggunakan Faset, yang saya akan sangat merekomendasikan, maka output pasti harus valid).
Jadi, inilah beberapa pro:
Tapi tentu saja tidak ada kelebihan ini yang begitu besar sehingga Anda harus menggunakan JSF di atas beberapa kerangka kerja lain yang sudah berpengalaman dengan tim Anda.
sumber
JSF adalah kerangka kerja web stateful yang memadai untuk Java yang merupakan standar yang berarti didukung oleh banyak vendor besar (termasuk FOSS). Ini memiliki dukungan perpustakaan pihak ke-3 yang kuat (PrimeFaces, IceFaces dll). Namun, pada dasarnya 'mematahkan web' karena sifatnya yang stateful (dan banyak hal lainnya). Lihat perbandingan Matt Raible tentang kerangka kerja web berbasis JVM , JSF biasanya mendekati yang terakhir.
Sunting - dengan JSF 2.2 - Anda dapat mulai berpendapat bahwa itu tidak merusak web sebanyak dulu. Sebenarnya integrasi HTML5 tidak semuanya mengerikan :-).
sumber
Kami memiliki aplikasi warisan JSP / Struts 1.0. Kami melewatkan Struts 2, JSF, dan segala sesuatu yang telah terjadi sejak Struts 1 dan melompat ke Spring 3.0. Ini memiliki dukungan (dan komunitas aktif) untuk daftar keinginan kami - Eclipse IDE, MVC dan REST. Plus kami membuang Javascript / ajax homegrown vintage kami untuk jquery.
YMMV tetapi Spring telah menjadi migrasi yang lancar bagi kami.
sumber