# فناوری جاوا > برنامه‌نویسی جاوا > Java EE : نگارش سازمانی جاوا >  فرق library با framework , platform?

## rahimi.mohamad24

1-فرق library با framework , platform?

----------


## javaphantom

> 1-فرق library با framework , platform?


Platform: محل ساخت و احداث. پایه ای ترین قسمت حتی برای ایجاد زیر ساخت ها. 
هنگامی که می گیم جاوا پلت فرم یعنی  فقط و فقط جاوا می فهمه. یعنی عملیات ساخت به فضا و یا سکوی جاوایی نیاز داره.
api: روی یک سکو بنا می شه می تونه خودش در پایین ترین سطح استفاده یا تولید بشه می تونه در بالاترین سطح استفاده وتولید بشه و وابستگی کامل به پلت فرم داره چون محل رشد و نمو اون پلت فرم هست.

این api ها می تونه توسط شخص یا یک گروه یا یک شرکت  و ... درست بشه که در نهایت در قالب استاندارد یا محصول تعریف و استفاده بشه.

مجموعه ای از این API که برای یک کار خاص استفاده می شه  و در کنار هم قرار می گیره می شه گفت library

که همانطر که اشاره کردم می تونه توسط شخص یا شرکت در دو صورت  محصول یا استاندارد تعریف بشه و مورد استفاده قرار بگیره برای سرعت بخشیدن به امر توسعه یک برنامه کاربردی یا همان application

framework: یک Application ناقص که دارای دو قسمت مهم به نام configuration و input که یک خروجی بر اساس این دو فاکتور تولید می کنه. شبیه یک متدود معمولی ولی در ابعاد بزرگ که شامل یک سری api  روی یک platform ساخته می شه. نهایت امر مجموعه ای از یک library هست اما اگر این library رو بیرون بکشی باید بصورت مستقل با داشتن اون دو فاکتور مثل یک برنامه کاربردی برای توسعه یک محصول کار بکنه.
تنظیمات و ورود اطلاعات کاملا ساخت یافته است و از یک مدل یا یک طراحی خاص اطاعت نمی کنه و کاملا بستگی طراحی و معماری فریم ورک داره. این محدودیت جزو ذات این application ناقص است اما مثل یک کارخانه ای که مواد اولیه بهش بدی و تنظیمات خودتو براش بکنی تولیدی داره و سرعت کار رو بالا می بره.

----------


## cups_of_java

> 1-فرق library با framework , platform?


کتابخانه مجموعه ای از API هستش (کلاس ها، متدها، ماژول ها ...) که شما اونا رو فراخوانی می کنید. وقتی این API ها در یک مجموعه واحد برای یک هدف مشخصی قرار میگیرن و الگو های خاصی رو پیروی می کنن (مثلن MVC) دیگه فراتر از API هستن و بهش میگن فریم ورک، و اما به مجموعه فریم ورک ها و کدها در یک محیط عملیاتی مشخص (مثلن زبان برنامه نویسی خاص، سیستم عامل خاص،...) میگن پلتفرم.
واضحه که این لغت ها به همون ترتیبی که من توضیح دادم هی گنده تر می شن.
اینجا و اینجا و اینجا می تونید در موردشون بخونید.

----------


## rahimi.mohamad24

> کتابخانه مجموعه ای از API هستش (کلاس ها، متدها، ماژول ها ...) که شما اونا رو فراخوانی می کنید.


من تو تعریف API دیدم که اینطور نوشته:
Application Programming Interface
منظورش از اینترفیس در اینجا اینه که API ها الزاما فقط تعریف ویژگی ها و متد ها بدون پیاده سازیشون هستند؟یا کد پیاده سازیشونم هست؟

----------


## cups_of_java

نه! این اینترفیس اون اینترفیس که شما تو بعضی زبان های برنامه نویسی (مثل جاوا) می بینید نیست! 
Interface به طور کلی یه لغت انتزاعی هستش که به واسط هایی که شما می تونید باهاش کار کنید اطلاق میشه یا به امکاناتی که براتون فراهم شده تا از یک چیزی استفاده کنید. میشه گفت به نحوه تعامل شما با یه چیزی هم اینترفیس گفته میشه. مثال می زنم:
اینترفیس شما و تلوزیون خونتون امکان روشن خاموش کردن (دکمه روی دستگاه) تعویض کانال، ... و کنترل شما هست. (شما توی تلوزیونتون رو نمی بینید! فقط یه سری دکمه می بینید! از بردهای الکترونیکی برای روشن کردنتش استفاده نمی کنید)
انترفیس شما و من در این کلوب این فروم هست که از طریقش برای هم تایپ می کنیم و پست می زاریم.
اینترفیس یک کتابحانه هم اون توابع publicی هست که تعریف کرده برای اینکه شما ازشون استفاده کنید. (شما توی کد اون رو نمی بینید! و برای انجام دادن کارتون فقط یک سری تابع رو فراخوانی می کنید!)

----------


## Ehsan rashydy

اینجا و اینجا
پس اینکه به جاوا میگیم پلتفرم به خاطره ماشین مجازی و اینکه به واسطه این ماشین میتونه رو هر OSای اجرا شه است؟
و یا اینکه: به .Net میگیم فریم ورک به این خاطره که الزاما به پلتفرم ویندوز نیاز داره؟

----------


## cups_of_java

> اینجا و اینجا
> پس اینکه به جاوا میگیم پلتفرم به خاطره ماشین مجازی و اینکه به واسطه این ماشین میتونه رو هر OSای اجرا شه است؟
> و یا اینکه: به .Net میگیم فریم روک به این خاطره که الزاما به پلتفرم ویندوز نیاز داره؟


جفت اینا پلت فرم هستن. پلت فرم بودن به خاطر لزومن ماشین مجازی نیست! کلن فریم ورک لایه خیلی کوچیک تریه! پلت فرم شامل مجموعه زبان، کتابخانه ها و محیط اجرا میشه! ترکیب اینها با هم که کنار هم قرار بگیره یه پلت فرم رو میسازه!  .نت هم با زبان هاش و محیط اجراش و کتابخانه های استانداردش روی ویندوز تشکیل یه پلت فرم رو میدن!

----------


## Ehsan rashydy

> جفت اینا پلت فرم هستن. پلت فرم بودن به خاطر لزومن ماشین مجازی نیست! کلن فریم ورک لایه خیلی کوچیک تریه! پلت فرم شامل مجموعه زبان، کتابخانه ها و محیط اجرا میشه! ترکیب اینها با هم که کنار هم قرار بگیره یه پلت فرم رو میسازه!  .نت هم با زبان هاش و محیط اجراش و کتابخانه های استانداردش روی ویندوز تشکیل یه پلت فرم رو میدن!


اگه جفتشون پلتفرم هستن چرا مثلا میگیم: Java *Platform* Enterprise Edition بعد از اون طرف میگیم .Net *Framework* ؟

----------


## javaphantom

> اینجا و اینجا
> پس اینکه به جاوا میگیم پلتفرم به خاطره ماشین مجازی و اینکه به واسطه این ماشین میتونه رو هر OSای اجرا شه است؟
> و یا اینکه: به .Net میگیم فریم ورک به این خاطره که الزاما به پلتفرم ویندوز نیاز داره؟


به جاوا نمی گیم پلتفرم جاوا یک زبان هست. و بخاطر همان ماشین مجازی که داره و همچنین بستگی داره که اون ماشین مجازی رو باز رو کدوم پلت فرم نوشته باشن. نکته : منظور از پلتفرم در اینجا یعنی سیستم عامل 

می تونی اینطور بگی جاوا یک زبان cross platform هست یعنی روی پلت فرم های مختلف قابل اجرا هست. یعنی این پلت فرم می تونه سیستم عامل باشه مثل لینوکس یا ویندوز یا مک می تونه سخت افزار باشه مثل جاوا کارت.
virtual machine خودش یک محصول هست که روی یک پلت فرم نوشته می شه. 



> به .Net میگیم فریم ورک به این خاطره که الزاما به پلتفرم ویندوز نیاز داره؟


دات نت کلا داستانش اینکه چون بصورت پیش فرض فقط روی پلت فرم یا همان سیستم عامل ویندوز کار می کنه دیگه خودشون رو خسته نمی کنند. هرکی با هاش کار کنه مجبور از ویندوز استفاده کنه. پس شروع می کنه به درست کردن application یا application های ناقص که بهش می گن dot net framework. لازم به ذکر که به شما بگم windows هم برای خودش virtual machine داره ولی virtual machine ویندوز cross platform نیست و فقط برای ویندوز نوشته شده. بخاطر همین کلا بی خیال جزییات می شن و یک راست می رن سراغ محصولاتی که درست کرده.

همانطور که دید مفهوم platform هم می تونه یک سخت افزار با یک معماری خاصی باشه مثل یک کارت یا می تونه یک نرم افزار مثل سیستم عامل باشه ولی در کل داره محل رشد و نمو یک محصولی رو توضیح می ده.

----------


## cups_of_java

منظور از .net framework بیشتر اون چارچوب برنامه نویسی (زبان های پشتیبانی شده) و کتابخانه های استاندارد اون هست.
وقتی شما یه برنامه .net رو در مجموعه سیستم عامل ویندوز و بقیه وابستگی های محیط اجراش میبینی میگی platform دات نت!
خودتون رو خیلی درگیر این لغات نکنید! مهم اینه که مفهوم هر کدومشون رو درک کنید!

----------


## javaphantom

> اگه جفتشون پلتفرم هستن چرا مثلا میگیم: Java *Platform* Enterprise Edition بعد از اون طرف میگیم .Net *Framework* ؟


خوب اینم بهت بگم که در جاوا سه تا پلت فرم داریم Micro,Standard,Enterprise
در اینجا باید بگم که مفهوم پلت فرم برای این سه تا که گفتم یک معنی خاص رو نمی ده می شه گفت هم داره سخت افزار رو توضیح می ده و هم محصول نهایی رو توضیح می ده کلمه پلتفرم.
مثل در مورد micro پلتفرم داره می گه که باید سخت افزار محدودی داشته باشه با معمار خاصی مثلا موبایل یا قبلاهم اشاره کردم کارت. مثلا می تونه سخت افزار یخجال خونتون باشه با معماری خودش اما کاملا مشخص هست که ابعاد محدود و کوچکه.
در مرحله دوم داره می گه جاوا پلت فرم هست یعنی فقط زبان و سیتکس جاوایی می شناسه ، نری با زبان پاسکال کد بزنی و همچنین داره معرفی می کنه یک سری library های مربوط به اون پلت فرم. جالب اینحاست که در هر سه پلت فرم یک چیز مشترک هست و اون هم خود زبان جاواست. میگه من جاوا پلت فرم هستم در درجه اول یعنی زبان جاوا تمام library ها جاوا باشند. اما کلمات Micro , Standard,Enterprise داره محدودیت یا بهتر بگم برد کارایی ها رو توصیف می کنه.

دات نت فریم ورک رو هم که برات گفتم همش یک روی یک پلت فرم هست اونم ویندوز هست پس دیگه لازم نیست که بخواهیم جدا کنیم. هرپلت فرمی (سخت افزار) ی که روش ویندوز نسب بشه و روش بشه باز زبان های ماکروسافتی کد زد می گن ویندوز پلت فرم که اونم تنبلی می کنن یک راست می سر اصل متطلب و می گن دات نک فریم ورک هست

----------

