دوست عزیز :
دوست عزیز در پیشینه قدرت ظرافت و نبوغی که در جای جای جاوا وجود داره شکی نیست.اکو سیستم وسیع و متنوع SUNمدت هاست که خیل شرکت ها و گروههای بزرگ رو به دنبال خودش میکشه: Oracle -IBM- SAP- Adobe-Nokia-Symbian-GE-Apache و و و این فهرست تمومی ناپذیره.ملموسترین کاربردی که امروز از وب دارن یعنی Google در سطوح بسیاری مدیون لایه های بسیار قدرت مند جاوا ست.دوازده سال کار و تحقیق و در نهایت کسب درآمد از جاوا به من ثابت کرده که :جاوا مثل یه جادو برنامه نویسش رو سحر میکنه.
با این وجود این دلیل نمیشه که چشم به تکنولوژی رو به توسعه که با سرعت زیادی در حال رشد هست و با قدرت و پول مایکروسافت داره راه خودش رو بین برنامه نویس ها باز می کنه ببندم. دات نت یک کپی برداری دقیقه به دقیقه از پلت فرم های جاواست.حتی در نام گذاری پکیج ها وکلاس ها .حتی در پلت فرم های مورد پشتیبانی.منتها به روش مایکروسافت.
به نظرم رفتن تعداد زیادی از شرکت ها و موسسات برنامه نویسی به سمت .net و حتی اطرافیان خودم نمیوتونه به ((بی مصرف بودن )) زبان های میکروسافت صحه بذاره.درسته که جاوا (Write Ones ,Run Any where , Write Ones ,Deploy Any Where) هست.اما این همه داستان موفقیت یه ابزار,پلت فرم و ایده نیست.خوندن این مطالب رو هم به کسانی که میخوان Developer بشن هم به دوستانی که میخوان فرق موارد مختلف رو در دات نت و جاوا بدونن توصیه میکنم :
1-هر دو دارای SDK مجانی هستن نه برای توسعه دات نت و نه برای توسعه جاوا در هیچ پلت فرمی نیاز به IDE نیست ! ابزار های خط فرمان و احتمالا GUI خود SDK ها تمام نیاز های کابرو اگه صبر ایوب و چند قرن وقت داشته باشه فراهم میکنن!با این وجود تا وقتی که از Windows استفاده کنید به طور حتم تجربه شما از IDE خیلی بهتر از IDE های جاوا خواهد بود.من از VS 2005 ,VS2008 صحبت میکنم.این IDE حتی با 512 مگ رم بخوبی پرزه های سنگین رو از نظر سرعت و کارایی پشتیبانی می کنن. درمقابل چیزی مثل JBuiler 2007 یا حتی netBeans 6.1 با کلی ادعا درباره بهینگی و ... با حدود 1.5 تا 2 گیگ رم لذت یه کار بدون وقفه و راحت رو به برنامه نویسشون میدن.بماند مثال های دیگه ای مثل اینکه برای ساخت و تست وب سرویس های وب در محیط جاوا شما نیاز به Start کردن Application server مثل BEA -Oracle -jBoss -JRun دارید اینها حجم خیلی بیشتری از Ram- CPU Power رو مصرف میکنن تا مثلا Developer Web Server مایکروسافت! در سطح ابزار های RAD هم هیچ همگونی در ابزار های Java نیست!با وجود تمام ادعا های Bean ها من در هیچ IDE نتونستم API واحدی از کامپوننت های ارائه شده ببینم!مثلا در Jbuilder 2006 برای ساخت پروژه های دیتابس یه سری کامپوننت هست.در 2007 اصلا نیستن!وقتی سعی میکنم Bean های 2006 رو در 2007 باز کنم دیزاینر Eclipce کاملا سردر گم میشه و Error میده.ابن در دو محصول که کار یک کمپانیه!بماند در سایر محصولات!در مقابل کامپوننت های دات نت چه اونهایی که برای Asp هستن چه Winforms اگه بر اساس API دات نت نوشته شده باشن که باید اینطور باشه بخوبی در VS نمایش داده میشن.و میبینید که چقدرکامپوننت های دات نت عالی هستن و برای کار باشون نیاز به داشتن Rocket Sience نداره!این هم برای کسانی که تازه کارن و البته کسانی که می خوان پروژه هایی با حجم کار بالا در زمان کم و دستمزد کم! انجام بدن عالیه!
2-در سطح API و Platform و قدرت خود زبان : در سطح API و مخصوصا پلت فرم جاوا عالیه.هیج ابزاری نیست که جاوا رو ساپورت نکنه مگه اینکه نخواد!جاوا یک specification نه Impelemention!هر کس و هر جا که ابزاری بسازه چه یه سوپر کامپیوتر چه یک موبایل چه یک تراشه اگه جاوا رو براش پیاده سازی کنه یعنی تعهد کرده که کد های شما رو هم دستگاش میفهمه!بر خلافش دات نت.پیاده سازیه.و حتما باید برای یک سیستم توسط خود مایکروسافت و مخصوصا برای ویندوزش نوشته شده!اینطوریه که مایکروسافت ویندوز موبایل میفروشه!و این جالب نیست!در سطح زبان جاوا فقط جاواست!دقیق زیبا مختصر !JVM فقط جاوا رو میفهمه !شاید برای جاوا چیز هایی مثل jRuby-JGroovy و ... وجود داشته باشه ولی این در دنیای کارایی یعنی Overhead برای سیستم!دات نت اینطور نیست.دستور زبان رو برای همه باز گذاشت هر کسی که کامپالرش کد های سازگار CLR تولید کنه درسته!این یعنی شما اگه دوست داشته باشید به PHP برای دات نت برنامه بنویسید کافیه کامپایلرشو طراحی کنید !همونطور که بورلاند با Delphi .net کرده!این کد ها برای دات نت هیچ فرقی از نظر کارایی نداره!و این یعنی قدرت انتخاب !یعنی شما میتونید از Syntax بسیار بسیار زیبای ++C و به نظر من نازیبای VB در دات نت با یه کارایی استفاده کنید!
3-امکانات مربوط به سیستم : تا وقتی که API جاوا امکانات مورد نظر شما رو پشتیبانی کنه مثل کار های شبکه-IO و غیره شما خوشوقت ترین برنامه نویس دنیا هستید! آسون و قابل انتقال !اما وای به حال وقتی که جاوا ویژگی مورد نظر شما برای یه پلت فرم رو نداره!مثلا استفاده کامل از Shell ویندوز مثل Systray - Startmenu- Srvices-Drive- و .....البته کارا های دیگه ای که در جاوا پیاده نشده و در API ویندوز یا COM سایر نرم افزار ها مثل Flash موجوده شما باید الاوه بر یادگیری JNI زبان c و ++C رو هم یاد بگیرید!اونم نه به صورت ابتدایی بلکه خوب!
خوب چرا که هر گونه برنامه نویسی بد براحتی JVM رو هنگ میکنه! و تازه حالا کاره شما برای انجام این کار در سیستم های مختلف شروع میشه!یه در نهایت از ابزای های گرون قیمتی مثل JniWarper استفاده کنید!
در دات نت اولا خیلی از امکانات سیستمی از قبل در فریم ورک تعبیه شده و ثانیا خود IDE و زبان استفاده از توابع ویندوز و اشیائ کام رو از طریق Interoperability فراهم میکه!از جاوا واقعا ساده تره.
4-کلا دوره توسعه خیلی از برنامه ها با کامپوننت های دات نت سریعتره!مخصوصا برنامه های Database! مخصوصا در ساخت Client! دوستانی که با jdbc -Swing کار کردن میدونن من چی میگم!و به تازگی کنترل های دات نت واقعا متنوع شده!هر چند برای برنامه های توزیع شده مثل اونهایی که در وب هستن دنیای جاوا چه در طراحی و توسعه و ابزار بی نهایته!
5-هیچ راحی برای اینکه فایل های کلاس جاوا رو به CLR داد جز Hack روش های غیراستاندارد وجود نداره و بالعکس.مایکروسافت هیچ ابزاری برای ساخت فایل های کلاس از اسمبلی های تولید شده در دات نت نداره!به فرض که چنین ابزاری باشه چه طور JVM بیچاره از سازو کاره فراخوانی متدی به اسم Dataset.Load() سر دربیاره!این کلاس دات نته!
در نهایت : شاید #J زبان بی مصرفی باشه که خود مایکروسافت هم فهمید با وجود #c زائدو اضافیه و در ویرایش 2008 ویژوال استدیو پشتیبانیشو حذف کرد اما دات نت و زبان هاش مخصوصا ++C و #C و VB دات نت به هیچ عنوان طبق فرمایش جناب علی بی مصرف نیستند.
امیدوارم برای همه مخصوصا کسانی که قصد شروع یه زبان جدید رو دارند مفید باشه و البته دوستی که می خواست رابطه جاوا و #j رو بدونه.