View Full Version : سوال: Annotations و Deployment
Danial_abdi
شنبه 02 مرداد 1389, 01:41 صبح
این دوتا به چه کار میایند؟ فرقشان چی است؟
Annotations و Deployment
cups_of_java
شنبه 02 مرداد 1389, 22:24 عصر
این دو مفهوم اساسن با هم متفاوتند و ربطی به هم ندارن.
Deployment: به فرایندی میگن که شما کدهای اجرایی برنامه رو در محیطی قرار میدی یا نصب میکنی که قابل اجرا باشند. یعنی به اجرا در آوردن برنامه. این واژه در مورد برنامه هایی به کار میره که برای اجرا نیاز به یک محیط مدیریت شده دارن. مثلن سرورهای نرم افزاری: مثل Servlet Container ها یا J2EE Containerها...
شما برای راه اندازی برنامه فایل های اجرایی رو در سرور قرار می دی و یک سری تنظیمات مربوطه رو هم انجام میدی تا سرور بتونه برنامه شما رو راه اندازی کنه و در حالت اجرا قرار بده.
Annotation: اگر این لغت رو نشانه گذاری معنی کنیم، نشانه گداری های داخل کد برنامه رو Annotation میگن. این نشانه گذاری ها، با کد معمول فزق دارن چون قالبن متا اطلاعاتی هستند در مورد خود کد! مثلن شما یک متد رو می تونی نشانه گذاری کنی که این متد یک متدی هست که باید در مواقع تست برنامه فراخوانی بشه! این یک اطلاعات اضافی در مورد اون متد هست که می تونه با Annotation روی متد، برچسب زده بشه.
Danial_abdi
یک شنبه 03 مرداد 1389, 06:50 صبح
این دو مفهوم اساسن با هم متفاوتند و ربطی به هم ندارن.
Deployment: به فرایندی میگن که شما کدهای اجرایی برنامه رو در محیطی قرار میدی یا نصب میکنی که قابل اجرا باشند. یعنی به اجرا در آوردن برنامه. این واژه در مورد برنامه هایی به کار میره که برای اجرا نیاز به یک محیط مدیریت شده دارن. مثلن سرورهای نرم افزاری: مثل Servlet Container ها یا J2EE Containerها...
شما برای راه اندازی برنامه فایل های اجرایی رو در سرور قرار می دی و یک سری تنظیمات مربوطه رو هم انجام میدی تا سرور بتونه برنامه شما رو راه اندازی کنه و در حالت اجرا قرار بده.
Annotation: اگر این لغت رو نشانه گذاری معنی کنیم، نشانه گداری های داخل کد برنامه رو Annotation میگن. این نشانه گذاری ها، با کد معمول فزق دارن چون قالبن متا اطلاعاتی هستند در مورد خود کد! مثلن شما یک متد رو می تونی نشانه گذاری کنی که این متد یک متدی هست که باید در مواقع تست برنامه فراخوانی بشه! این یک اطلاعات اضافی در مورد اون متد هست که می تونه با Annotation روی متد، برچسب زده بشه.
اجازه بدید بحث را یک مقدار فلسفی علمی کنیم!
پس با این تفاسیر که شما ارائه کردید Annotation جزئی از Deployment است. درسته؟
این لینک من را وادار به تفکر کرد : http://www.developer.com/java/ejb/article.php/10931_3670496_3/Packaging-EJB-3-Applications.htm
در اواسط صفحه جایی این دو تا را با هم مقایسه کرده بود (Deployment descriptors vs. annotations).
cups_of_java
یک شنبه 03 مرداد 1389, 07:49 صبح
کسی Annotation رو با Deployment مقایسه نکرده و نخواهد کرد. نیازی هم به علمی-فلسفی شدن نیست.
همون طور که تو توضیحات من هم می تونید ببینید یکی از مراحل Deployment تنظیم و پیکر بندی فایل هایی هست که توصیف می کنند برنامه چگونه باید روی سرور اجرا بشه. (این فایل ها رو Deployment Descriptor میگن.)
یکی از معضلاتی که در این موارد پیش میاد اینه که تعداد این فایل ها و تنظیمات هر کدوم اینقدر زیاد و پیچیده میشه که دیگه در یک برنامه نمی شه براحتی مدیریت و کنترلشون کرد.
برای حل این مشکل یکی از راه حل ها این بوده که برنامه نویس ها این تنظیمات رو به جای اینکه در فایل های جداگانه (نام فایل و مسیر فایل باید در حافظشون می موند) که عمومن قالب xml رو هم داشته اند و نحوه ویرایششون هم آسون نبوده (شما باید تگ ها رو حفظ می کردی و ساختار فایل رو می دونستی...) بنویسند، این اطلاعات ها رو در خود کد جاوا بیارن! کنار کد نگه داشتن این اطلاعات پیکربندی این مزیت رو براشون داشته که بتونن همون جایی که لازم هست (کنار کد مربوط) تنظیمات و اطلاعات پیکربندی رو هم بیارن و به راحتی بتونن تعییرش بدن.
بعدن در مراحل Build فایل های xml لازم از روی این Annotationها به طور اتوماتیک ساخته می شه تا کار برنامه نویس راحت تر شده باشه.
در مواردی هم این Annotationها حتی می تونن در زمان اجرا (بعد از Deploy شدن) در اختیار سرور قرار بگیرن تا خود سرور هم بتونه رو کد شما تنظیماتی رو انجام بده.
اما نکته اینکه:
می خوام بدونم یعنی در زبان انگلیسی شما بین Deployment و Deployment Descriptor هیچ فرقی قائل نمی شید!؟
نهایتن اینکه Annotationها کمک می کنن تا Deployment Descriptorها اتوماتیک ساخته شن و برنامه نویس اون ها رو مدیریت نکنه. و نمی شه گفت که Annotation جزیی از Deployment هست!
Annotation یک امکان در زبان های برنامه نویسی هست و هر جایی که لازم باشه اطلاعات اضافه ای در مورد کد آورده بشه که بعدن یک نرم افزار اونها رو بخونه و کاری انجام بده برامون، استفاه می شه.
Deployment یک فاز مربوط به "به حالت اجرا درآوردن" یک برنامه در محیط های "مدیریت شده" (یعنی سروری) هستش.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.