# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > پروژه Mono > گفتگو: مقایسه ی Mono با JDK

## ztx4

سلام
دوستان می خواستم در این تاپیک به شباهت ها و تفاوت های بین دو پلتفرم بزرگ  JDK و (Mono & .net) بپردازیم.
(JDK یا Java Development kit پلتفرم جاواست)
اولین نظر رو خودم می گذارم:

شباهت ها:

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

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

اما Mono یک شبیه سازی از .net می باشد. و ممکن است در برخی کاربرد ها تفاوت هایی به وجود آید.و برنامه نیاز به تغییراتی داشته باشد.

----------


## ztx4

اساتید محترم و دوستان گرامی
چرا کسی در این تاپیک شرکت نکرد؟
من هنوز منتظرم...

----------


## A.Karimi

البته بهتر بود OpenJDK با Mono مقایسه می‌شد. چون JDK مانند dotNet در انحصار یک شرکت خاص (اکنون Oracle) است.

تفاوت:
- Mono بر اجرای ByteCode بر هر پلتفرمی تاکید ندارد بلکه بر کمترین تغییرات در کد برای اجرا در پلتفرمهای مختلف تاکید دارد. یعنی برای مثال شما بتوانید با یک کامپایل مجدد و تغییر بسیار کمی در کد (که با کمک Preprocessor Directives می‌توان طوری برنامه نوشت که نیازی به آن تغییر هم نباشد) یک Assembly جدید قابل اجرا در پلتفرم دیگری ایجاد نمایید.
- اما OpenJDK یا JDK بر روی اجرای ByteCode بدون هیچ تغییری تاکید دارد.

در این زمینه نمی‌توان گفت کدام روش صحیح‌تر است اما شخصاً به دلیل راحتی توسعه‌دهنده در ارتباط با لایه‌های زیرین VM، کار Mono را می‌پسندم به همین دلیل بیشتر کاربران از UI برنامه‌های(غیر وبی) جاوا فراری هستند.

----------


## kambizbaghi

sسلام 
ممنون از مطلب جالبتون
می خواستم بدونم که کدوم پلت فرم قابلیت دسترسی به لایه های زیرین سیستم عامل را داره ؟ منظورم اینه که ایا می شه برنامه هایی در سطح کرنل نوشت ؟

----------


## A.Karimi

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


در کل Mono به سطح سیستم عامل نزدیکتر است تا OpenJDK. البته برای Windows امکانات توسعه نرم‌افزارهای سیستمی با کمک dotNet وجود دارد اما در سیستم‌عامل‌هایی مثل Windows یا سیستم‌عامل‌های خانواده Unix نوشتن چنین برنامه‌هایی بهتر است با زبانهایی مثل C و ++C باشد.

البته سیستم‌عامل‌هایی وجود دارند که به آنها اصطلاحاً Language Based یا Managed OS گفته می‌شود. برای مثال Singularity که به طور کامل با زبان #C ساخته شده. یا JavaOS که با زبان Java پیاده شده. در این سیستم‌عامل‌ها حتی Driverها نیز با این زبانهای سطح بالا پیاده‌سازی می‌شوند. که البته هنوز از آنها در سطح وسیع استفاده نمی‌شود.

----------


## FastCode

نظرتون راجع به
Mono.Posix.Native.Syscall
چیه؟
از این نزدیک تر به سیستم عامل چی میخواهید؟

----------


## www.iranbazargan.com

خیلی جالب بود میشه منابه بیشتری برای مطالعه معرفی کنید
www.iranbazargan.com

----------

