مهدی عادلی فر
بنیانگذار توسینسو و برنامه نویس

اسپرینگ چیست؟ معرفی فریمورک Spring در جاوا به زبان ساده

در سری آموزش های زبان جاوا گفتیم که زبان جاوا یک زبان قدرتمند است که می توان با آن برای فریمورک های مختلف و تکنولوژی های متفاوت برنامه نویسی کرد. یکی از بستر هایی که امروز برنامه نویسی در آن بیشتر از بقیه مورد استفاده قرار می گیرد بستر وب می باشد. دلایل محبوبیت برنامه نویسی در بستر وب می تواند پیشرفت ارتباطات اینترنتی و سهولت استفاده از آن در همه دستگاه ها از جمله کامپیوتر های لپتاپ و تبلت و موبایل و ... باشد. اخیرا هم شاهد ظهور اینترنت اشیا می باشیم. با این تفاسیر زبان جاوا هم باید در این بستر خیلی مهم حرفی برای گفتن داشته باشد.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
وب سایت توسینسو

Spring framework

زبان جاوا برای برنامه نویسی وب فریمورک ها و تکنولوژی های بسیار متنوعی ارائه کرده است که معروفترین و محبوب ترین آنها فریمورک spring می باشد. البته این تکنولوژی فقط برای وب نیست و با آن می توان برنامه های مختلفی نوشت. Spring در برنامه نویسی تجاری جاوا معروف ترین فریمورک است و میلیون ها برنامه نویس با آن کار می کنند. دلایل استفاده این همه برنامه نویس از این فریمورک performance بسیار بالا و تست راحت و معماری آن است. فریمورک spring یک پلتفرم اوپن سورس جاوا است که توسط Rod Johnson در سال 2003 نوشته شده است. با استفاده از ویژگی های spring می توان هر برنامه جاوایی را نوشت. با این حال قابلیت هایی را برا نوشتن برنامه های تحت وب تحت پلت فرم Java EE دارد. هدف فریمورک spring این است که برنامه نویسی J2EE را آسان تر کند و با استفاده از مدل برنامه نویسی POJO، برنامه نویسی را گسترش دهد. قبل از این که به ادامه بحث در مورد spring بپردازیم دو کلمه J2EE و POJO را معرفی می کنیم.


J2EE چیست؟

J2ee مخفف java to platform, enterprise edition می باشد. که در برنامه نویسی نرم افزار های سازمانی و تجاری بسیار مورد استفاده قرار می گیرد. این پلتفرم API ها و روتین هایی برای برنامه نویسی نرم افزار های سازمانی فراهم می آورد که از جمله آنها API هایی برای کار با شبکه و وب سرویس ها می باشد. j2ee علاوه بر شکل استاندارد جاوا ویژگی هایی مانند ORM ها و معماری چند لایه و وب سرویس ها را نیز دارا می باشد. برای برنامه نویسی j2ee باید از زبان جاوا استفاده شود. در حال حاضر نسخه 7 جاوا مورد استفاده قرار می گیرد. یکی از مهم ترین API های j2ee ، servlet می باشد که مربوط به درخواست های http و پردازش آن ها است که امکان نوشتن برنامه های وب بر پایه سرور جاوایی را فراهم می کند. و صفحاتی که با jsp طراحی می شوند از این امکان بهره می برند.

وب سایت توسینسو

POJO چیست؟

POJO مخفف Plain Old Java Object می باشد. این کلمه به اشیائی اطلاق می شود که کلاس آنها به هیچ کلاس دیگری وصل نیست و از طرف هیچ کلاسی محدود نشده اند. در جاوا به صورت واضح به کلاس هایی گفته می شود که از هیچ کلاس دیگری extend نشده باشند و هیچ اینترفیسی را implement نکرده باشند. همچنین قید های هیچ کلاسی را نداشته باشند.

ویژگی های spring

Spring بر پایه برنامه نویسی جنبه گرا (aspect oriented) و معکوس کردن کنترل (inversion of control) طراحی شده است. Spring به شکل ماژولار طراحی شده است و از ماژول های مختلف برای رفع نیاز برنامه نویسان استفاده می کند. تست کردن در این فریمورک ساده است. چون کدهایی که شما می نویسید ربطی به محیط ندارند. همچنین قسمت وب spring بر مبنای معماری mvc ساخته شده است.

Dependency Injection

یکی از تکنولوژی هایی که spring به خاطر آن مشهور شده است Dependency injection با استفاده از Inversion of Control می باشد به خاطر این که معنی فارسی این عبارات گویای همه چیز نیست از معادل انگلیسی آن استفاده می کنیم برای مثال تزریق وابستگی ها و معکوس کردن کنترل شاید منظور را نرساند. دوست خوبم مهندس احمدی در این لینک این مفاهیم را در زبان سی شارپ توضح داده اند. Inversion of control یک مفهوم کلی است و به شکل های گوناگونی می توان آن را توضیح داد و dependency injection یک مثال از inversion of control می باشد.

زمانی که ما یک برنامه جاوا می نویسیم کلاس ها و اشیا باید تا جایی که جا داشته باشد از هم مستقل باشد. مستقل بودن کلاس ها از هم به استفاده مجدد از کد بسیار کمک می کند. و همچنین اگر شما کد را تغییر دهید چون بقیه کلاس ها با هم وابستگی کمی دارند نیاز به تغییر در کل نمی شود. ولی اگر همه کلاس ها به هم وابسته باشد وقتی که یک کلاس را تغییر می دهید به صورت دومینو باید بقیه کلاس ها را نیز تغییر دهید و این بسیار زمانبر و هزینه بر می باشد. dependency injection برای این که کلاس ها از یکدیگر مستقل باشند ولی از یکدیگر استفاده کنند بسیار کمک می کند.

وب سایت توسینسو

Aspect oriented programming یا برنامه نویسی جنبه گرا

همانطور که گفتیم یکی از خصوصیات Spring برنامه نویسی جنبه گرا می باشد. حال این برنامه نویسی جنبه گرا چیست؟ گاهی اوقات باید قابلیت هایی را به برنامه اضافه کنیم که در چند بخش از برنامه عمل می کنند. برای مثال ما امنیت را در برنامه باید در قسمت های مختلفی به کار ببریم. به این نوع قابلیت ها cross-cutting concern گفته می شود به معنی قید هایی که قسمت های مختلف باید آن ها را رعایت کنند. معمولا cross-cutting concern ها جدا از منطق اصلی برنامه می باشند.

برای مثال لاگ گرفتن عملیات ها و یا کش کردن یا امنیت جزء اصلی منطق برنامه نیستند ولی کارهایی هستند که باید آنها را انجام داد. در برنامه نویسی شی گرا جزء اصلی برنامه شی و کلاس می باشد ولی در برنامه نویسی جنبه گرا جزء اصلی جنبه است. همانطور که dependency injection به شما کمک می کند که کلاس ها و اشیا با هم وابستگی نداشته باشند برنامه نویسی جنبه گرا هم کمک می کند که منطق اصلی برنامه از cross-cutting concern ها جدا باشد.شاید با خواندن این مطلب علامت سوال هایی در ذهن شما ایجاد شده باشد که در مطالب بعدی در مورد spring آنها را برطرف خواهیم کرد Itpro باشید


مهدی عادلی فر
مهدی عادلی فر

بنیانگذار توسینسو و برنامه نویس

مهدی عادلی، بنیان گذار TOSINSO. کارشناس ارشد نرم افزار کامپیوتر از دانشگاه صنعتی امیرکبیر و #C و جاوا و اندروید کار می کنم. در زمینه های موبایل و وب و ویندوز فعالیت دارم و به طراحی نرم افزار و اصول مهندسی نرم افزار علاقه مندم.

نظرات