Struts vs Struts2
Struts (juga dikenali sebagai Apache Struts atau Struts 1) ialah rangka kerja sumber terbuka merentas platform yang ditulis dalam Java, yang bertujuan untuk membangunkan aplikasi web Java EE. Ia adalah salah satu rangka kerja aplikasi web Java EE awal. Tetapi beberapa tahun kemudian, Struts2 (atau Struts versi 2) tiba, dan ia adalah rangka kerja aplikasi web yang berbeza dan sangat dipertingkatkan. Ia telah menangani beberapa isu yang dianggap sebagai kekurangan dalam versi awal. Kini, Struts2 sedang digunakan dengan sangat banyak untuk membangunkan aplikasi Java EE di dunia.
Apakah itu Struts?
Rangka kerja Struts (Struts 1) ialah salah satu rangka kerja aplikasi web awal untuk membangunkan aplikasi web Java EE. Rangka kerja Struts menggalakkan penggunaan seni bina MVC (Model-View-Controller). Ia adalah lanjutan daripada Java Servlet API. Craig McClanahan ialah pencipta asal Struts. Pada mulanya ia dikenali sebagai Jakaratha Struts dan dikekalkan di bawah Projek Jakarta dari Yayasan Perisian Apache. Ia dikeluarkan di bawah Lesen Apache 2.0. Rangka kerja Struts dipanggil rangka kerja berasaskan permintaan, dan ia terdiri daripada tiga komponen utama: pengendali permintaan, pengendali respons dan perpustakaan tag. URI Standard (Pengecam Sumber Seragam) dipetakan kepada pengendali permintaan. Pengendali tindak balas bertanggungjawab untuk memindahkan kawalan. Untuk mencipta aplikasi interaktif dengan borang, ciri yang ditawarkan oleh perpustakaan tag boleh digunakan. Struts menyokong aplikasi REST dan pelbagai teknologi seperti SOAP, AJAX, dll.
Apakah itu Struts2?
Rangka kerja Struts dilihat mengandungi had tertentu (terutamanya kekurangan pengasingan antara lapisan pembentangan, lapisan pengendalian permintaan dan model) oleh pembangun Java EE pada masa itu, dan akibatnya beberapa tahun kemudian Struts2 tiba. Sebenarnya, Struts2 berbeza sama sekali daripada Struts. Malah, mereka tidak berkongsi asas kod yang sama kerana Struts2 hanyalah hasil daripada menamakan semula rangka kerja WebWork 2.2 (iaitu komuniti WebWork dan Struts yang bekerja secara berasingan untuk beberapa lama akhirnya berganding bahu untuk menghasilkan Struts2). Keluaran stabil semasa ialah versi 2.2.3, yang dikeluarkan pada bulan Mei, 2011.
Apakah perbezaan antara Struts dan Struts2?
Salah satu daripada banyak masalah rangka kerja Struts ialah keperluan untuk pengaturcaraan kepada kelas abstrak dan bukannya antara muka. Ini telah diselesaikan oleh rangka kerja Struts2. Sebagai contoh, rangka kerja Struts memerlukan kelas Tindakan dilanjutkan daripada kelas asas abstrak, tetapi Tindakan Struts2 boleh melaksanakan antara muka Tindakan. Disebabkan oleh perbezaan dalam model benang antara dua versi isu keselamatan benang yang timbul dalam rangka kerja Struts berkenaan objek Tindakan tidak berlaku dalam rangka kerja Struts2. Alasannya ialah objek Tindakan Struts2 digunakan untuk setiap permintaan, manakala rangka kerja Tindakan dalam Struts hanya mempunyai satu contoh untuk mengendalikan semua permintaan untuk Tindakan itu. Tidak seperti rangka kerja Actions in Struts, Struts2 Actions tidak bergantung pada Servlet API.
Kebolehujian rangka kerja Struts2 secara perbandingan lebih tinggi daripada rangka kerja Struts. Anda boleh menguji Struts2 Actions hanya mengikut tiga langkah: instantiasi, tetapan sifat dan seruan kaedah. Input penuaian lebih mudah dalam rangka kerja Struts2 kerana sifat Tindakan digunakan sebagai sifat input, tanpa perlu menyimpan objek input kedua. Selain daripada sokongan untuk penyepaduan JSTL (yang terdapat dalam Struts), rangka kerja Struts2 boleh menggunakan OGNL (Bahasa Notasi Graf Objek) yang lebih berkuasa dan ekspresif. Untuk penukaran jenis, Strut dan Strut2 menggunakan Commons-Beanutils dan OGNL, masing-masing. Disebabkan penambahbaikan ini, rangka kerja Struts2 dianggap sebagai rangka kerja yang sangat matang dan ia sangat popular di kalangan pengaturcara Java EE. Sebaliknya, rangka kerja Struts kini dianggap usang.