یکی از پرسشهایی که خیلی از تازه واردان به دنیای برنامهنویسی دارند این است که dot NET Framework یا NET Framework. چی هست و چه کار می کند و به چه درد می خورد و اصلا برنامهنویسی با دات نت چه فرقی با برنامهنویسی در محیطهای غیر دات نت میکند؟ یا این که Visual Basic .NET چه فرقی با Visual Basic عادی میکند؟ یا این که #Visual C (سی شارپ) چی هست و چه تفاوتی با ++C میکند. خلاصه این که معمولا سردرگمی زیادی درباره NET. هست. من میخواهم توی چند تا نوشته به سادگی توضیح بدهم که NET. دقیقا چی هست و چه تکنولوژیهایی را شامل میشود. روش من در این مقالات، تا حد زیادی تحلیلی و با بیان تاریخ این تکنولوژیها است. به باور من اگر نوآموزان با تاریخ این تکنولوژیها آشنا بشوند، موضوع برایشان راحتتر جا میافتد و جالبتر هم خواهد بود.
برای این که بتوانید دات نت فریم ورک را خوب بشناسید، لازم است تا به سال 1995 برگردیم و به رخداد مهمی که در آن سال در دنیای کامپیوتر رخ داد، بپردازیم. این اتفاق ارتباط مستقیم با دانت نت فریم ورک ندارد ولی دانستن آن میتواند دید گستردهتری به شما بدهد.
پیدایش Java؛ بیایید قهوه بنوشیم
در سال 1991 رخداد مهمی در حال شکلگیری در دنیای رایانه بود. در این سال شرکت Sun Microsystems که در کار تولید بخشی از لوازم الکترونیکی مثل رسیور، تلویزیون، کنترل از راه دور و اجاقهای مایکروویو بود، به فکر ایجاد زبان جدیدی افتاد که بتواند در سیستمهای عامل و سختافزارهای متفاوت (بخوانید Platformهای گوناگون) بدون نیز به کامپایل مجدد، اجرا بشود.

مسئله خیلی ساده است: این روزها تمام کامپیوترها بر اساس معماری IBM طراحی میشوند و به همین خاطر به همه کامپیوترها ما IBM-Compatible یا هماهنگ با معماری IBM گفته میشود؛ ولی در آن دوره شرکتهای مختلف پردازندههای خاصی برای نیازهای خودشان طراحی میکردند و هنوز طراحی IBM استاندارد نشده بود. این پردازندهها از لحاظ معماری داخلی و دستورالعملهایی که پشتیبانی میکنند (مانند ADD، SUB، MOV، JMP، JE) و همچنین اندازه و تعداد ثباتها یا Registerها با هم تفاوت میکنند. برای نمونه شرکت Apple برای خودش پردازندههای خاصی را با نام PowerPC طراحی کرده بود تا در کامپیوترهای خودش استفاده بشود. IBM برای کامپیوترهای شخصی پردازنده خاص خودش را طراحی کرده بود؛ یا شرکت دیگری به نام DEC که در کار طراحی کامیپوترهای صنعتی بود پردازندهی به نام VAX تولید کرده بود.
همین طور میشود به پردازندههای شرکت Arari و Commodore که پردازندههای خانگی بودند هم اشاره کرد. گستردگی این پردازندهها و تنوع دستورات و اندازه ثباتها و درگاههای آنها بسیار زیاد بود. دستورالعملی که در یک پردازنده وجود داشت در پردازنده دیگری ممکن بود به طور کامل وجود نداشته باشد یا به شکل دیگری کار کند. عملکرد این دستورالعملها و چگونگی رفتار آنها در شرایط خاص ممکن بود که تفاوتهایی داشته باشند. همین طور تفاوت در اندازه ثباتهای این پردازندهها لازم بود تا درباره شیوه نوشتن اعداد بزرگتر از اندازه ثبات، راهکارهای متفاوتی پیش گرفته بشود. خلاصه این که همه این مسائل سبب میشد که برنامهای که مثلا در پردازنده IBM نوشته شده، نتواند در پردازنده PowerPC اجرا بشود و اگر مشتری شما از پردازنده دیگری استفاده میکرد شما میبایست کل کدتان را به پردازنده جدید منتقل (=Port) کنید؛ کاری که بسیار دشوار و گاهی به علت حجم زیاد کدها ناممکن بود. جالب این جاست که این مسئله فقط هم از تفاوت پردازندهها ناشی نمیشود. حتی اگر ما دو پردازنده یکسان داشتیم، باز ممکن بود در این دو پردازنده دو سیستم عامل متفاوت اجرا بشود و باز کد شما تنها بر روی سیستم عاملی اجرا میشد که شما آن را تولید کردهاید؛ چون که هر سیستم عاملی توابع داخلی و ساختار فایل اجرایی خاص خودش را دارد و توانایی پردازش فایلهای اجرایی سایر سیستم عاملها را ندارد؛ برای نمونه سیستم عامل DOS و Unix هر دو بر روی پردازندههای IBM کار میکردند ولی برنامه نوشته شده در DOS در Unix کار نمیکند و همین طور برعکس.

در چنین شرایطی شرکت Sun به این فکر افتاد تا تکنولوژی را طراحی کند که بتوان با کمک آن کدی را نوشت که بدون نیاز به منتقل کردن کد به پردازنده جدید و دوباره Compile کردن کد در آن پردازنده، در همه جا اجرا بشود. این ایده بعدها به صورت Write once, Run anywhere (یک بار بنویسید، همه جا اجرا کنید) شعار شرکت Sun برای معرفی Java به عنوان یک تکنولوژی مستقل از Platform شد.
معجزه جاوا چیست؟
اما جاوا چه طور این مشکل پیچیده یعنی ناهماهنگی بین Platformهای مختلف (تفاوت در پردازندهها و سیستمهای عامل) را حل میکند؟ راه حل به کار رفته در جاوا برای حل این مساله به شدت ساده و در عین حال بسیار جذاب است.
فرض کنید شما در حال برنامهنویسی با جاوا در پردازنده IBM و در سیستم عامل ویندوز هستید. در صورتی که برنامهتان را با جاوا کامپایل کنید، جاوا آن را به زبان ماشین و فرمت اجرایی مناسب با سیستم عامل ویندوز تبدیل نمیکند؛ بلکه کد شما به چیزی که Bytecode جاوا نام دارد تبدیل میشود. Bytecode جاوا زبانی شبیه به زبان ماشین و در حقیقت زبانِ ماشینِ مشترکِ جاوا برای تمامی پردازندهها است. طبیعتا این زبان توسط پردازنده IBM و سیستم عامل ویندوز یا توسط پردازنده IBM و سیستم عامل یونیکس تا توسط پردازنده PowerPC و سیستم عامل MAC OS اجرا نمیشود. برای اجرای این Bytecode بر روی پردازنده IBM و سیستم عامل ویندوز از برنامهای کمک گرفته میشود که JVM یا Java Virtual Machine نام دارد. برای هر کدام از این محیطها یک Java Virtual Machine انحصاری نوشته میشود که کارش اجرای

آخرین دیدگاهها
4 روز 11 ساعت پیش
4 روز 21 ساعت پیش
5 روز 1 ساعت پیش
5 روز 4 ساعت پیش
2 هفته 3 روز پیش
3 هفته 1 روز پیش
3 هفته 1 روز پیش
3 هفته 2 روز پیش
3 هفته 2 روز پیش
3 هفته 2 روز پیش