داتنت محدود به نوع خاصی از برنامهها نیست، از این چارچوب میتوان برای تولید برنامههای تحت ویندوز، تحت وب، سرویسهای مبتنی بر وب و ...
استفاده کرد.
داتنت محدود به نوع خاصی از برنامهها نیست، از این چارچوب میتوان برای تولید برنامههای تحت ویندوز، تحت وب، سرویسهای مبتنی بر وب و ...
یکی دیگر از ویژگیهای داتنت، دارار بودن کتابخانهای بزرگ و جامع از کلاسها و توابع است که همانطور که گفتیم، تمام زبانهای تحت داتنت میتوانند از توابع و کلاسهای موجود در آن، استفاده کنند.
در شمارههای قبل، به معرفی یک IDE متنباز به نام لازاروس پرداختیم که در واقع، جایگزینی برای دلفی در لینوکس محسوب میشد.
اما از آنجا که تکنولوژی .NET، بحث روز علم برنامهنویسی است، تلاشهای زیادی نیز از سوی حامیان دنیای اپنسورس برای پیادهسازی این تکنولوژی در سیستمعامل لینوکس انجام شده است.
در این مقاله، به بررسی پروژه Mono یا به عبارت دیگر، همان داتنت تحت لینوکس خواهیم پرداخت.
ابتدا لازم است تا کمی با ویژگیهای چارچوب داتنت و مزیتهای آن آشنا شویم.
اما داتنت چیست؟
شاید داتنت یکی از گیجکنندهترین علائم تجاری مایکروسافت باشد، بنا به تعریف خود مایکروسافت، داتنت گردایهای از تکنولوژیهایی است که اتصال به اطلاعات، اشخاص، تجهیزات و قطعات را از طریق نرمافزار فراهم میآورد.
اما این تعریفی نیست که بیشتر کاربران از .Net دارند.
آنچه معمولا به داتنت اطلاق میشود، برنامهنویسی در چارچوب یا FrameWork داتنت است.
یکی از بزرگترین مزیتهای چارچوب داتنت، مسئله مستقل از زبان بودن آن است.
برنامههای کاربردی در چارچوب داتنت، میتوانند به هر زبانی که از این frameWork پشتیبانی میکند، نوشته شوند.
این امر، به واسطه وجود یک زبان میانی (IL) فراهم شده است.
در هنگام برنامهنویسی خارج از چارچوب داتنت، کد نوشته شده مستقیما به کد قابل فهم برای CPU کامپایل میشود، اما در داتنت، برنامه به هر زبانی که نوشته شده باشد، در مرحله اول، به این زبان میانی ترجمه میگردد (که در بین تمام زبانهای این چارچوب مشترک است).
نتیجه وجود زبان میانی این است که امکان برقراری ارتباط بین زبانهای مختلف برنامهنویسی فراهم میشود.
هر زبان در چارچوب دات نت، دارای یک کامپایلر خاص است، و به کمک این کامپایلر میتواند با برنامههایی که در سایر زبانهای تحت .Net نوشته شدهاند، ارتباط برقرار کند.
چراکه در مرحله اول، برنامه به هر زبانی که نوشته شده باشد به این زبان میانی ترجمه میشود.
از مزیتهای دیگر این چارچوب، میتوان به مسئله مدیریت حافظه اشاره کرد.
در برنامهنویسی خارج از چارچوب داتنت، این مدیریت میبایست توسط برنامهنویس انجام شود و ممکن است با یک اشتباه کوچک از سوی برنامهنویس، حافظه زیادی به هدر برود و برنامه با مشکل کمبود حافظه مواجه شود.
در FrameWork داتنت، سیستمی به نام GC، در فاصلههای زمانی غیر ثابت به بررسی حافظه میپردازد و دادههایی را که دیگر استفاده نمیشوند از حافظه سیستم حذف میکند و نیز به کاربر اطمینان میدهد که با پایان برنامه، حافظه اختصاص داده شده به آن، به طور کامل بازیابی میشود.
از دیگر ویژگیهای برنامهنویسی تحت داتنت، میتوان به عدم دسترسی مستقیم به سختافزار و حذف اشارهگرها و ...
اشاره کرد که توضیح کامل این مسائل، از حوصله این بحث خارج است.
بسیاری معتقدند که ایده داتنت، ابتدا در کمپانی Borland مطرح شد و سر انجام سر از مایکروسافت درآورد!
اما آنچه مسلم است، این است که مایکروسافت با معرفی این تکنولوژی، انقلابی را در عرصه برنامهنویسی در ویندوز پدید آورد.
البته مهمترین کمبود داتنت همین مسئله بود؛ این که فقط به یک سیستمعامل تعلق داشت، هرچند مستقل از معماری پردازگر بود.
مشکلی که در حال حاضر توسط پروژه Mono در حال مرتفع شدن است.
مونو تنها پروژهای نیست که قصد دارد داتنت را برای سایر سیستمعاملها پیادهسازی کند، اما در حال حاضر میتوان به عنوان کاملترین و امیدوارکنندهترین پروژه از آن نام برد.
هدف مونو پیادهسازی متنبازی از داتنت مایکروسافت است.
مونو دارای کتابخانهای از کلاسها و توابع است که به سرعت رو به تکمیل شدن میرود و نیز کامپایلری برای زبان C دارد و در کنار IDE ویژه خود (MonoDevelop)، ابزار مناسبی را برای برنامهنویسی در چارچوب داتنت فراهم میآورد.
توسعهدهندگان این پروژه اعلام کردهاند که به زودی برای بیشتر زبانهایی که نسخه تحت داتنت دارند، کامپایلرهایی را ارائه خواهند کرد.
علاوه بر سیستمعامل لینوکس، نسخههایی از مونو برای مکینتاش، یونیکس و سولاریس ارائه شده است.
این پروژه از سوی کمپانی Novell پشتیبانی مالی و فنی میشود.
ناول با فعالیت در پروژه مونو، دو هدف را دنبال میکند.
اول افزایش میزان قابلیت تولید نرمافزار، و مهمتر از آن، کمک به برنامهنویسان داتنت تحت ویندوز برای توسعه برنامههایشان در سایر سیستمعاملها.
این مسئله نکته ظریفی را به همراه خود دارد و میتواند با تکمیل شدن مون در آینده نزدیک، عرصه را بر انحصار طلبی مایکروسافت تنگ کند.
در حال حاضر، مایکروسافت با اقتدار تمام بر بازار سیستمعاملها سایه انداخته و طبق آمارهای جهانی، بیش از ۹۰ درصد از کامپیوترهای موجود در دنیا، حاوی سیستمعامل ویندوز هستند.
اینکه مایکروسافت چگونه به این موقعیت رسیده است، شاید چندان مهم نباشد، اما آنچه راه را برای پیروزیهای پیاپی سیستمعامل ویندوز در دهه اخیر باز گذاشته، ترس سایر کمپانیهای بزرگ از ورود به عرصه رقابت سیستمعاملهاست.
چراکه اولین شرط موفقیت یک سیستمعامل در بین کاربران، وجود نرمافزارهای مورد نیاز آنها برای آن سیستمعامل است.
برای یک تولید کننده سیستمعامل همیشه این سوال مطرح است که «آیا سایر شرکتهای کوچک و بزرگ تولیدکننده نرمافزارهای کاربردی، محصولات خود را برای سیستمعامل ما ارائه خواهند کرد یا نه؟» تا پیش از این، پاسخ این سوال همواره منفی بود، چراکه برنامهنویسی در سیستمعاملهای مختلف، روشها و ابزارهای متفاوتی را میطلبید و برای داشتن دو نسخه از یک برنامه کاربردی که در دو سیستمعامل مجزا کار کند، تقریبا لازم بود که این برنامه در هریک از سیستمعاملها به طور مجزا نوشته شود.
در این میان قطعا شرکتهای تولیدکننده نرمافزارهای کاربردی مختلف، ترجیح میدادند که هزینه نسبتا هنگفت تولید نرمافزار را صرف سیستمعاملی کنند که کاربران بیشتری دارد و در مورد صرف هزینه برای تولید نرمافزار برای سیستمعاملهای نوپا، «ریسک» نکنند.
اما با سوق پیدا کردن علم برنامهنویسی به سوی چارچوب واحد داتنت، و توسعه این چارچوب برای سایر سیستمعاملها از توزیعهای مختلف لینوکس گرفته تا مک، سولاریس و حتی سیستمعاملهایی که ممکن است در آینده متولد شوند، فرایند تولید نرمافزار از حالت یک ریسک خارج میشود.
تولیدکننده فقط یک بار برنامه را مینویسد و با استفاده از محیطهای پیادهساز داتنت در سایر پلتفرمها، به ازای هر سیستمعامل فقط یک بار آن را کامپایل میکند و متحمل هزینه چندانی نمیشود.
بنابراین ترجیح میدهد که نرمافزار خود را تنها به قیمت چند بار کامپایل کردن، برای تمام سیستمعاملهای رایج ارائه کند.
و همانطور که گفتیم، سادگی و یکپارچه شدن این قالب کاری، میتواند در آینده به کمپانیهایی به جز مایکروسافت نیز جرات ورود به بازار سیستمعاملها را بدهد.
اگر پیگیر اخبار دنیای اپنسورس بوده باشید، حتما میدانید که چندی پیش امضای قراردادی بین ناول و مایکروسافت، موجی از اعتراضات را از سوی جوامع هوادار اپنسورس متوجه ناول کرد.
اما مسئولان پروژه مونو، اظهار کردهاند که این امر خود باعث نزدیکی بیشتر مهندسان مایکروسافت و ناول شده و هرچند همکاری رسمی بین دو کمپانی در زمینه پروژه مونو وجود ندارد، اما این نزدیکی موجبات سادهتر شدن فرایند تکمیل مونو را فراهم کرده است.
به گفته مسئولان ناول، مایکروسافت علاقه زیادی به پیادهسازی نسخههای مختلف .Net دارد.
در حال حاضر کمپانیهای زیادی از مونو برای توسعه نرمافزارهای خود کمک میگیرند، به عنوان مثال میتوان به WikiPedia اشاره کرد که بخشی از ساختار موتور جستوجوی آن بر پایه مونو قرار دارد.
از ابتدای ارائه تکنولوژی داتنت، همواره رقابت یا به نوعی دعوای رسانهای بین Microsoft و Sun (سازنده زبان جاوا) وجود داشته است.
به طوری که هریک از دو کمپانی در سایت خود، ادعا کردهاند که هر دو محصول را آزمایش کردهاند و به این نتیجه رسیدهاند که محصول خودشان کارایی بهتری دارد!
اما در برابر تمام مزیتهای داتنت، J۲EE امتیاز بزرگی داشت؛ این محیط توسعه مستقل از سیستمعامل بود (همانطور که میدانید، در زبان جاوا برنامه نوشته شده کامپایل نمیشود و به کمک Virtual machine در هر سیستمعاملی اجرا میگردد).
در این بین توسعه پروژههایی مانند مونو، راه را برای داتنت هموارتر کرد.
به طوریکه اخیرا در یک نظرسنجی، مشخص شد که حدود ۶۶ درصد از توسعهدهندگان، پلتفرم داتنت را بر J۲EE ترجیح میدهند.
از دیگر پروژههای مربوط به پیادهسازی داتنت در لینوکس، میتوان به DotGNU اشاره کرد.
توسعهدهندگان داتگنو میگویند به دنبال طراحی و ساخت چیزی هستند که بتوان آن را «سیستمعاملی برای اینترنت» نامید!
مجموعهای از ابزارها که به کامپاننتها اجازه میدهند از طریق اینترنت، با هم تقابل داشته باشند.
در این راستا، نسخه قابل حملی (Portable) از داتگنو ارائه شده که آن نیز شامل یک کتابخانه از کلاسها و توابع، یک کامپایلر برای سیشارپ، و مجموعهای دیگر از سایر ابزارهای برنامهنویسی است.
ابزار دیگری به نام phpGroupWare نیز در این مجموعه قرار دارد که قابلیت کار گروهی را برای تولید سرویسهای مبتنی بر وب فراهم میآورد.
ناول در نسخههای اخیر توزیع OpenSUSE خود، مونو را به صورت پیشفرض به همراه آن ارائه کرده است.
باید دید با فراگیر شدن این FrameWork در توزیع OpemSUSE و احتمالا سایر توزیعهای لینوکس، چه تغییراتی در حوزه برنامهنویسی در این سیستمعامل پدید میآید و آیا تلاش ناول در جهت سادهسازی برنامهنویسی در لینوکس، بنیاد نرمافزارهای آزاد (FSF) را از اعمال تحریم علیه ناول منصرف خواهد کرد یا نه؛ تحریمی که به دلیل انعقاد قرارداد با مایکروسافت، ممکن است گریبانگیر ناول بشود.