فریم ورک Spring چیست؟ + مزایا و معایب اسپرینگ
فریم ورک اسپرینگ Spring به دلیل وجود یکسری مشکلات در مسیر بلوغ زبان جاوا به وجود آمد. قبل از ظهور شرکت EJB، برنامه نویسان جاوا برای توسعه وب اپلیکیشن از JavaBeans استفاده می کردند. اگرچه JavaBeans در طراحی و توسعه رابط کاربری (UI) کمک دست برنامه نویسان جاوا بود اما مشکلاتی نظیر عدم امنیت و ضعف در مدیریت تراکنش ها محدودیت هایی را برای توسعه دهندگان ایجاد می کرد.
به همین دلیل توسعه دهندگان جاوا تصمیم گرفتند راه حلی برای رفع این مشکلات پیدا کنند که در نهایت به طراحی فریم ورکی به نام اسپرینگ Spring منجر شد. در این مقاله با نگاهی عمیق تر فریم ورک اسپرینگ در جاوا را بررسی کرده و معایب و مزایای آن را نیز به طور مختصر معرفی خواهیم کرد.
معرفی فریم ورک Spring
همانطور که پیش تر اشاره کردیم برنامه نویسان جاوا در توسعه اپلیکیشن های سازمانی امن و پرقدرت با مشکلات بسیاری روبرو بودند. شرکت EJB به عنوان یک راه حل در نظر گرفته شد؛ این شرکت در حقیقت با توسعه کامپوننت های جاوا فرآیند طراحی اپلیکیشن های سازمانی را برای برنامه نویسان آسان تر کرد.
البته توسعه اپلیکیشن های سازمانی با EJB اصلاً کار راحتی نبود، چرا که برنامه نویس برای کدنویسی باید عملیات های مختلفی نظیر ساخت Home، رابط های ریموت و متدهای Lifecycle callback را پیاده سازی می کرد که خیلی پیچیده و زمان بر به نظر می رسید.
در همان زمان فریم ورک اسپرینگ به عنوان یک راه حل برای رفع مشکلات و پیچیدگی های EJB معرفی شد. این فریم ورک با ارائه تکنیک های جدیدی نظیر برنامه نویسی جنبه گرا (AOP)، آبجکت های ساده و قدیمی جاوا (POJO) و تزریق وابستگی (DI) موجب آسان شدن توسعه اپلیکیشن های سازمانی می شود و به نوعی تمام موانع موجود در EJB را مرتفع ساخته است.
اسپرینگ یک فریم ورک سبک و متن باز است که به توسعه دهندگان جاوا EE7 در طراحی و ساخت اپلیکیشن های سازمانی معتبر، مقیاس پذیر و ساده یاری می رساند. در حقیقت فریم ورک Spring تمرکز اصلی خود را بر روی مدیریت پروژه های بیزنسی گذاشته است. طراحی و توسعه وب اپلیکیشن با استفاده از Spring به نسبت فریم ورک های قدیمی جاوا و API های مختلف نظیر اتصال دیتابیس جاوا (JDBC)، صفحات سرور جاوا (JSP) و جاوا سرولت (Servlet) به مراتب آسان تر است.
به عبارت دیگر فریم ورک Spring مجموعه ای از چند فریم ورک زیرمجموعه ای دیگری نظیر اسپرینگ AOP، اسپرینگ ORM، اسپرینگ Web Flow و اسپرینگ MVC است که با نام لایه های فریم ورک Spring نیز شناخته می شوند. در حقیقت برنامه نویس می تواند برای توسعه اپلیکیشن به طور جداگانه از هر کدام از این ماژول ها استفاده کند، علاوه بر این ادغام ماژول ها به منظور تقویت عملکرد وب اپلیکیشن ها نیز امکان پذیر است.
تکامل فریم ورک اسپرینگ
فریم ورک Spring اولین بار در سال 2004 منتشر شد؛ سپس نسخه 2.0 که در آن استفاده از XML namespace و AspectJ پشتیبانی می شد به جامعه برنامه نویسان معرفی گردید. پس از آن نسخه Spring 2.5 همراه با قابلیت پشتیبانی از پیکربندی تفسیر محور (Annotation-Driven) و ورژن 3.0 با پیکربندی مبتنی بر جاوا (Java-based @Configuration) در دسترس برنامه نویسان قرار گرفتند. نسل چهارم این فریم ورک به نام Spring 4.0 نیز از تکنولوژی های جاوا 8 و جاوا EE7 پشتیبانی می کند.
اگرچه امکان استفاده از اسپرینگ با ورژن های قدیمی جاوا همچنان در دسترس توسعه دهندگان قرار دارد اما حداقل تکنولوژی مورد نیاز برای کار با آن Java SE 6 است. علاوه بر این نسخه 4.0 فریم ورک اسپرینگ از امکانات Java EE7 نظیر سرویس های پیامرسان (JMS2.0) و JPA 2.1 و سرولت (Servlet3.1) و JCache و Bean Validation نیز پشتیبانی می کند.
در آخرین نسخه از این فریم ورک به نام Spring 5.0 بهینه سازی های زیادی بر روی آن اعمال شده است، برای مثال کمپانی تولید کننده اقدام به حذف برخی از کلاس ها و متدها کرده و بروز رسانی هایی در بخش کانتینرها انجام داده است.
معماری فریم ورک Spring
فریم ورک Spring دارای 7 ماژول است که با نام های :
- Spring Core
- Spring AOP
- Spring Web MVC
- Spring DAO
- Spring ORM
- Spring context
- Spring Web flow
در درون این فریم ورک تعبیه شده اند و با ایجاد پلتفرم های مختلف امکان توسعه اپلیکیشن های سازمانی را در اختیار برنامه نویسان قرار می دهد. برای مثال می توان از ماژول Spring Web MVC برای توسعه اپلیکیشن های مبتنی بر معماری MVC استفاده کرد.
مزایای فریم ورک Spring
1- استفاده از POJO :
همانطور که پیش تر به آن اشاره کردیم با استفاده از فریم ورک Spring می توان اپلیکیشن های سازمانی باکیفیتی تولید کرد؛ این موضوع با اتکا به Object های قدیمی و ساده جاوا (Plain Old Java Objects) یا همان POJO امکان پذیر است.
استفاده از POJO در توسعه اپلیکیشن بدین معنی است که دیگر نیازی به یک کانتینر سازمانی نظیر سرور اپلیکیشن نخواهید داشت. علاوه بر این امکان استفاده از کانتیرهای قدرتمند Servlet نظیر تامکت را نیز در دسترس برنامه نویسان قرار داده و آنها را از شر قراردادهای EJB خلاص می کند. این موضوع همچنین باعث هر چه سبک تر شدن این فریم ورک می شود.
2- انعطاف پذیری پیکر بندی :
فریم ورک Spring از پیکربندی XML و جاوا Annotation استفاده می کند؛ به همین دلیل انعطاف پذیری بیشتری برای توسعه اپلیکیشن های سازمانی در اختیار برنامه نویسان قرار می دهد.
3- عدم نیاز به سرور :
از آنجایی که فریم ورک اسپرینگ کانتینرهای سبکی را در اختیار برنامه نویسان قرار می دهد، بنابراین بدون نیاز به وب سرور یا اپلیکیشن سرور نیز به فعالیت خود ادامه می دهد.
4- استفاده از Spring AOP :
ماژول AOP در این فریم ورک مزیت های بسیاری برای توسعه دهندگان به ارمغان می آورد، برای مثال امکان استفاده از یونیت های Compilation یا کلاس لودرهای مختلف را در اختیار آنها قرار می دهد. علاوه بر این با استفاده از کانتینر loC عملیات تزریق وابستگی را انجام می دهد که باعث پیکربندی نرمال aspect ها می شود.
5- عدم نیاز به یادگیری دیگر منابع :
یکی از مزیت های فریم ورک Spring در توسعه اپلیکیشن های سازمانی این است که می توانید تمام کارها را با آن انجام دهید. برای مثال این فریم ورک از تکنولوژی های بسیاری نظیر تایمرهای JDK، فریم ورک های ORM و جاوا EE استفاده می کند. بنابراین توسعه دهندگان برای تولید اپلیکیشن مجبور نخواهند بود تا تمام فریم ورک ها و تکنولوژی های دیگر را جداگانه یاد بگیرند.
6- ماژول های فراوان :
فریم ورک اسپرینگ قابلیت ماژولار دارد، بدین معنی که امکان انتخاب کلاس یا پکیج را در اختیار برنامه نویسان قرار می دهد. تعداد پکیج و کلاس ها در این فریم ورک آنقدری هست که برنامه نویس بدون هیچ مشکلی قادر به انتخاب می باشد.
7- تست گیری راحت:
یکی از مزیت های تزریق وابستگی فریم ورک Spring این است که امکان آزمایش و تست پروژه به راحتی امکان پذیر است. در حقیقت تزریق دیتای آزمایشی از طریق javabean POJO به راحتی در دسترس برنامه نویسان قرار می گیرد.
8- کنترل وارونگی و API :
فریم ورک Spring با هدف تفسیر exception ها در رابط برنامه سازی JBDC، وارونگی و API را کنترل می کند.
معایب فریم ورک اسپرینگ
1- پیچیدگی :
یکی از ایراداتی که به این فریم ورک وارد می شود پیچیدگی بیش از حد آن است. به عبارت دیگر Spring دارای 2400 کلاس و 49 ابزار کاربردی دیگر است که در واقع تمرکز برنامه نویسان برای توسعه اپلیکیشن را به هم می زند.
2- یادگیری دشوار :
اگر به تازگی وارد عرصه برنامه نویسی شده باشید، یادگیری فریم ورک Spring برایتان دشوار است. در واقع به علت متدهای جدید برنامه نویسی و جزییات بسیار، برنامه نویسان مبتدی هنگام یادگیری این فریم ورک با مشکلاتی روبرو خواهند شد.
3- ازدیاد بیش از حد مکانیزم های موازی :
اگرچه این موضوع به عنوان یک مزیت در نظر گرفته می شود چرا که به برنامه نویسان قدرت انتخاب بیشتری می دهد، اما در برخی اوقات نیز باعث گیج شدن آنها می شود. به عبارت دیگر برنامه نویس باید بداند که در یک موقعیت خاص از کدام متد یا کلاس استفاده کند.
4- XML های بسیار :
اگر سابقه کار با فریم ورک Spring را داشته باشید به سرعت خواهید فهمید که توسعه اپلیکیشن از طریق این فریم ورک منوط به استفاده از XMLهای بسیار است. بنابراین اگر به تازگی وارد حوزه برنامه نویسی شده اید باید خود را برای کار با XMLهای موجود در این فریم ورک آماده کنید.
5- کمبود منابع کمکی و راهنما :
برای برخی از موضوعات مهم نظیر حملات Cross-Site Scripting یا ارسال درخواست های تقلبی به سایت مثل حملات DDOS، هیچ منابع کمکی در دسترس توسعه دهندگان قرار ندارد. علاوه بر این چند حفره امنیتی نیز در آن مشاهده می شود!
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.