View Full Version : مهاجرت از C#
amirh_karimifar
یک شنبه 07 شهریور 1389, 19:10 عصر
سلام به همه ی دوستان . من چند وقتی است که C# کار می کنم . می خوام از C# برم سراغ جاوا . آیا دوستان و اساتید صلاح میدونن ، که وقت بذارم واسه این کار و از امکانات .نت بیخیال شم
این سوال خیلی ها می تونه باشه .
میلاد قاضی پور
یک شنبه 07 شهریور 1389, 19:25 عصر
از این شاخ اون شاخ کردن چیزی عایدت نمیشه. من خودم عاشق جاوا هستم و مطمئنم اگر یه روز از عمرم مونده باشه این زبون رو تا جایی که بتونم یاد میگیرم . اما با دونستن یه زبون برنامه نویس نمیشی . خوبه که با چند تا زبان آشنایی داشته باشی . من خودم تا وقتی جاوا اسکریپت یاد نگرفته بودم خیلی از متدهای سیشارپ و اصلا مفاهیم شی گرایی رو درک نمیکردم . اما حالا این اتفاق میمون افتاده . دارم سیشارپ یادمیگیرم و وقتی تونستم سری تو سرای برنامه نویسای سیشارپ داشته باشم میرم سراغ جاوا .
درک برنامه نویسی یه مبحث هست . درک زبان برنامه نویسی یه مبحث دیگه . شما زبان برنامه نویسی رو سریع میتونی یاد بگیری و با نوشتن دو تا پروژه بهش مسلط بشی . اما درک خود برنامه نویسی و نحوه عملکرد این عامل بیشترین زمان رو میبره . تو وقتی با سیشارپ یا جاوا اسکریپت یاد بگیری استک چیه موقع یادگیری جاوا لازم نیست برای یادگیری اون هم زمان بذاری . تو وقتی شی گرایی رو فهمیدی توی جاوا برای فهمیدن شی گرایی لازم نیست زمان بذاری . یه راست میری سر اصل مطالب که تخمین زده میشه توی شیش ماه بتونی جاوا رو یاد بگیری .
amirh_karimifar
یک شنبه 07 شهریور 1389, 19:56 عصر
ممنون . خیلی خوب گفته بودی . با اینکه واقعا نمیشه جاوا رو با C# مقایسه کرد . ولی خودم دیگه به C# معتاد شدم :چشمک:
بازم دوستان اگه چیزی به دهنشون می رسه بگن تا افرادی که الان اول کارن و می خوان انتخاب کنن بتونن ، انتخاب بهتری داشته باشن .
ali_autumnal
یک شنبه 07 شهریور 1389, 22:40 عصر
سلام
من هم جاوا رو دوست دارم. و خیلی مشتاق هستم سری به اون زبان بزنم. اما چه کنم که اسیر شاخ و شمشادی شدم که از همه دنیا دلبریدم و عاشق اش شدم.
نگوووووووو که دلم پره.
ای خدا من کی این #C رو فول یاد میگیرم!!!!!!!!!!!!!!!!!!
بنظر من از این شاخه به اون شاخه پریدن جز حیرانی و واماندگی چیزی حاصل ندارد.
من قبل عشق ام (#C) با زبان های زیادی کار کردم. هر 6ماه یک زبان عوض میکردم و ادعا میکردم همه چی بلدم. اما واقعا چیزی از اون زبان ها حاصل ام نشد. زمانی که با این شاخ و شمشاد آشنا شدم دیگه نتونستم دل ازش بکنم و الان فقط به این فکر میکنم که:
باید خوب یاد بگیرم.
موفق باشید
علی پاییزی
sinashahab
یک شنبه 07 شهریور 1389, 22:51 عصر
به نظرم اصلا برای جاوا یاد گرفتن نباید صبر کرد(یکی به خودم بگه :لبخند:).
چون توی اکثر سیستم عامل ها از جمله linux و windows و وب و حتی اکثر موبایل ها !!
ولی اگه نظر واقعیمو می خوای یکی از برنامه هام برای تابستان بعدی(درس و دبیرستان نمی زاره:افسرده:) اینه که برنامه نویسی تحت لینوکس یاد بگیرم چون از محیطش و قدرتش و ... خیلی خوشم میاد .
یه چیزایی هم ازش تحقیق کردم یه چیزایی فهمیدم .
اگه کسی در مورد زبانش توضیح داره بده ؟!
و kenel چی هست ؟ زبان برنامه نویسی هست ؟
mmd2009
یک شنبه 07 شهریور 1389, 23:04 عصر
با سلام.
یاد گرفتن جاوا خیلی خوبه. پیشنهاد میکنم یه سری بهش بزن. جون تو برنامه های تحت وب میتونه خیلی کمکت کنه. #C رو میتونی قاطی کنی با Java
hasan1896
یک شنبه 07 شهریور 1389, 23:21 عصر
از اونجا که syntax جاوا و #C هر دو از خانواده ++C هستند و خیلی به این زبون شباهت دارند شما اگه توی #C حرفه ای بشی و مفاهیم رو خوب یاد بگیری به راحتی میتونی جاوا رو یاد بگیری چون زبونی هست که خیلی محبوبیت داره و روی خیلی از پلت فرمها و سیستم عاملها کار میکنه. من خودم مطمئنا بعد از #C حتما جاوا رو هم میخونم چون دو زبون بلد باشی بهتر از یه زبونه!!!:لبخند:
Salar Ashgi
دوشنبه 08 شهریور 1389, 00:53 صبح
همه نظراتی که دوستان ارائه کردن در جای خود درست و متین است ، اما چیزی که اینجا خیلی مهمه
برتری یک زبان به زبان دیگر نیست ، بلکه دلیل کوچ مهم است !؟ چه چیزی باعث شده است که دیدگاه شما
نسبت به این زبان تغییر کند ؟! و ... اگر برای این سوالات جواب قانع کننده و منطقی پیدا کردید ، که هیچ ،
وگرنه مطمئن باشید که چند ماه دیگر هم جاوا کنار خواهد رفت ./
طبق تجربه ای که داشته ام ، همیشه میگم : در عالم برنامه نویسی نمیتوان آچار فرانسه وار رفتار کرد ،
که در صورت این نوع یادگیری ، میتوان گفت سطح علمی فرد هیچگاه به حد مطلوب نخواهد رسید ./
مثلا چون #F یه زبان تابع گراست و محاسبات ریاضی توش راحته ولی تو ++C مشکل ، خوب پس بریم
سراغ #F ؛ چون Prolog واسه اعمال منطقی مناسبه ، پس فلان زبان رو رها کنیم ؛ واسه وب ASP.NET
خوبه پس PHP چرا ؟! و ... یکسری چنین افکار غیر منطقی باعث عدم رشد برنامه نویس خواهد شد ./
به قول یه عزیزی : برنامه نویس اگه برنامه نویس باشه ، تو هر زبونی کار خودش رو راه میندازه !
afi_program
دوشنبه 08 شهریور 1389, 03:13 صبح
زبوني كه بلدي را كنار نظار.زبون جديد يادبگيري عاليه.اما همونجوركه دوستان گفتن اصل اصول برنامه نويسي و جناب سالار هم كه آخر كلامو گفت اگه برنامه نويس برنامه نويس باشه كار خودشو راه ميندازه.زبان برنامه نويسي بيشتر تفاوت توي سينتكسه نه اصول و مباني پس اگه اصول بلد باشي كد كه يادگيريش زمانبر نيست.
موفق باشي
javad_r_85
دوشنبه 08 شهریور 1389, 10:10 صبح
سلام به همه ی دوستان . من چند وقتی است که C# کار می کنم . می خوام از C# برم سراغ جاوا . آیا دوستان و اساتید صلاح میدونن ، که وقت بذارم واسه این کار و از امکانات .نت بیخیال شم
این سوال خیلی ها می تونه باشه .
سلام دوست عزیز .برای انتخاب یک زبان دو فاکتور مهم می باشد یکی علاقه و دیگری هدف.
شما اگر به یه زبانی علاقه داشته باشی مطمئنا وقت خودت را صرف یادگیری اون زبان با تمام سختیهاش میکنی واینجوری وسط کار جا نمی زنی.
در مورد هدف هم کاملا واضح است شما باید هدفتان را مشخص کنید می خواهید برنامه نویس وب شوید یا برای سیستم عاملها برنامه برنامه نویسی کنی
بارها صحبت از برتری زبانها شده که اصلا کار اشتباهی است چون زبان برنامه نویسی یه ابزار برای رسیدن به هدف می باشد حالا فرض کنید می خواهید یه driver بنویسید مطمئنا با سی شارپ نمی تونید اینکارو انجام دهی و باید با سی پلاس این کاررا انجام دهید در واقع در زبانهای برنامه نویسی مزایایی هست که کار برنامه نویس را راحت تر میکند.
در زیر مثالهای از این مزایا آورده شده که در آن مثال زبانی که ابزار بهتر ازائه میده ذکر شده
برنامه نویسی بانک اطلاعاتی::Delphi with .net support
برنامه نویسی شبکه::C#.net
برنامه نویسی وب::ASP.Net / PHP
امنیت برنامه های مبتنی بر وب:: Java
برنامه نویسی سیستم عامل: C++
ویروس نویس:C++/C
من خودم شخصا از سی پلاس خیلی خوشم میاد به خاطر قدرتی که به برنامه نویس میده
شاید یه برنامه driver رو بتونم راحت باش بنویسم ولی یه برنامه دیگر را با سی شارپ راحت تر و سریعتر می نویسم و به جای چندین خط کد در سی پلاس با یه خط کد در سی شارپ انجام میدم.
پس در واقع اگر دنبال این هستید که کدام زبان بهتره راه اشتباهی در پیش گرفتید من نه میگم سی شار نه جاوا در واقع این خود شما هستید که باید تصمیم بگیرید و با تو جه به علاقه خودت و هدفت یکی را انتخاب کنی.
اگر با من باشه که می گم برو زبان برنامه نویس GO محصول جدید گوگل را یاد بگیر :لبخند:
چون به نظرم آینده خوبی داره و از جاوا و سی پلاس گرفته شده و الان هم که اپن سورس می باشد
.....( به جای این دست اون دست کردن یه زبان را یاد بگیر و ادامه بده امیدوارم که موفق باشی.).....
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\\\/\/\/\/\/\/\/\/\\/\/\/\/\/\/\/\/\/\/\
amirh_karimifar
دوشنبه 08 شهریور 1389, 12:10 عصر
به نظرم اصلا برای جاوا یاد گرفتن نباید صبر کرد(یکی به خودم بگه :لبخند:).
چون توی اکثر سیستم عامل ها از جمله linux و windows و وب و حتی اکثر موبایل ها !!
ولی اگه نظر واقعیمو می خوای یکی از برنامه هام برای تابستان بعدی(درس و دبیرستان نمی زاره:افسرده:) اینه که برنامه نویسی تحت لینوکس یاد بگیرم چون از محیطش و قدرتش و ... خیلی خوشم میاد .
یه چیزایی هم ازش تحقیق کردم یه چیزایی فهمیدم .
اگه کسی در مورد زبانش توضیح داره بده ؟!
و kenel چی هست ؟ زبان برنامه نویسی هست ؟
من خودم تحت لینوکس برنامه نوشتم . با یک زبان به اسم Qt که بسار از لحاظ Syntax شبیه c هست . و ضمن اینکه کامپایلر و ide هم همراه پکیج اکثر لینوکس ها نصب میشه .
اتفاقا یکی از دلایل این که می خوام برم سراغ جاوا ، عشق برنامه نویسی تو محیط لینوکس .
اما به قول دوستان دیگه خیلی سخت میشه از این C# دل کند .
انیشتین
دوشنبه 08 شهریور 1389, 13:02 عصر
و kenel چی هست ؟ زبان برنامه نویسی هست ؟
البته فکر کنم منظور شما Kernel باشه.به هسته سیستم عامل میگن Kernel. حالا فرقی نداره ویندوز باشه یا لینوکس.....،زبان برنامه نویسی نیست.
sinashahab
دوشنبه 08 شهریور 1389, 13:25 عصر
البته فکر کنم منظور شما Kernel باشه.به هسته سیستم عامل میگن Kernel. حالا فرقی نداره ویندوز باشه یا لینوکس.....،زبان برنامه نویسی نیست.
اره همون بود . یه حرف رو تو تایپیدن نزدم .:لبخند:
خوب این هسته رو با چی می نویسن ؟!
amirh_karimifar
دوشنبه 08 شهریور 1389, 15:51 عصر
خوب این هسته رو با چی می نویسن ؟![/quote]
هسته ی سیستم عامل لینوکس رو با C نوشتن و بعدا توی توسعه اش از C++ کردن .
ولی من فکر نکنم منظور شما از برنامه نویسی لینوکس برنامه نویسی کرنل سیستم عامل باشه . اگه منظورتون اینه که باید سورس کرنل لینوکس رو از سایت این سیستم عامل بگیرید و بنا بر نیازی که دارید روش کار کنید البته قوانین لینوکس رو هم باید رعایت کنیین .
ولی اگه منظورتون نوشتن برنامه های کاربردیه که با هر زبانی می تونین تحت لینوکس برنامه بنویسین . حتی c# .ولی زبان هایی که بیشتر تو لینوکس استفاده میشن جاوا ، پایتون و برای web php هست .
sinashahab
دوشنبه 08 شهریور 1389, 16:45 عصر
خوب این هسته رو با چی می نویسن ؟
هسته ی سیستم عامل لینوکس رو با C نوشتن و بعدا توی توسعه اش از C++ کردن .
ولی من فکر نکنم منظور شما از برنامه نویسی لینوکس برنامه نویسی کرنل سیستم عامل باشه . اگه منظورتون اینه که باید سورس کرنل لینوکس رو از سایت این سیستم عامل بگیرید و بنا بر نیازی که دارید روش کار کنید البته قوانین لینوکس رو هم باید رعایت کنیین .
ولی اگه منظورتون نوشتن برنامه های کاربردیه که با هر زبانی می تونین تحت لینوکس برنامه بنویسین . حتی C# .ولی زبان هایی که بیشتر تو لینوکس استفاده میشن جاوا ، پایتون و برای web php هست .
منظورتون از C# در محیط unix استفاده از همون پروژه ی مونو هست ؟؟
یا راه بهتری داره ؟!:متفکر::چشمک:
amirh_karimifar
دوشنبه 08 شهریور 1389, 17:13 عصر
نه شما می تونین با نصب کامپایلر c# لینوکس با terminal برنامه تونو دستی کامپایل کنین . البته C# خودم به شخصه c# رو امتحان نکردم ولی C رو امتحان کردم .
ostovarit
دوشنبه 08 شهریور 1389, 17:23 عصر
سلام به همه ی دوستان . من چند وقتی است که C# کار می کنم . می خوام از C# برم سراغ جاوا . آیا دوستان و اساتید صلاح میدونن ، که وقت بذارم واسه این کار و از امکانات .نت بیخیال شم
این سوال خیلی ها می تونه باشه .
چند سالت هست ؟ وقتشو داری میخوای بری سراغ جاوا ؟
یعنی تو سی شارپ انقدر مسلطی که دنبال زبان دوم میخوای بری؟
اگر دنبال یادگیری هستی چرا نمیری تکنولوژی و مطالب روز رو دنبال کنی (silverlight wpf برنامه نویسی سه لایه و...)
موقعیت کار با جاوا رو داری؟
چی میخوای بنویسی که با سی شارپ نمیتونی و نیاز پیدا کردی بری دنبال زبان دیگه؟
برای تفریح و دل خودت میخوای بخونی یا قرار ازش پولم در بیاد؟
... وکلی سوال دیگه که باید جوابشو به خودت بدی بعد تصمیم بگیری ...
من تو سی شارپ مسلط میشم ... و تکنولوژی ها و زبان های نزدیک بهش رو یاد میگیرم ... نه جاوا!
شما رو نمیدونم... اگر هنوز یادگیری رو شروع نکرده بودی بحثش جدا بود ... ولی یک چیز همیشه بوده اونم اینه که استمرار و تمرکز در کار باعث نتیجه میشه نه از شاخه به شاخه دیگه پریدن وسلام.
amirh_karimifar
دوشنبه 08 شهریور 1389, 17:51 عصر
بله درسته
به نظر خود من هم تنها مزیت JAVA با c# LSJRG HC مستقل از پلاتفرم بودنشه که البته کم چیزی نیست.
و بقیه چیزا به خود برنامه نویس ربط داره .
چه بسا یک برنامه نویس با رعایت تمام نکات با c# برنامه ای بنویسه که به مراتب از یک برنامه با jAVA امنیت بیشتری داشته باشه .
#eafshary#
دوشنبه 08 شهریور 1389, 23:34 عصر
با سلام خدمت دوستان. ببخشید من یهو پریدم وسط تاپیک ولی غرض از مزاحمت اینکه من حدود یک سال هست که با سی شارپ کار می کنم و عاشقشم ولی تازگی ها فهمیدم که خیلی راحت میشه به سورس برنامه نوشته شده با سی شارپ دسترسی پیدا کرد!! خوب راستشو بخواین دلزده شدم و سرعت و علاقه ی شدیدی که قبلا در یادگیری سی شارپ داشتم کم شده. از دوستان کسی هست ما رو دلداری بده؟
می خوام برگردم به وی بی 6 یا جاوا که نیمه کاره رهاشون کردم البته بعد از یادگیری کامل سی شارپ. حالا به نظر شما به کدوم برگردم بهتره؟
Salar Ashgi
سه شنبه 09 شهریور 1389, 01:29 صبح
ولی تازگی ها فهمیدم که خیلی راحت میشه به سورس برنامه نوشته شده با سی شارپ دسترسی پیدا کرد!! خوب راستشو بخواین دلزده شدم و سرعت و علاقه ی شدیدی که قبلا در یادگیری سی شارپ داشتم کم شده. از دوستان کسی هست ما رو دلداری بده؟
سلام ، با وجود اینکه این سوال ارتباط چندانی با ماهیت این تاپیک ندارد ؛ ولی این مبحث بارها و بارها
تو همین تالار #C و فک کنم تالار امنیت نرم افزار هم بحث شده و نتیجه گیری هایی هم شده است ،
فقط جهت اطلاع عرض کنم که اولا دسترسی به سورس برنامه های دات نت ، به طور کامل و بی نقص
امکان پذیر نیست و ثانیا طبق نظرات بسیاری از بزرگان این یک ضعف برای دات نت به هیچ وجه نیست !
و اینم بدونید که کرک کردن یا دسترسی به سورس نرم افزار های نوشته شده ، در زبانهای برنامه نویسی
مختلف بصورت نسبی است ، یعنی تو یکی کمی راحتتر میشه به سورس دسترسی پیدا کرد ولی تو یکی
دیگه کمی مشکلاتش زیاده ولی امکانش حتما هست ، یعنی حتی برنامه هایی که با VB6 یا دلفی و ...
نوشته میشن رو هم میشه به سورسشون دسترسی پیدا کرد ./
amirh_karimifar
سه شنبه 09 شهریور 1389, 01:38 صبح
در راستای حرفهای دوستان همونطور که آقا سالار گفتن ، این یه چیز نسبیه و واقعا به برنامه نویس ربط داره .
بازم میگم شما ممکنه با C# برنامه ای ینویسید که با رعایت تمام نکات در حد بالاترین امنیته ولبی همون برنامه رو یکی دیگه با جاوا بنویسه که نکاتو رعایت نکنه و پایین ترین حد امنیت رو داشته باشه .
به نظر خود من حتی پلاتفرم بیسد بودن C# تنها ایرادشه که اونم ایراد C# به .net برمیگرده .
amirh_karimifar
سه شنبه 09 شهریور 1389, 18:33 عصر
دوستان این مقاله رو توی یکی از سایت های فارسی پیدا کردم . گفتم بذارم شاید توی بحثمون کمکمون کنه . مخصوصا برای دوستانی که اول راهن
مقایسهای تطبیقی بین جاوا و داتنت
مقدمه
از آغاز ارائهی .Net توسط شرکت مایکروسافت، یکی از دغدغههای اصلی شرکتهای تولید نرمافزارهای کاربردی، ادارهها، کارخانهها و سایر صنایع، تصمیمگیری بر روی استفاده از یکی از دو فناوری جاوا یا دات نت بوده است. تحلیلهای مختلفی که از سوی مراکز تجاری مختلف ارائه میشوند عمدتاً جنبهی تجارب دارند، به همین علت مشاهده میشود که شرکتهایی که به نوعی شریک تجاری مایکروسافت هستند و یا محصولات آنها عمدتاً بر روی فناوری داتنت است، در مقالات و پیشنهادهای خود از داتنت حمایت میکنند و به همین ترتیب هم شرکتهای مرتبط با فناوری جاوا و علاقهمند به توسعهی سیستمها بر روی سکوی جاوا، آنرا مطمئنترین فناوری برای توسعهی سیستمهای تجاری و بزرگ اعلام میکنند.
در این مستند قصد داریم تا از منظر تولید سیستمهای مبتنی بر وب، مقایسهای کاربردی بین جاوا و داتنت داشته باشیم.
تاریخچه
تاریخجهی فراگیر شدن داتکامها و در واقع ارائهی سرویسهای مجازی مبتنی بر وب به اواخر دههی 90 و خصوصاً سالهای 1998 تا 2000 بر میگردد [JavaWorld]. در آن زمان علاوه بر فراگیر شدن اینترنت، بلوغ مرورگرهای وب و استانداردسازی قراردادهای ارتباطات مبتنی بر وب همه و همه به توسعهی سرویسهای مجازی کمک کردند و به بیانی شرکتها یک زمین مجازی برای ارائهی خدمات یافتند. به تبع آن، نیازی روزافزون برای تسهیل توسعهی سیستمهای مبتنی بر وب احساس میشد.
پاسخ شرکت سان (Sun Microsystems) به این نیازها ارائهی بستهی توسعهی نرمافزار Java 2 Entrrprise Edition (به طور مخفف J2EE، که از نسخهی 5 به بعد به Java EE معروف است) بود. این بسته در واقع مجموعهای از استانداردهای فناوریهای مبتنی بر وب بود که با استفاده از جاوا، مجموعه امکانات جدیدی را به توسعهدهندگان برنامههای وب (و فراتر از آن سیستمهای توزیعشده مانند EJBها) ارائه میداد. J2EE در واقع مجموعهای از استانداردها به همراه پیادهسازی مرجع آنها (عموماً توسط سان) میباشد.
سه سال پس از ارائهی J2EE (که اساساً حول محورهای برنامههای حجیم، معماریهای پیچیده و طراحی منسجم قرار دارد)، مایکروسافت در سال 2002 فناوری داتنت را ارائه داد. در این بستهی توسعهی نرمافزار، مایکروسافت زبانهای گوناگونی چون VB.Net، J#.Net، C++.Net و زبان جدید C#.Net را ارائه داد. همچنین برای توسعهی سیستمهای مبتنی بر وب برنامهنویسان میتوانستند از فناوری ASP.Net استفاده نمایند. کتابخانهی کلاسهای داتنت با در نظر گرفتن امکانات موجود جاوا و به منظور رقابت با آن طراحی شده بودند. با اندک نگاهی به آن میتوان متوجه شد که بر خلاف جاوا که طراحان آن بهترین تمرینها (Best practices) را ملاک طراحی خود قرار داده بودند و به شدت به اصول طراحی پایبندند، پایبندی اصلی طراحان کتابخانهی کلاسهای داتنت، سهولت کاربر و آسانی نوشتن کد (هم از جهت اختصار و هم از جهت ملموس بودن) است.
در ادامهی به بررسی دو فناوری جاوا و داتنت از منظرهای مختلف میپردازیم.
کارایی (Performance)
هر چند مقایسهی کارایی فناوریهای مبتنی بر داتنت و جاوا کاری پیچیده و دشوار است، مقایسهی سرعت محیطهای اجرایی آندو (1) برای برنامههای سرعتگیر و محاسباتی حاکی از آن است که تفاوت چندانی وجود ندارد. برخی ادعا میکنند که به دلیل قابلیت اجرای برنامههای جاوا بر روی بسترهای مختلف نرمافزاری (بر خلاف داتنت که فقط بر روی بستر ویندوز قابل اجراست (2)) کارایی آن نسبت به داتنت کمتر است. این ادعا هر چند در عمل برای برنامههای گرافیکی محیط ویندوز در مقابل برنامههای جاوا مبتنی بر سوینگ (Swing) مشاهده میشود، ولی برای برنامههای سنگین محاسباتی و یا مواردی چون سرعت عملیات ورودی و خروجی (I/O) به چالش کشیده میشود و باید در آن تردید کرد (3).
در مورد اجرای برنامهها، هر دو محیط از روش تفسیر (interpret) (و نه کد ماشین) استفاده میکنند. در این روش پس از کامپایل کد منبع (source code)، یک کد دودویی میانی تولید میشود که برای مفسرهای جاوا/داتنت قابل فهم است. به طور معمول روش تفسیر در زمان اجرا از تولید و اجرای کد ماشین کندتر است ولی هر دو فناوری موجود برای بدست آوردن مزایای تفسیر از تولید کد ماشین صرفنظر کردهاند.
در بعد محسوستر، باید سرعت تولید صفحات پویای ASP.Net را به عنوان مثال با JSP مقایسه کرد. این کار هرچند در نظر اول منطقی به نظر میرسد ولی با آسانی ممکن نیست. صرفنظر از اینکه دیگران چه ادعاهایی در مورد سرعت برنامههای تحت وب جاوا در مقابل داتنت دارند توجه به نکات زیر ضروری است:
برنامههای ASP.Net بالاجبار از تنها سرور قابل اطمینان برنامههای داتنت آیآیاس (Microsoft’s Internet Information System) استفاده میکنند. این وب سرور یکی از قدرتمندترین وبسرورهای محیط ویندوز است که منحصراً در همان محیط اجرا میشود. در مقابل برای توسعهی یک برنامهی تحت وب J2EE طیف وسیعی از سرورهای برنامهی کاربردی از تجاری گرفته تا بازمتن (open source) و از سنگینوزن (heavy weight) گرفته تا سرورهای جاسازی شده (embedded) در اختیار برنامهساز وب است. در این میان میتوان از حداقل 10 سرور زنده و محبوب نام برد که بر روی تمامی محیطهایی که جاوا در آن اجرا میشود نصب میشوند (4).
ASP.Net به خصوص در نسخهی داتنت دو، طیف وسیعی از امکانات ساخت برنامههای غنی تحت وب را در اختیار برنامهساز قرار میدهد، در حالی که با استفاده از JSP و یا نهایتاً JSF، کاربر بسیاری از آن امکانات را توسط کتابخانههای جانبی و یا به صورت دستی به برنامه اضافه میکند. این امکانات یکپارچه مزیت خوبی را برای سرعت برنامههای داتنت مهیا میکنند، هر چند نمیتوان حقیقتاً در مورد سرعت رندر شدن (rendering) صفحات ASP.Net و JSP به سادگی قضاوت کرد.
در مجموع میتوان گفت به جز مواردی نظیر برنامههای گرافیکی تحت ویندوز، برنامههای داتنت مزیتی از لحاظ سرعت اجرا بر جاوا ندارند و حتی در مواردی کندتر اجرا میشوند.
زمان توسعه
اساساً این یک حقیقت است که سرعت توسعهی برنامههای داتنت بیشتر از برنامههای J2EE است، هرچند باید به این نکته توجه داشت که برای هر شرکت تولید نرمافزار، مهم تخصصهای موجود در آن شرکت است. در صورتی که تخصصهای برابر داتنت و جاوا وجود داشته باشد، سرعت تولید برنامههای تحت وب داتنت - مشروط بر شرایط زیر - به صورت محسوسی بیشتر از برنامههای J2EE است:
محیط و فناوریهای مورد استفاده توسط مایکروسافت پشتیبانی شوند. این بدان معنی است که بهترین حالت برای تولید نرمافزار در محیط داتنت، استفاده از VS.Net در کنار VSS (مدیریت کنترل نسخههای متن برنامه)، MS SQL Server به عنوان دِیتابیس سِرور و IIS به عنوان وب سرور میباشد. تغییر هر یک از موارد فوق به یک محصول غیر مایکروسافتی (مثلاً استفاده از اراکل به جای SQL Server) مساوی با تأخیر در تولید نرمافزار در محیط داتنت است.
به دلیل قدمت بیشتر جاوا (از حدود سال 1996) در برابر داتنت (از 2002) کتابخانههای گوناگونی برای تقریباً هر کاری برای جاوا نوشته شده است. در حالی که داتنت تلاش میکند در این مورد از جاوا عقب نماند، ولی این حقیقت کماکان وجود دارد که عموماً کتابخانههای قابل قبول داتنت توسط شرکت مایکروسافت ارائه میشوند. کافی است مقایسهای بین برنامههای موجود بر سایت SourceForge.net داشته باشیم. در حال حاضر (شهریور 85) در برابر 6.480 برنامهی مختلف به زبانهای VB.Net و C#.Net، بیش از 22.000 برنامه جاوا (شامل کتابخانهها، برنامههای کاربردی، بازیها، ابزارهای اینترنت و ...) وجود دارد. این واقعیت وجود دارد که در برابر 3 یا 4 کتابخانهی مختلف بازمتن جاوا برای یک کار خاص (مثلاً فشردهسازی، ایمیل، پروتکلهای مختلف شبکه و ...) یک و یا دو پیادهسازی مورد استفاده در داتنت (و آنهم متعلق به مایکروسافت) وجود دارد. در واقع در برابر بازار آزاد و خنثای تولید نرمافزارهای Java/J2EE (که با ارائهی استاندارد و لیسانس کردن نرمافزارها، به شرکتهای مختلف اجازه میدهد تا پیادهسازی خود را برای هر استاندارد J2EE ارائه دهند)، انحصار بازار و تجارت اصلی داتنت در اختیار مایکروسافت است.
انجمن (community)
جاوا و داتنت توسط طیف وسیعی از کاربران مورد استفاده قرار میگیرند. در حالی که شرکتهای بزرگی چون مایکروسافت و SAP از طرفداران اصلی داتنت هستند، در طرف دیگر میدان سان، اراکل (Oracle)، آیبیام (IBM) و رِدهَت (RedHat) حضور دارند. اراکل در دیتابیس خود یکپارچگی قابل قبولی با جاوا ارائه میکند و در عین حال هر سه شرکت اراکل، آیبیام و سان (و همچنین BEA) بستهی JDK خود را تحت لیسانس سان (یعنی به صورت کاملاً Sun compaliant) ارائه میدهند. در این مورد کاربران با گزینههای مختلفی از بستهی توسعهی نرمافزار جاوا مواجهند.
تقریباً تمامی دیتابیسهای کنونی قابل استفاده در هر دو محیط داتنت (با استفاده از ODBC و یا native client) و جاوا (JDBC) هستند.
سایتها، میلینگلیستها، انجمنها و گروههای مجازی به دلیل قدمت بیشتر جاوا، به مراتب از داتنت بیشترند. و باز به همین دلیل کتابخانههای موجود جاوا بسیار وسیعتر از موارد مشابه داتنت هستند.
قابلیت گسترش
هر دو محیط استراتژیهای مناسبی را برای تأمین امنیت به کار میگیرند و انواع روشهای رمزنگاری را پشتیبانی میکنند. تفاوت عمده در این بخش نیز همچون بسیاری از بخشهای دیگر، پشتیبانی عمیق و یکجنس امنیت در سطح مایکروسافت ویندوز برای محیط داتنت در مقابل پشتیبانی فراگیر و ناهمگن برای محیطهای مختلف توسط جاوا است.
سهولت استفاده برنامهنویس
به نظر میرسد هدف مهم در طراحی کتابخانهی کلاسهای داتنت، سهولت استفادهی برنامهنویس باشد. این سهولت در جاوا با به کارگیری تکنیکهای پیچیدهی طراحی دقیق شیگرایی تا حدی از دست داده شده است.
آسانی یادگیری
به نظر نمیرسد در این مورد تفاوت خاصی بین دو فناوری وجود داشته باشد، هرچند پشتیبانی داتنت از چندین زبان به برنامهنویسان این امکان را میدهد که ملموسترین زبان را برای خود انتخاب کنند.
انحصار (سیستمعامل، ابزارها و ...)
همانطور که پیشتر نیز اشاره شد، مزیت اصلی استفاده از داتنت، یکپارچگی به کارگیری محصولات مایکروسافت است. بر خلاف آن سان صرفاً استانداردها را (با مشارکت شرکتهای بزرگ دیگر) در انجمن JCP وضع میکند و شرکتهای مختلف به پیادهسازی آن استاندارد میپردازند.
از مزایای دیگر جاوا قابلیت اجرای آن بر روی اکثر سیستمعاملهای موجود است. در واقع این به عنوان مهمترین برتری جاوا بر داتنت شناخته میشود، هر چند برخی آنرا سرگردان کننده میدانند. جاوا از موبایلهای ساده تا دستگاههای اکترونیکی نظیر ماکروفر و یخچال و PDA حضور دارد (نسخهی سبک جاوا). در مقابل داتنت هم بر روی PDAهای Pocket PC وجود دارد (نسخهی سبک داتنت).
سختافزار مورد نیاز
تفاوت زیادی بین سختافزار مورد نیاز وجود ندارد؛ اگرچه برنامهاهی جاوا عموماً به عنوان مصرفکنندهی بالای حافظه شناخته میشوند، داتنت هم در این عرصه دست کمی از جاوا ندارد.
نرمافزار مورد نیاز
برای برنامهسازی جاوا باید Java SDK را در اختیار داشت و برای داتنت نیز .Net Framework که هر دو به صورت رایگان قابل دریافتند.
اپنسورس
اساساً تعداد زیادی از پروژهها بر روی هر دو محیط به صورت بازمتن عرضه میشوند ولی در این عرصه تمایز زیادی بین داتنت و جاوا وجود دارد. از همان اوایل عرضهی جاوا و به خصوص J2EE شرکتهای زیادی به عرضهی محصولات در این حوزه پرداختند. از جمله بنیاد نرمافزاری آپاچی با هزینهی شرکتهای بزرگتری چون سان، بیئیاِی و آیبیام سالهاست که به تولید کتابخانهها، سرورها و سایر ملزومات برنامهسازی میپردازد.
یک برنامهنویس محیط جاوا به سادگی میتواند با استفاده از هر فناوری حوزهی J2EE یک نرمافزار - فقط با استفاده از ابزارهای بازمتن - تولید کند.
به علاوه روند توسعهی خود Java SDK به سایت java.net (که حاوی پروژههای باز متن جاوا است) منتقل شده و کاربران از نسخهی Java SE 5 به بعد به سادگی به کد منبع SDK جاوا دسترسی دارند. این موضوع متأسفانه هنوز در مورد داتنت اتفاق نیفتاده ولی با توجه به رویکرد جدید مایکروسافت نسبت به حمایت از پروژههای بازمتن بعید نیست در سالهای آتی شاهد آن باشیم.
به تازگی سان اعلام کرده که میخواهد بستهی نرمافزاری توسعهی جاوا را تحت لیسانس آزاد گنو (GNU General Public License) ارائه کند.
در کنار این جریان مایکروسافت هم با حمایت از چند سایت (که پروژههای بازمتن را توسعه میدهند) قصد دارد تا نقشی در عرصهی بازمتن ایفا کند. سایتهای GotDotNet و CodePlex از این دستهاند.
محیط برنامه سازی (IDE: Integrated Development Environment)
یکی از موارد مهم در تولید نرمافزار ابزار اصلی برنامهنویسان یعنی محیط برنامهسازی با IDE میباشد. در حالی که داتنت تنها یک IDE قدرتمند دارد که غیر رایگان است، جاوا در حدود ده IDE مختلف از محیطهای بازمتنی مانند Eclipse و NetBeans گرفته تا محیطهای تجاری چون IntelliJ IDEA، JBuilder، Workshop، JDeveloper و WebSphere را در اختیار دارد.
یگانه محیط برنامهسازی داتنت Visual Studio.Net میباشد که تقریباً تمامی امکاناتی که یک IDE بالغ باید داشته باشد را در خود گرد آورده. در مقابل ابزارهای بازمتنی چون Eclipse با قابلیت نصب pluginهای گوناگون، IDEهای دیگر را به چالش میکشد. هرچند محیطهای بازمتنی چون SharpDevelop هم برای توسعهی برنامههای داتنت در اختیار است، لیکن این محیطها تفاوت چشمگیری با VS.Net دارند.
در حوزههای زیر نیز میتوان مقایسهای بین این دو فناوری به عمل آورد، که این مقایسه را به مجالی دیگر فرا مینهیم.
سرورها
دیتابیس
هزینهی تولید
انجمن کاربران
قابلیت نگهداشتن
زمان رساندن محصول به بازار
ارتباط دو فناوری با فناوریهای دیگر و با یکدیگر
نتیجهگیری
باید توجه داشت که قالب مستنداتی از این دست که مقایسهای بین فناوریهای مختلف انجام میشوند، جانبدارانه، به منظور بازارگرمی و حمایت از یک فناوری نوشته میشوند (و شاید این مستند هم از این قاعده مستثنا نباشد، هر چند تلاش شد تا بیطرفی حفظ شود)؛ لذا به نظر اکثر صاحبنظران حوزهی مهندسی نرمافزار، مهم این است که تیم تولید چه مهارتهایی را دارد و چه محدودیتهایی در محیط وجود دارد. این یک واقعیت است که به ازای هر امکان در جاوا امکان مشابهی در داتنت وجود دارد (و بالعکس) و نهایتاً مدیر باید تصمیم خود را عاقلانه و بر مبنای مهارت تیم تولید، امکانات سختافزاری/نرمافزاری ، سهولت استفادهی کاربران، زمان تولید، سیستم عامل هدف و مواردی از این دست بگیرد.
(1) .Net CLR (Common Language Runtime) versus JVM (Java Virtual Machine)
(2) پروژهی مونو (Mono) یک پیادهسازی غیر رسمی محیطکار داتنت بر روی سیستم عامل لینوکس است، که هر چند امکان اجرای بسیاری از برنامههای داتنت را بر روی لینوکس فراهم میکند، لکن به دلیل ماهیت غیر رسمیاش، هیچگاه به عنوان یک محیطکار کامل و منطبق با پیادهسازی مایکروسافت شناخته نمیشود.
(3) Performance Comparison of Java/.NET Runtimes
(4) Tomcat, JBoss, Weblogic, OC4J, WebSphere, Jetty, JonAS, Caucho, ...
منبع : http://saboorian.blogspot.com/2006/12/blog-post_05.html
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.