Struts vs Struts2
Struts (همچنین به عنوان Apache Struts یا Struts 1 شناخته می شود) یک چارچوب متن باز بین پلتفرمی است که به زبان جاوا نوشته شده است و برای توسعه برنامه های وب Java EE در نظر گرفته شده است. این یکی از چارچوب های برنامه کاربردی وب اولیه Java EE بود. اما چند سال بعد، Struts2 (یا Struts نسخه 2) وارد شد، و این یک چارچوب برنامه وب کاملا متفاوت و بسیار بهبود یافته بود. این به چند مورد اشاره کرده بود که در نسخه اولیه به عنوان نقص تلقی می شد. اکنون، Struts2 به شدت برای توسعه برنامههای Java EE در جهان استفاده میشود.
Struts چیست؟
فریم ورک Struts (Struts 1) یکی از فریم ورک های اولیه برنامه وب برای توسعه برنامه های کاربردی وب Java EE بود.چارچوب Struts استفاده از معماری MVC (Model-View-Controller) را تشویق می کند. این افزونه Java Servlet API است. کریگ مک کلانهان خالق اصلی Struts است. در ابتدا با نام Jakaratha Struts شناخته می شد و تحت پروژه جاکارتا بنیاد نرم افزار آپاچی نگهداری می شد. تحت مجوز آپاچی 2.0 منتشر شده است. چارچوب Struts یک چارچوب مبتنی بر درخواست نامیده می شود و از سه جزء اصلی تشکیل شده است: یک کنترل کننده درخواست، یک کنترل کننده پاسخ و یک کتابخانه برچسب. URI استاندارد (شناسه منبع یکسان) به یک کنترل کننده درخواست نگاشت می شود. کنترل کننده پاسخ مسئول انتقال کنترل است. برای ایجاد برنامه های تعاملی با فرم ها، می توان از ویژگی های ارائه شده توسط کتابخانه برچسب استفاده کرد. Struts از برنامه های REST و فناوری های مختلف مانند SOAP، AJAX و غیره پشتیبانی می کند.
Struts2 چیست؟
چارچوب Struts حاوی محدودیتهای خاصی بود (عمدتاً عدم تفکیک بین لایه ارائه، لایه رسیدگی به درخواست و مدل) توسط توسعهدهندگان Java EE در آن زمان، و در نتیجه چند سال بعد Struts2 وارد شد.در واقع، Struts2 کاملاً با Struts متفاوت بود. در واقع، آنها حتی از یک پایه کد مشترک استفاده نکردند زیرا Struts2 صرفاً نتیجه تغییر نام چارچوب WebWork 2.2 بود (یعنی جوامع WebWork و Struts که برای مدتی جداگانه کار می کردند در نهایت دست به دست هم دادند تا Struts2 را ارائه کنند). نسخه پایدار فعلی آن نسخه 2.2.3 است که در می 2011 منتشر شد.
تفاوت بین Struts و Struts2 چیست؟
یکی از مشکلات فراوان چارچوب Struts نیاز به برنامه نویسی برای کلاس های انتزاعی به جای رابط ها بود. این توسط چارچوب Struts2 حل شد. برای مثال، چارچوب Struts نیاز به گسترش کلاسهای Action از کلاسهای پایه انتزاعی داشت، اما Struts2 Actions میتواند یک رابط Action را پیادهسازی کند. با توجه به تفاوتهای موجود در مدل threading بین دو نسخه، مسائل ایمنی رشتهای که در چارچوب Struts در مورد اشیاء Action مطرح شد، در چارچوب Struts2 رخ نمیدهد. دلیل آن این است که اشیاء اکشن Struts2 برای هر درخواست نمونه سازی می شوند، در حالی که یک چارچوب Action in Struts تنها یک نمونه برای رسیدگی به تمام درخواست های آن Action دارد.برخلاف چارچوب Actions in Struts، Struts2 Actions به Servlet API وابسته نیستند.
آزمایش چارچوب Struts2 نسبتاً بالاتر از چارچوب Struts است. شما می توانید Struts2 Actions را به سادگی با دنبال کردن سه مرحله آزمایش کنید: نمونه سازی، تنظیم ویژگی ها و فراخوانی متدها. برداشت ورودی در چارچوب Struts2 آسانتر است زیرا از ویژگیهای Action به عنوان ویژگیهای ورودی استفاده میشود، بدون اینکه نیازی به نگه داشتن یک شی ورودی دوم باشد. جدا از پشتیبانی از ادغام JSTL (که در Struts وجود دارد)، چارچوب Struts2 میتواند از OGNL قویتر و گویاتر (زبان نمادگذاری نمودار شی) استفاده کند. برای تبدیل نوع، Strut و Strut2 به ترتیب از Commons-Beanutils و OGNL استفاده می کنند. به دلیل این پیشرفت ها، چارچوب Struts2 یک فریمورک بسیار بالغ در نظر گرفته می شود و در بین برنامه نویسان Java EE بسیار محبوب است. از سوی دیگر، چارچوب Struts اکنون منسوخ شده است.