معرفی فریمورک Spring جاوا

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

معرفی فریمورک Spring جاوا


Spring framework


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


J2EE چیست؟


معرفی فریمورک Spring جاوا

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

معرفی فریمورک Spring جاوا


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 جاوا

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

شاید با خواندن این مطلب علامت سوال هایی در ذهن شما ایجاد شده باشد که در مطالب بعدی در مورد spring آنها را برطرف خواهیم کرد Itpro باشید

نویسنده: مهدی عادلی فر

منبع: Itpro

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد.

#آموزش_sptring #ویژگی_های_spring_چیست #spring_چیست؟ #برنامه_نویسی_جنبه_گرا #برنامه_نویسی_وب_با_جاوا #آموزش_spring_در_جاوا #inversion_of_control_چیست؟ #dependency_injection_چیست؟ #یادگیری_زبان_برنامه_نویسی_جاوا
4 نظر
حسن مقدم

سلام ممنون استفاده کردم منتظر ادامه مطلب هستم

soheil One

سلام. عالی بوود . مرسی

AlA

سلام ممنون بابت توضیحتون

2تا سوال داشتم درباره جنبه گرا بودن

یه مطلبی یه جا خوندم که نوشته بود یکی از بهترین زبانهای مکمل پایتون جاوا هست ولی پایتون شی گراست و spring جنبه گرا اینا چه تفاوتی باهم داره؟!

سوال دوم راجب انگولار2 هست تو این مطلب نوشتید که تو spring کلاسها مستقل از هم هستند و نمیشه اینترفیسی رو implement کرد. آیا این معماری شبیه به انگولار2 هست؟؟ چون داخل انگولار با توجه کاملا ماژولار بودن میشه implement انجام داد.

سوالم رو درست پرسیدم؟

مهدی عادلی فر

سلام به شما دوست عزیز

جاوا هم شی گرا هست ولی spring یک مکانیزم جنبه گرا است که شی گرایی یعنی همه چیز کلاس و شی است ولی جنبه گرا بودن را در متن توضیح داده ایم. بنده در متن جایی نگفتم که نمیشه اینترفیس رو implement کرد ولی spring این کار را انجام نداده و از مکانیزم سیم کشی یا wiring استفاده کرده است. البته میشه یک اینترفیس رو هم پیاده سازی کرد ولی جزو اصول spring نیست.

انگولار به صورت گسترده از dependency injection استفاده کرده است. spring هم از این مفهوم استفاده می کند.

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره تابستانه می تونی امروز ارزونتر از فردا خرید کنی ....