# فناوری جاوا > برنامه‌نویسی جاوا > سوال: فرق framework با platform در چیست

## trustmiracle

با توجه به این دو تا تعریف :



> A software framework is a re-usable design for a software system (or subsystem). A software framework may include support programs, code libraries, a scripting language, or other software to help develop and _glue together_ the different components of a software project. Various parts of the framework may be exposed through an API.





> In computing, a *platform* describes some sort of hardware architecture or software framework (including application frameworks), that allows software to run. Typical platforms include a computer's architecture, operating system, programming languages and related runtime libraries or graphical user interface.


1- آیا به طور مثال کتابخانه های جاوا، دان نت، python و ... فریم ورک و netbeans , eclipse , visual studio , .... پلتفرم هستند؟ (php هم فریم ورک هستش؟)

2- منظور از suppot programs توی فریم ورک چی هست؟ (یک مثال می زنید)

3- آیا لزوما هر پلتفرم با یک فریم ورک ارائه میشه؟ (فریم ورک به عنوان یک زیر مجموعه پلتفرم ارائه میشه؟)

پیشاپیش ممنون از دوستان.

----------


## cups_of_java

> - آیا به طور مثال کتابخانه های جاوا، دان نت، python و ... فریم ورک و netbeans , eclipse , visual studio , .... پلتفرم هستند؟ (php هم فریم ورک هستش؟)


کتابخانه های جاوا، دان نت، python و ... رو میشه فریم ورک دونست. اما netbeans , eclipse , visual studioو .... رو نمیشه پلتفرم دونست. اینا محیط های توسعه (IDE) هستند. با کمی اغماض شاید بشه اینا رو پلتفرم های نرم افزاری میشه گفت.




> منظور از support programs توی فریم ورک چی هست؟


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




> آیا لزوما هر پلتفرم با یک فریم ورک ارائه میشه؟


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

----------


## trustmiracle

میشه یک مثال از پلتفرم بزنید.
توی ویکی پدیا ای رو نوشته بود:




> *پلتفرم جاوا* به مجموعه‌ای از محصولات نرم افزاری و مشخصه‌ها از شرکت سان میکروسیستمز اطلاق می‌شود که به منظور ایجاد محیطی برای نوشتن نرم افزار هایی که در تمام محیط ها اجرا می‌شوند به کار می‌رود.



و بعد اون شامل چهار نوع جاوا کارت، میکرو، استاندارد و سازمانی دانسته بود. میشه مثلا پایتون را که آن هم قابلیت کار بر روی دستگاه های مختلف داره پلتفرم نرم افزاری دانست؟ یا همینطور دان نت رو؟ من بعضی جاها دیدم مثلا نوشتند .net platform مگه دات نت فریم ورک نیست؟

----------


## cups_of_java

جاوا اینفدر وسیع و بزرگ شده که میشه اون رو پلتفرم نامید. جاوا پلتفرمه برای اینکه فرهنگ جهان شمولی رو در استاندارد های نرم افزاری داره. استاندارد های جاوا خیلی زیاد و فراگیر هستند. (صرفن متونی نیستند که ISO شده باشن بلکه استاندارد های فعالی هستند که شرکت های بزرگ فعال در زمینه IT روش دارن کار می کنن.
این موضوع در مورد پایتن هم می تونه در مقیاس کوچکتری قابل تعریف باشه. میشه پایتون رو هم یک پلت فرم نرم افزاری دونست اما من احساس می کنم پایتون بیشتر یک تکنولوژی نرم افزاریه تا پلت فرم!
در مورد دات نت هم قبلن بحث شده بود تو فروم ها، من مایکروسافت رو دارای پلتفرم می دونم. یعنی چیزی تحت عنوان پلت فرم مایکروسافتی رو میشه به راحتی دید. برخی همین پلتفرم رو داتنت پلتفرم میگن.

بهتره با لغات بازی نکنیم. ابن مفاهیم مرز های واضحی ندارند. مهم اینکه که فریم ورک جمع و جور تر و محدود تر و هدفمند تره ولی پلتفرم مثل یک دریا می مونه که بستری میشه برای تکنولوژی ها و فریم ورک ها... اینجوری شما می تونی هر زبان برنامه نویسی رو یک پلتفرم نرم افزاری بدونی!

----------


## tukanmishsevda

framework به معنی چهار چوب است.منظور از framework  در .net چهار چوب عملیاتی .net است.platform به معنی بستر است.platform معنی گسترده ای دارد .به عنوان مثال در سایتهای فروش game , بعضی گیمها دارای پلتفرمهای متفاوتی میتوانند باشند (pc,x360,ps3,...) که مورد انتخابی اگر یکی از موارد غیر از pc باشد که هیچ وگرنه در خود  pc هم باز هم نیازمند platform  خاص خودش است(RAM,VGA,CPU ,OS ,....).در کامپیوتر هم منظور از platform هم میتواند سیستم عامل یا سخت افزار یا هر دوی اینها باشد یا یکی platforme دیگری(به عنوان مثال پردازشگر intel 80486 پلتفرم سیستم عامل DOS Version 6.0 است.)A platform is any base of technologies on which other technologies or processes are builtبس میتوان گفت که .net نیاز به یک پلتفرم برای خود و همچنین خود یک پلتفرم برای بعضی اعمال نیز محسوب میشود. از منظر برنامه نويسي Platform .NET شامل يك محيط اجرايي پيوند خورده به يك كتابخانه كلاس پايه است.

----------


## javaphantom

فریم ورک دقیقا یک application ناقص هست به تنهایی هیچ ارزشی نداره و کمک می کنه که یک application کامل درست بشه. این نقص باعث می شه که همون محدودیت بوجود بیاد که بهش می گن frame یعنی این application ناقص، محدودهم هست مشخص چرا چون نهایتا یک application هست و این یعنی محدودیت.

Platform دقیقا برعکس framework هست. می تونی مثل یک زمین وسیع در نظر بگیریش که می تونی توی اون زمین عمل ساخت انجام بدی چه بسا برای با بردن وسایل سنگین مثل آهن یا بتون یا خاک و همچنین پناهگاه برای گارکران چندتا سازه ناقص مثل یک جرثقیل ثابت چندتا لودر هم درست کنی که دقیقا مثل همون فریم ورک هستن که کمک می کنن که تو سریع تر ساختمانت رو و راحتر درست کنی. حتی یک خونه ناقص و کوچیکتر باید برای کارکرها هم درست کنی.

نتیجه: در دنیای نرم افزار فریم ورک ها بر روی platform ها ساخته می شن.

سوال : java platform یا platform .net یعنی چی؟ یا هر پلت فرم دیگه در نیای نرم افزار یعنی چی؟


هر موقع ما محصولی داشتیم که با API یا DLL فایل و کلی می گم با کتابخانه های یک زبان خاص بصورت خالص مثلا جاوایی درست شده باشد م گویم مثلا Java Platform هست.

همانطور که در قبل گفتم یعنی محصول من کاملا با API های جاوا نوشته شده است و فقط JVM آنها را می شناسد. حال ممکنه این محصول من یک Application باشه یا ممکنه یک framework باشه. می گن فلا فریم ورک برای جاواست. یعنی این application با جاوا خالص نوشته شده و برای develop باید با api های جاوا ادامه داد.

همینطور platform .net یعنی بصورت کامل از DLL فایلهایی استفاده شده که فقط CRL عقب مونده می شناستش.

----------


## BORHAN TEC

این هم یک مثال بسیار ساده در رابطه با فریم ورک و پلت فرم.
عکس زیر را در نظر بگیرید. در این این عکس دریا حکم پلت فرم و قایق حکم فریم ورک و آن شخص هم حکم برنامه را دارد. پلت فرم در اصل شامل قسمت های مختلفی است مثل مفسر و تمام چیزهایی که می توانند یک بستر را ایجاد کنند که تحت آن بتوان یک فریم ورک و یا برنامه را ایجاد کرد. پلت فرم ها می توانند یکسری api را در اختیار برنامه نویسان قرار دهند که اشخاص بتوانند تحت آن یک فریم ورک و یا برنامه را ایجاد کنند. حتی تحت یک پلت فرم شما می توانید یک پلت فرم ایجاد کنید. به عنوان مثال مایکروسافت آمده و تحت پلاتفرم win32 پلاتفرم .Net را ساخته. یا به عنوان مثالی دیگر پلت فرم mono تحت win32 و لینوکس و carbon(نام پلت فرمی که سیستم عاملهای mac OS در اختیار ما قرار می دهند). دید درست این است که بگوییم یک فریم ورک تحت یک پلتفرم ایجاد می شود. معمولا اگر بخواهید که مستقیما از پلت فرم اصلی یک سیستم عامل استفاده کنید شما نیاز به کامپایل مجدد دارید. این امر در زبان های کامپایلری مرسوم است. در جمله قبلی به کلمه پلت فرم توجه کنید. توجه داشته باشید شما می توانید یک فریم ورک را مستقیماً تحت پلت فرم اصلی یک سیستم عامل ایجاد کنید، مانند VCL. همانطور که قبلاً هم گفتم چنید برنامه هایی برای اجرا بر روی سیستم عاملهای دیگر حتماً نیاز به کامپیال مجدد دارند. در واقع یکی از مهمترین اهداف ایجاد پلت فرم ها برطرف کردن این مشکل است. اگر شما تحت پلت فرم اصلی یک سیستم عامل یک پلت فرم دیگر را ایجاد کنید می توانید انعطاف پذیری بیشتری را ایجاد کنید به گونه ای که برنامه های ایجاد شده تحت آن نیازی به کامپایل مجدد نداشته باشند. ولی توجه داشته باشید که این *پلت فرمی* که ایجاد کرده اید اگر مستقیماً تحت سیستم عامل اجرا شود و بین آن و سیستم عامل پلت فرم دیگری موجود نباشد، خود آن پلتفرم ایجاد شده نیاز به کامپایل مجدد دارد. به عنوان مثال پلت فرم جاوا که شامل مفسر و ... است تحت سیستم عامل های مختلف کامپایل شده و بسیاری از برنامه ها برای اجرا شدن بر روی آن نیازی به کامپایل مجدد ندارند. چون طرف حساب آن برنامه پلتفرم مربوطه است و نه سیستم عامل. 
فریم ورک می آید و توابع API مربوط به پلت فرم را به شکل بهتری در اختیار ما قرار می دهد و حتی موارد بسیار دیگری را هم به آن اضافه می کند. مثلاً VCL که فریم ورک مربوط به زبان هایی مثل دلفی و C++‎ Builder است همین کار را می کند و توابع API ویندوز را به صورت کلاس بندی شده در اختیار برنامه نویس قرار می دهد. در واقع فریم ورک برای کارهای خود از یک پلت فرم استفاده می کند. قسمتی از فریم ورک می تواند درون فایل اجرایی برنامه ما قرار گیرد و یا به صورت موازی با آن کار کند. ولی باید بدانید که برنامه ما و فریم ورک مورد استفاده برنامه ما همگی تحت پلتفرم(ها) اجرا می شوند.
بسیاری از شرکت ها از این استانداردهایی که در بالا به آنها اشاره کردم تبعیت نمی کنند و خودشان قسمت های مختلف را نامگذاری می کنند. به عنوان مثال مایکرسافت معمولاً بجای این که بگوید پلتفرم .net و فریم ورک ..net معمولاً فقط از عنوان .net framework استفاده میکند.

اگر توضیح بیشتری می خواهید بگویید تا بیشتر توضیح بدهم.

----------


## amiros

متشکرم آقای عشایری

----------


## cjNet

شاید با این مثال کلی بشه مطلب رو بهتر درک کرد :
*ویندوز = پلتفورم        * 
*دات نت = فریمورک*

----------

