# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > C#‎‎ > سوال: جاوا بهتره یا سی شارپ

## oioioi

من میخام  بدونم که C#‎ بهتره یا java 
من خودم دانش جوی نرم افزارم و به ما C#‎ یاد دادن حالا شنیدم که میگن java بهتره حالا به نظره شما اساتید من برم سراغ java یا C#‎ 
کدومش  از نظره درآمد،بازار کار تو ایران بهتره

----------


## haghft

ببین هر زبانی ویژگی های خاص خودشو داره بستگی به کاری که میخای بکنی داره ولی من به شخصه با C#‎ بیشتر حال میکنم در مورد درآمد هیچ فرقی نداره اگه حرفه ای باشی باسه هر دوتاش بازار هست.

----------


## saman6384

به نظر من اگه شما C#‎ رو کامل یاد بگیری ( wpf, silverlight,asp,....) دیگه نیازی به زبون دیگه نداری!!! 
البته بلد بودنشون خیلی خوبه!  اما سی شارپ کاره همشونو میکنه! ( اشتباه میکنم؟؟)

یه بار یکی از بچه ها تو دانشگاه یه کنفرانس داش !! تو اون تعریف کرد که یه تست از C#‎ و java گرفتن تویه همایشی! C#‎ هم کدهای نوشته شدش تویه اون برنامه تست کمتر بوده! هم سرعتش بیشتر بوده!


تو این سایت هم برو خودت مقایسشون کن : لینک

----------


## sia_2007

هر زبونی رو حرفه ای بلد باشی همه چی حله
به شرطی که زبانش دیگه خیلی از رده خارج نباشه
ببین کدوم رو بیشتر پسند میکنی همون رو کار کن
موفق باشی

----------


## r00tkit

> به نظر من اگه شما C#‎ رو کامل یاد بگیری ( wpf, silverlight,asp,....) دیگه نیازی به زبون دیگه نداری!!! 
> البته بلد بودنشون خیلی خوبه!  اما سی شارپ کاره همشونو میکنه! (* اشتباه میکنم؟؟*)


بله  اشتباه می کنی احتمالا تا حالا به گوش شما چیز هایی مثل JBoss  نرسیده ؟

 حال توضیح ندارم  :) اینو بخونید :http://en.wikipedia.org/wiki/Application_server

هر چند قدیمی هستش( تو بعضی جاهاش شک دارم الان تو این زمان  ) ولی بخونش 
https://barnamenevis.org/archive/index.php/t-5935.html

----------


## zarrinnegar

> من میخام  بدونم که C#‎ بهتره یا java 
> من خودم دانش جوی نرم افزارم و به ما C#‎ یاد دادن حالا شنیدم که میگن java بهتره حالا به نظره شما اساتید من برم سراغ java یا C#‎ 
> کدومش  از نظره درآمد،بازار کار تو ایران بهتره


C#‎ برنامه نویسی به زبان عامیانه است وابسطه به سیستم عامل مخصوصا مایکروسافت همه جور کار ازش بر نمی آد برای کسایی خوبه که میخوان در کوتاهترین زمان یک application بسازن . شخص رو کد نویس بار نمیاره و وابسطه به ابزار ها میکنه و قشنگی و گرافیک و سهل الوصول بودن انجام کارها باعث میشه یه عده زیادی بهش رجوع کنن
اما جاوا اینطوری نیست تمام چیزهایی رو که میخوای باید براش کد بنویسی و اگه کسی بگه نه ابزار داره و میشه باهاش راحت برنامه نوشت من میگم داره و تا حالا باهاش یک پروژه جمع کردی؟ تا ببینی مشکلاتش چیه ؟ 
بک زبان opensource یعنی کد هاش بازه و همه میتونن ببینن چی نوشتی اصل خصوصیتش هم همینه 
به سیستم عامل محتاج نیست تو هر سیستم عاملی کار میکنه
برنامه هایی که باهاش میتویسن کاراتره
مثلا تا حالا دیدی بگن ابن برنامه موبایل رو با C#‎ نوشتن ؟ اگر هم باشه انگشت شماره 
حالا چرا برنامه گوشیها رو با جاوا مینویسن؟ برای اینکه با پروسس کمی که گوشی داره بتونه برنامه رو اجرا کنه

نمیخوام حاشیه برم 
برای ما ها که میخواهیم یک پروژه معمولی زیر 10 میلون رکوردی مینویسیم C#‎ خوبه و برای بالای اون جاوا خوبه با اوراکل که ترکیب فوق العاده ایه
هزینه ساخت یک نرم افزار مثلا حسابداری اگه با C#‎  2 میلیون تومن باشه با جاوا 10 میلیون تومن میشه زمان طراحی اون هم به همین نسبته
یک برنامه نویس .net خیلی خوب فوقش ماهی 1.5 میلیون میگیره ولی یک جاوا کار ساعتی 100 الی 150 هزارتومن میگیره

مین این اطلاعات رو از رو تجربه کاری و دیدن پروژه هایی که با هر 2 زبان اجرا شدن میگم
ممکنه نظرات دیگرون متفاوت باشه

----------


## cardano7

با سلام
دوباره از اون بحث ها شروع شد!




> C#‎ برنامه نویسی به زبان عامیانه است


اي که وگفتي يعني چه؟

 
مشتي لايبري ها رو لود کن بينم;
 
رويداد: اگه کاربر اون دکمه را چلوند()
{
يک ديالوگ باز کن اسمش را بذار حسن;
حاجی محاسبات را انجام بده حاصلش ميشه نقي;
نقي را به کاربر نشون بده;
}

 نه بابا این جوری ها هم نیست!




> اما جاوا اینطوری نیست تمام چیزهایی رو که میخوای باید براش کد بنویسی


اين هم شد مزيت؟





> مثلا تا حالا دیدی بگن ابن برنامه موبایل رو با C#‎ نوشتن ؟


تا حالا ديدي کسي روي گوشيش فاير فاکس نصب کنه؟





> یک برنامه نویس .net خیلی خوب فوقش ماهی 1.5 میلیون میگیره ولی یک جاوا کار ساعتی 100 الی 150 هزارتومن میگیره


اين جور مراکز سخاوتمند را به ما هم معرفي کنيد بريم اونجا کار کنيم :D




> همه جور کار ازش بر نمی آد


ميشه چند مورد مثال بزنيد؟

----------


## unknown.unforgiven

سوالت مثل این میمونه که بگی ماشین بهتره یا کامیون؟! #C برای application مناسب تره تا جاوا، جاوا هم برای web application مناسب تره تا #C. برای مثال یه برنامه تو هر دو محیط بنویس ببین کدوم سریع تر اجرا میشه؟ با وجود اینکه هر دو زبان دارن توسط یه واسط اجرا میشن، برنامه های جاوا خیلی کندتر از #C اجرا میشن (قصد زیر سوال بردن این زبان رو ندارم، زبان قوی هست ولی خوب سرعتش کمتره). همون جور که دوستمون گفتن جاوا رو هر سیستم عاملی اجرا میشه ولی #C نه (جدیداً #C رو هم میشه رو بقیه سیستم عامل ها کد کرد)، حرفشون تقریباً درسته ولی من به شخصه ترجیح میدم اگه بخوام تو سیستم عامل های مختلف کد بزنم از ++C استفاده کنم تا جاوا. با وجود اینکه برنامه خیلی سخت تر میشه ولی سرعتش خیلی بهتره. اگر هم که میخوای تحت وب کد بزنی جاوا حرف اول رو میزنه (البته جدیداً phyton داره رو دستش بلند میشه)

----------


## haghft

الان C#‎ خیلی پیشرفت کرده اینطورهم که دوستمون میگه نیست.با C#‎ برای Windows phone 7 و با استفاده از پروژه mono که از jdk هم بهتر میدوننش باسه Android برنامه مینویسن و برای iOS هم قراره پروژه مونو بیاد.با استفاده از .NET Micro Framework هم میتونید برای بعضی دستگاه ها میکروکنترلر بنویسید پس همچین هم زبان وابسته ای به سیستم عامل نیست!تازه جاوا هم نیاز به ماشین مجازی داره و یک زبان Native نیست!

----------


## sabloger

با سلام خدمت اساتید گرامی


بنده هم مثل این دوستمون همین مشکل رو دارم و میخوام در همین اول کاری راهمو مشخص کنم
خودم که #C رو خیلی دوست دارم و باهاش راهتم، اما بین #C و JAVA و حتی Phyton موندم

حالا هم به نظر من اینقدر سرعت پردازش گرا زیاد شده که اونقدر فاصله زمانی بین اجرای اونا مهم باشه(البته این نظر بندس!)

اما نظر خود بنده اینه که شاید بهتر باشه که آدم JAVA  کار باشه ولی توی #C هم حرفه ای باشه

با تشکر از همگی

----------


## mobtakercode

> C#‎ برنامه نویسی به زبان عامیانه است وابسطه به سیستم عامل مخصوصا مایکروسافت همه جور کار ازش بر نمی آد برای کسایی خوبه که میخوان در کوتاهترین زمان یک application بسازن . شخص رو کد نویس بار نمیاره و وابسطه به ابزار ها میکنه و قشنگی و گرافیک و سهل الوصول بودن انجام کارها باعث میشه یه عده زیادی بهش رجوع کنن


اینم از اون جملات است برنامه نویسی به زبان عامیانه
خوب حالا هردوتاشون از c و C++‎ بهره های زیادی برده اند

اما این زبان نیست که کسی را کدنویس یا برنامه نویس می کند بلکه تلاش و فکر فرد است که برنامه نویس می شود
اما در پاسخ به اصل سوال
C#‎  یا جاوا
به نظرم وقتتان را با جاوا تلف نکنید امروزه هزینه ها بالاست و اکثر شرکتها  و افراد به دنبال این هستند که سریع پروژه ها تمام شود و این فقط با C#‎ و صد البته ویژوال استودیو متحقق می شود

----------


## saman6384

> بله  اشتباه می کنی احتمالا تا حالا به گوش شما چیز هایی مثل JBoss  نرسیده ؟
> 
>  حال توضیح ندارم  :) اینو بخونید :http://en.wikipedia.org/wiki/Application_server
> 
> هر چند قدیمی هستش( تو بعضی جاهاش شک دارم الان تو این زمان  ) ولی بخونش 
> https://barnamenevis.org/archive/index.php/t-5935.html


شما میگی #C نمیتونه کارای J2EE رو انجام بده؟!

حال توضیح نداری؟ :لبخند گشاده!: 
لطف کن یه نمونه کوچولو مثال بزن بلکه مام یچیز جدید یاد بگیریم  :چشمک:

----------


## r00tkit

یه مشت مقایسهی  کوچه بازاری دارید انجام می دید

 برای چی از مطالب غلط  تشکر می کنید ؟؟




> شما میگی #C نمیتونه کارای J2EE رو انجام بده؟!


عزیر برادر  J2EE یه  application server هستش  C#‎ یه زبان  و .NET یه فریم ورک   اینا دو چیز جدا  از هم هستن  این نه یه خوبی هستش نه یه بدی  .net همیه J2EE هم همین 

Application server  یک زیرساخت نرم افزاری است که وظیفه‌اش application lifecycle management  است. یعنی بایستی در تمام چرخه تولید نرم افزار باید به تمام نیازهای نرم‌افزاری پاسخ دهد.این نیازها می‌تواند شامل بانک اطلاعاتی، وب سرور، سرویس smtp و.... باشد.


اینپرایز (ع):

سوال : چرا فکر میکنم میشه به دات نت و J2EE به عنوان دو موجودیت مستقل نگاه کرد و هر دو رو بررسی کرد اما مقایسه نکرد ؟

جواب : بخاطر مؤلفه های ذاتی هر کدام از این تکنولوژی ها . J2EE یک  استاندارد برای تحقق یک Application Server است در حالیکه دات نت یک " نرم  افزار" است که "فقط" کلاسهای "پایه" برای تولید نرم افزارهای مستقل یا  مرتبط شبکه ای رو در اختیار توسعه گر قرار میده .

دات نت : یعنی یک بستر برای ایجاد نرم افزار . یک بار توسط مایکروسافت  نوشته شده و بقیه باید از اون استفاده کنند اما تمام دات نت چیزی بیشتر از  یک "بستر اجرای کد و کتابخانه مقدماتی کلاس" نیست . تمام دات نت یک  FrameWork است و یک محیط تولید نرم افزار + مستنداتی جهت ایجاد ابزارهای  متفرقه تولید نرم افزار ( e.g : compiler )

J2EE : یک استاندارد است که مشخص میکند برای پاسخ دادن به یک نیاز نرم  افزاری " سازمان مقیاس" چگونه باید با اجزاء نرم افزار رفتار کرد و برای  مدیریت طول عمر نرم افزار ( Application Lifecycle Management ) چکار باید  کرد . این استاندارد توسط سان ارائه شده . خیلی ها مبتنی بر این استاندارد  نرم افزارهای خودکار سازی ایجاد کرده اند ، سان مایکروسیستمز نیز هم .  استاندارد J2EE میگه چگونه با "زبان جاوا" یک FrameWork ایجاد کنیم ، چگونه  کتابخانهء کلاس برای تمام مقاصد بنویسیم ، بانک اطلاعاتی چطور باشه و ... و  شرکتهای متعددی بر اساس این استاندارد Application Server های مبتنی بر  J2EE ایجاد کرده اند که برخی شون تمام J2EE رو پیاده سازی کرده اند و برخی  شون فقط بخشی از اون رو . در مورد جزئیات Application Server های J2EE کمی  بعد توضیح میدم .

سوال : پس احتمالا" کلید درک تفاوت ماهیتی دات نت و J2EE در درک صحیح از مفهوم Application Server خلاصه میشه ، درسته ؟

جواب : بله . Application Server یک بستهء نرم افزاری است که وظیفه اش  Application Lifecycle Management است . یعنی از ابتدای تولد یک نرم افزار  "سازمان مقیاس" تا انتهای اتمام تولید ، باید به تمام نیازهای نرم افزاری  پاسخ دهد . یعنی اگر برنامه نویس به یک FrameWork احتیاج داشت ،  Application Server یک Framework به او بدهد ، اگر بانک اطلاعاتی خواست ،  Application Server یک بانک اطلاعاتی کامل برایش فراهم کند ، اگر وب سرور  خواست ، Application Server یک وب سرور تمام عیار به او بدهد ، اگر برای  ارسال نامه های الکترونیکی برنامه اش به یک SMTP سرور نیاز داشت ،  Application Server یک سرور SMTP به او بدهد ، اگر قرار شد برای احراز هویت  از Kerberos استفاده کند یک پیاده سازی کربرایزد از استک TCP/IP در  Application server وجود داشته باشد ، اگر خواست برای منطق محاسباتی برنامه  اش یک GUI ایجاد کند ، Application Server یک IDE و GUI Builder به او  بدهد ، اگر خواست داده های کاربری رو از کارتهای هوشمند ( smart Card )  دریافت کند ، رابطهای لازم و API های مربوطه را از Application Server  بگیرد و ... به دیگر بیان Application Server یک محیط Integrated است برای  طراحی و تولید و مدیریت و توزیع و کاربرد یک نرم افزار "سازمان مقیاس" .  شاید این سوال در ذهن عده ای ایجاد بشه که مگه تمام اجزاء یک Application  Server رو نمیشه بصورت منفرد پیدا کرد ؟ وب سرور ، GUI Builder ، سرور پست  الکترونیکی ، توابع احراز هویت ، بستر اجرای کد و ... ؟ جواب مثبته اما چه  کسی میتونه تضمین کنه تمام این اجزاء دارای "سطح" ی یکنواخت و یکسان باشند ؟  ( Innovative Integrated Interface ) یا مثلا" کی میتونه تضمین کنه یک  بستر اجرای کد بتونه توابع دسترسی به بانک اطلاعاتی رو با بهینه ترین وضعیت  تولید کنه ؟ یا تضمین کنه این عناصر با هم سازگاری مناسبی داشته باشن ؟  همگی تولید شده توسط یک بستر خاص باشند که توسط همون بستر بشه بین اونها  ارتباط برقرار کرد ؟ اینجا مسئله سازگاریه . یعنی اگر قرار شد یک گروه نرم  افزاری برای بزرگترین سازمان بیمه غیر دولتی امریکا یک راهکار جامع ERP  تولید کند ( یا بخرد و خصوصی سازی کند برای محیطش ) باید به چه بستری  اعتماد کنه که مطمئن باشه تمام درخواستهای نرم افزاری " سازمان مقیاس" ش رو  میتونه جواب بده و مشخصه های اون ، سازمانش رو به یک نرم افزار خاص ، سخت  افزار خاص ، پروتکل خاص و ... محدود نمیکنه ؟ ( اصولا" محدودیت در ادبیات  آی تی ، سطح اعتماد و قابلیت وثوق - Reliability - رو کاهش میده ) اینجاست  که یک Application Server خودنمائی میکنه . یک Application Server تضمین  میکنه که از بستر اجرای کد گرفته تا وب سرور ، از توابع امنیتی گرفته تا  بانک اطلاعاتی ، از IDE گرفته تا ابزارهای حمایت از UP ( یا Unified  Process ) و ... در بستهء نرم افزاریش وجود داره .

سوال : خوب حالا با این توصیفات J2EE دقیقا" چیه ؟
جواب : J2EE در واقع یوتوپیا ( آرمان شهر ) شرکت سان مایکروسیستمز است برای تولید یک Application Server.

نتیجه : فکر میکنم مطالب بالا باعث شده باشه این تصور غلط که میشه بین دات نت و J2EE مقایسه ای وجود داشته باشه ، از بین برده باشه .

ابسترکت : چه زمانی J2EE مناسب است ؟

شرکت سان غیر از ارائه یوتوپیای یک Application Server کارهای دیگری هم  انجام داده . مثلا" توسعه زبان جاوا . طبیعیه که زبان جاوا زبان استاندارد  توسعه نرم افزارهای مبتنی بر J2EE باشه ، هر چند بر خلاف اظهارات ناشیانه  برخی ، J2EE و خصوصا" بستر اجرای کدش ، به زبان جاوا منحصر نیست . یعنی  همونطور که [مثلا"] بستر دات نت قابلیت پذیرش زبانهای مختلف رو داره ،  بسترهای مبتنی بر جاوا هم میتونن به سایر زبانهای برنامه نویسی سرویس بده .  یعنی براحتی میشه بین جاوا و سایر کتابخانه هائی که توسط سایر زبانهای  برنامه نویسی تولید شده ارتباط برقرار کرد . ( Java Native Interface ) هر  چند که مثل دات نت منعطف نیست . سان داره تلاش میکنه یک Application Server  مبتنی بر استاندارد خودش یعنی J2EE تولید کنه اما هنوز تکمیل نشده . ( سان  فعالیت گسترده ای برای توسعه خود جاوا و بهینه سازی منطق J2EE و کلاسهای  تولید نرم افزار داره ، فعالیتهای خفنی در هم در عرصه سخت افزار داره ،  نباید انتظاری بیش از این ازش داشت ) اما نگارشهای عملیاتی متعددی از  Application Server های مبتنی بر J2EE وجود داره که فقط یکی از اونها تمام  جزئیات رو پیاده سازی کرده .


معرفی Application Server اوراکل به عنوان جامعترین Application Server :

در ایران اغلب اوراکل رو به عنوان یک بانک اطلاعاتی میشناسن در حالیکه بانک  اطلاعاتی اوراکل فقط بخشی از اون چیزی است که اوراکل تحت عنوان e-Bussines  Suite منتشر کرده . Application Server اوراکل تمام اون چیزهائی که در وصف  یک Application Server عرض کردم داره . بطور مختصر و لیست وار در موردش  توضیحاتی عرض میکنم تا کمی روشنتر بشه بحث :

1. یک بانک اطلاعاتی کامل : اوراکل فعلا" تنها بانک اطلاعاتی است که نه  تنها نسخه های متعددی برای MainFrame ها داره ، برای تمام بسترهای نرم  افزاری و سخت افزاری موجود هم نسخه هائی رو ارائه کرده . بزرگترین بانک  اطلاعاتی که این حقیر در جریانش هستم و با اوراکل کار میکنه بانک اطلاعاتی  وزارت انرژی ایالات متحده آمریکاست که روی یک MainFrame شرکت IBM اجرا شده .  بانک اوراکل یک نسخهء کامل زبان پرس و جوی ساخت یافته یعنی PL/SQL ، یک  سوئیت کامل بنام PSP که برای تولید صفحات وب بطور مستقیم از PL/SQL استفاده  میکنه است . اوراکل تنها بانک اطلاعاتی است که موتور آن ( DB Engine ) هم  میتونه بصورت توزیع شده و چند بخشی ( Clustered ) اجرا بشه . حتی میشه بخضی  از انجین رو روی یک بستر کوچک وینتل( ویندوز + اینتل) و بخشی دیگر رو روی  یک ماشین غول پیکر HP مجهز به HP-UX اجرا کرد . حتی میشه حین سرویس دهی  بانک ، بانک رو از یک پلت فرم به پلت فرم دیگه منتقل کرد . ( ویژگی های  منحصر به فردش رو عرض کردم )

2. یک بستر اجرای کد نرم افزار : Application Server شرکت اوراکل بطور کامل  "بخش نرم افزاری J2EE " یعنی کتابخانه های کلاسش رو پیاده سازی کرده .

JDBC Connectors
JSP Engine
JavaBeans Engine
RMI
JMS
JINI
JMX
JIRO
J2EE CORBA ORB
JXTA
JXML
JCP
JNI
Web Service Implementation
و ...

یعنی هر کسی هر برنامه ای مبتنی بر J2EE نوشته باشه در بستر Application  Server اوراکل قابل اجرا و سرویس دهی است . اوراکل J2SE و J2ME رو هم حمایت  میکنه ( دومی برای تولید برنامه های موبایل برای پورتابل دیوایسها کاربرد  داره ) . همچنین اوراکل بطور کامل یک نسخه از Java Smart Card API رو پیاد  سازی کرده . در حال حاضر جاوا تنها ابزاری است که میشه توسط اون تقریبا"  برای تمام کارتهای هوشمند برنامه نوشت ضمن اینکه توسط قابلیت فوق الذکر  قطعه کدهای قابل ذخیره سازی در کارتهای هوشمند هم قابل تولید است . فرض  کنید یک تابع تبدیل تاریخ مینویسید و تابع رو داخل کارت هوشمند قرار میدید ،  هر وقت نرم افزار اون تابع رو صدا زد کارت رو در کارت خوان میگذارید و  برنامه شما تابع رو روی کارت هوشمند صدا میزنه و جواب میگیره بدون اینکه در  مورد پیاده سازی اش چیزی بدونه .

3. اوراکل یک وب سرور مخصوص به خود ، همچنین سرورهای :

POP3
SMTP
FTP
WebDav
Cache Server
Common Internet File system - CIFS
LDAP compatible Directory Service
و...

رو بطور کامل پیاده سازی کرده . تمام این سرورهای نرم افزاری کاملا" با هم  سازگار هستند و برای کار روی یک محیط مبتنی بر J2EE بهینه سازی و خصوصی  سازی شدن .

4. اوراکل یک content Management System داره که قابلیت ایجاد پورتال های  مبتنی بر وب روی اینترنت یا اینترانت رو به "نرم افزار" های J2EE میده .

5. اوراکل یک محیط کامل تولید برنامهء کاربردی بنام اوراکل J Developer داره که یک IDE و GUI Builder کامل است .

6. اوراکل یک سرویس ( یعنی نرم افزارهائی + سرویس دهنده هائی ) برای ایجاد  ویژوال گزارش از بانک اطلاعاتی داره . گزارشها میتونن طراحی بشن تا از داده  ها استفاده کنن و خروجی بدن ، یا یک سرویس تولید گزارش به یک نرم افزار  متصل بشه تا در زمان اجرا مولفه های گزارش به سرویس گزارش درخواست داده بشن  تا گزارش رو طراحی کنه ، به داده متصل کنه و خروجی بده . بهش میگن  Reporting Service

7. ابزارهای مددیریتی قدرتمند برای کنترل تراکنشهای بانک اطلاعاتی خارج از  محیط بانک ( منحصر به فرد ) ، کنترل وضعیت اشیاء مثلا" EJB ها و سطح دسترسی  آنها ، انتقال سرویسهای از یک پلت فرم به پلت فرم دیگر بدون توقف روند  سرویس دهی ، صف گذاری منطقی و مدیریت شده درخواستها و ...

8. Load Balancer اوراکل کمک میکنه سرویسها ، بانکهای اطلاعاتی و سرورها و  سایر نرم افزارهای مبتنی بر وب یا شبکه روی یک بستر توزیع شده اجرا بشن و  اگر فشار ترافیک روی یک سرور زیاد بود ، Load Balancer درخواستها رو به  سایر سرورها که توسط قابلیت Replication Service اوراکل بصورت mirror آماده  هستند هدایت میکنه . این Load Balancer قابلیت درک جلسات کاربری ( Session  ) ها یا مثلا" متغیرهای سطح برنامه ( Application - Level Variables ) رو  داره . یعنی اگر شما به کتابخانهء ملی سنای امریکا ( Pwered By Sun ) لاگ  این کنید و در حال انتقال صفحاتی از یک کتاب به دایرکتوری شخصی خودتون  باشید و فشار روی سرور بانک اطلاعاتی زیاد بشه ، درخواستهای بعدی شما بصورت  خودکار به سرور خلوت تری ارسال میشن بدون اینکه State-Less بدون محیط به  کانال ارتباطی شما لطمه بزنه ، یعنی هویت شما و Session شما همچنان معتبر  است اما روی یک سرور دیگر ( این منحصر به فرد نیست اما فقط شرکت مکرومدیا  در JRUN که اون هم یک Application Server نصفه نیمه است چنین چیزی داره که  در مورد اون هم مطالبی عرض میکنم )

نتیجه اول : اگر شما یک Application Server کامل و قابل اتکاء میخواهید  باید بستهء نرم افزاری فوق العاده گران قیمت Oracle 11i - e bussines Suite  رو تهیه کنید که هر انچه ذکر شد داخلش موجوده .

نتیجه دوم : برای پاسخ دادن به نیازهای "خیلی بزرگ" و " سازمان مقیاس" که  هزینه های میلیونی و میلیاردی براش در نظر گرفته میشه و خطا در انتخاب  معماری یا عدم سازگاری اجزاء نا بخشودنی است فقط باید از یک Application  Server استفاده کرد که ضمن دارا بودن همه چیز یکجا ، سازگاری ، قابلیت  اتکاء و وثوق ، یک شرکت بزرگ و عریض و طویل ازش حمایت کنه . اوراکل یکی از  پیشنهادهای موجوده . در بازار E- bussines دنیا اوراکل قدرتمند ترین  فروشنده نرم افزاره ، فقط به عنوان مثال مراجعه کنید به خبری از اوراکل که  یک پیشنهاد " نه میلیارد دلاری" برای خرید شرکت People Soft ( تولید کنندهء  ERP های قدرتمند ) داده . لازم به ذکره 9 میلیارد دلار ، کمی کمتر از نصف  بودجهء یکسال جمهوری اسلامی ایران است !!

یاد آوردی اول : یک بستر اجرای کد مثل دات نت ، با یک استاندارد برای تولید Application Server یعنی J2EE قابل قیاس نیست .

یاد آوری دوم : داخل یک Application Server یک بستر اجرای کد هم وجود داره  که سرویسهای خاصی رو ارائه میکنه . شاید بشه این بسترهای مختلف موجود رو با  هم مقایسه کرد .


&lt; اتمام مبحث Application Server ها >

سوال : اگر انچه دات نت ارائه میکنه و به همون "شکل" در بسترهای مبتنی بر J2EE هم موجوده مقایسه کنیم چه نتیجه ای میگیریم ؟

جواب : من دو جور میتونم به این سوال جواب بدم . یکی مبتنی بر تجربه شخصی . یکی مبتنی بر صرفا" ذکر آیتمهای قابل قیاس در مقابل هم .

جور دوم (!) :

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

ب. زمان اجرا : زمان اجرای دات نت تقلیدی صرف از زمان اجرای جاوا ست . هیچ  بحثی هم درش نیست . حتی کسانیکه مثل بنده عقلشون کم باشه و بشینن و IL رو  با ByteCode مقایسه کنن درک خواهند کرد که مایکروسافت خلاقیتی از خودش نشون  نداده . JIT در هر دو محیط خوب است . سرعت اجرای "برنامه" های دات نت از  برنامه های جاوا کندتر است اگر از JIT استفاده نکند . این حقیقت رو هر کسی  با چند آزمایش کوچولو میتونه درک کنه . سیستم Code Caching و JITC دات نت  کمک زیادی به افزایش سرعت برنامه ها کرده . جاوا با عمر طولانی اش به ادعای  اسکات مک نلی حدود پنجاه بار بهینه سازی شده در حالیکه دات نت هنوز جوونه .  به نظر میاد در این یک مقوله باید منتظر آینده شد . اما فی الحال وضع دات  نت در این راستا خوبه .

ج. اتصالات : دات نت از ریموتینگ ، وب سرویس و کام پلاس حمایت میکنه (  بصورت داخلی ) . جاوا بجای ریموتینگ چیزی بنام ریموت متد اینووکیشن داره ،  وب سرویس رو حمایت میکنه ، CORBA رو حمایت میکنه ، چیزی بنام EJB داره که  اشیاء شناور در یک "مخزن سازمانی" هستند که افراد ، سرویسها و نرم افزارها  بنا به میزان دسترسی میتونن ازش استفاده کنن . کنترلهای دات نت هنوز چنین  قابلیتی ندارند و دات نت هنوز راهی برای ایجاد یک Object Repository  سازمانی ارائه نکرده . اشیاء کام پلاس و محیط MTS ویندوز هم ( با اینکه  ربطی به دات نت نداره بطور مستقیم ) مانند EJB ها منعطف نیستند . EJB ها  State-Less نیستند .

د. ارتباط با داده : دات نت چیزی بنام ADO .NET ارائه کرده که راه حلی است  منحصر به فرد . جاوا JDBC رو داره که چه در connection Pooling و چه در  objecy pooling به خوبی ADO .NET کار میکنه اما ADO .NET فوق العاده  امکانات زیادی داره . چون اینجا دات نت کار زیاده لزومی به توضیح نیست . من  با تمام وجود به ADO .NET اعتقاد دارم و تصور نمیکنم معادلی داشته باشه (  یکسال و خورده ای پیش چند مقاله کامل در مورد ADO .NET در سایت ایران  دولوپرز نوشتم که این مطلب رو اونجا هم عرض کردم . یکسال قبل )

ه. امنیت : امنیت در این حوزه رو "من" به سه بخش تقسیم میکنم ( تقسیم بندی کاملا شخصی و تجربی )

ه.1) حفاظت از متن کد
ه.2) حفاظت از ارتباطات
ه.3) حفاظت از خود بستر و حفظ مانائی

در مورد اول هر دو محیط ضعیف هستند . Obfuscator ها نمیتونن به مفهوم واقعی  از کد حفاظت کنند و راهکارهای Third party موجود هم بیشتر به طنز شبیه  هستند . با داشتن IL یا بایت کد براحتی کد اصلی یا کدی " با قابلیت های" کد  اصلی قابل باز-تولید است . پسوردها ، اعداد خصوصی ، کلمه های عبور و ...  براحتی قابل بازیافت هستند اگر در متن نرم افزارهای Managed دات نت یا  برنامه ها جاوا بکار رفته باشند . اینجا واقعا هیچ ایمنی " نمیتواند" وجود  داشته باشد .

در مورد دوم هر دو محیط با Open Standard ها کار میکنند . از SSL گرفته تا  Kerberos و از ارتباط با Directory Service ها گرفته تا CA . در این مورد  تفاوتی وجود نداره .

در مورد سوم تا حالا مستندی که بر قوت یا ضعف یکی دلالت کنه نخوندم ( نمیگم نیست ، نخوندم ) و تجربه شخصی و عملی هم ندارم .

فی المجموع در حوزه امنیت دو محیط چندان متفاوت نیستند .

و. انتقال : جاوا از MainFrame ها تا کارتهای هوشمند رو حمایت میکنه . دات  قراره بزودی بسترهای دیگه رو حمایت کنه . پس اصولا" در این زمینه هیچ  رقابتی وجود نداره . جاوا پانزده سال جلو تره . من با مونو ( که قراره بشه  دات نت روی لینوکس ) کار کردم و فعلا" ناقص و غیر قابل اعتماده .  مایکروسافت هم یقینا" تا انتهای 2005 هیچ نسخه ای از دات نت مبتنی بر NIX*  ها توزیع نخواهد کرد .

ز. تولید محتوای وب : دات نت ASP .NET رو ارائه کرده . جاوا JSP رو . سرعت  پاسخگوئی دات نت در کاربردهای معمولی بالاتره . اما با توجه به محدودیت  ویندوز ( به عنوان تنها بستر دت نت ) برای حمایت از ترافیک و فشار بالا ،  اگر کاربردهای خیلی سنگین مد نظر باشه ASP .NET نمیتونه حرفی داشته باشه .  موتور JSP هم قابلیت Clustring داره و میشه مجموعه ای از سرورها رو با " یک  موتور" راه اندازی کرد . ( میدونم به بحث ربطی نداره اما یکبار یکی ازم  پرسید چرا مایکروسافت برای MSN و هات میل از فری بی اس دی استفاده میکنه ؟ و  نه ویندوز ؟ جواب بنده این بود دلیل هر چیزی هست ربطی به امنیت نداره .  سایت خود مایکروسافت با ترافیک بالا و دشمنانی قسم خورده بدون مشکل داره  روی ویندوز کار میکنه . اما وقتی قرار باشه بخاطر ترافیک خیلی بالای مسنجر و  ایمیل ، از یک ماشین با مثلا" 30 تا پردازنده استفاده بشه تجربه ویندوز  چندان موفقیت آمیز نیست ! در حالیکه فری بی اس دی - اچ پی یو ایکس و  سولاریس همین حالا روی ماشینهائی بیشتر از پنجاه پردازنده هم خوب کار  میکنند . سان سرور بنام 15K Fire داره - ر.ک بخش سرورهای سایت سان - به  قیمت " ده میلیون دلار" میفروشتش و 105 تا پردازنده 64 بیتی داره و همین  نسخهء سولاریس معمولی روی اون هم کار میکنه و جواب میده و توانائیش 6500  میپسه ! یعنی 2000 میپس قوی تر از بزرگترین مین فریمه IBM - تاریخ این امار  متعلق به یکسال پیشه که من پروژه ای داشتم در این مورد )

نتیجه : برای کاربردهای عمومی وب یعنی اونچیزی که در 99 درصو اوقات مد نظره  ASP .NET بهتر است مگر اینکه برنامهء خاصی برای انتقال وجود داشته باشه یا  احتمال وجودش قابل تامل باشه .

نتیجهء کلی : تا اون حد که دات نت امکانات و توانائی داره ، قالبلیتهای  مشابهش در بستر جاوا موجوده . در برخی موارد دات نت و در برخی دیگر جاوا  برتر است الا اینکه اگر کاربرد خیلی بزرگ باشه یا برنامه خاصی برای انتقال  بستر وجود داشته باشه یا احتمال وجودش قوی باشه ، در هر حال " تنها گزینهء  موجود" جاوا ست ، در غیر این صورت باید بررسی کرد .

&lt; اتمام بحث مقایسه بسترهای دات نت و جاوا >

سوال : من متوجه شدم دات نت دقیقا" چیه و جاش کجاست و متوجه شدم یک  Application Server چیه و به چه دردی میخوره و باز هم متوجه شدم فرق اینها  در "مقیاس" پروژه است ، حالا میخوام کمی درمورد Application Server های  دیگه بدونم .

جواب : اینترنت دریائی از اطلاعات است که میتونید ازش کمک بگیرید . تجربه  شخصی من به استفاده از اوراکل و اوریون محدوده . در مورد JRUN هم مطالعه  کردم . اوریون یک Application Server مبتنی بر J2EE است اما برای محیط  لینوکس بهینه سازی شده است . در یکی از شرکتهای نفتی ایرانی هم داره ازش  استفاده میشه و فوق العاده جوابگوست . اما مثل اوراکل کامل نیست ، مثلا"  بانک اطلاعاتی نداره ، باید از چیزی مثل اوراکل یا مای اسکوئل استفاده کرد ،  و نواقصی از این دست اما مجانی است و سورس آزاد . www.orionserver.com . 
JRUN محصول مکرومدیاست . این هم ناقصه و خیلی از قابلیتهای اوراکل رو نداره  ( اوراکل خیلی خیلی گرونه ) اما برخی مزایای خاصش باعث میشه آدم به  انتخابش فکر کنه . مثلا" قابلیت کلاسترینگ و لود بالانسینگ داره یا مثلا"  ColdFusion رو حمایت میکنه و ... قیمتش هم ارزونه . مثلا" همین حالا سازمان  ملی علوم و تحقیقات و تکنولوژی امریکا یعنی NIST داره از جی ران استفاده  میکنه و زبان برنامه های وب اش ، خصوصا بخش امنیتی اش که زیاد کل کل میکنه  هم کلد فیوژن است . اپلیکیشن سرورهای دیگه ای وجود دارن که چندان معروف  نیستند . مثلا" Borland Application Server که این مورد هم مبتنی بر J2EE  است و بخشی از سایت خود بورلند هم روی همین کار میکنه . اپلیکیشین سرور  بورلند از اوریون و جی ران کاملتره هر چند هنوز هم از اوراکل عقب تره .  دپارتمان نرم افزار "ارتش امریکا" هم بطور کامل از محصولات بورلند استفاده  میکنه . برای توسعه نرم افزارهای ویندوزی از دلفی ، برای UP از توگدر و  برای ارائه سرویس از اپلیکیشن سرور بورلند . ( وایت پیپر هاش رو میتونید تو  سایت خود بورلند پیدا کنید ) و ... موارد متعدد دیگه .

جور اول : ( تجربه شخصی )

کار با جاوا یا در مقیاسهای بزرگ Application Server ها جاوا واقعا" سخته .  ( خصوصا" اگر آدم به محیطهای قدرتمند و راحتی مثل دلفی عادت کرده باشه )  در حالیکه کار با دات نت واقعا" راحته . کاربری جاوا هم مشکل تر از دات نته  . در محیط دات نت اغلب تنظیمات یا وظایف کلیک اند ران هستند در حالیکه  برای آماده سازی یک محیط مبتنی بر جاوا برای ارائه واقعی سرویس تخصص و  تجربه لازمه و همیشه تجربه های اولیه با شکست همراه هستند . دات نت گرون  نیست هر چند اگر واقع بین باشیم مجانی هم نیست . جاوا مجانی است و سورس  آزاد . اون چیزی که من بهش فکر میکنم اینه که برای کاربردهای کوچک ، معمولی  ، متوسط دات نت مناسبه . برای کاربردهای واقعا" بزرگ دات نت اصولا" جوابگو  نیست که بخاد مناسب باشه یا نباشه و جاوا تنها گزینه است حالا میخواد خوب  باشه میخواد بد باشه . یعنی اگر قرار باشه سازمانی تیم نرم افزار تشکیل بده  ، یک الگو و راه حل جامع ( Total Solution ) برای نرم افزار انتخاب کنه ،  برای برنامه نویسهاش پول خرج کنه و پول بیشتری خرج کنه تا بمونن ، قرار  نیست برنامه هاش خیلی خیلی بزرگ باشن ، دات نت گزینهء خوبیه . اگر سازمانی  قراره تیم نرم افزار داشته باشه و برنامه های فوق العاده بزرگ بنویسه که با  توجه به نوع کاربرد احتمال تغییر پلت فرم یا خرید ماشینهای بزرگتر و قوی  تر و تغییر پردازنده و .... محتمل باشه ، اون محیط مال جاواست . امیدوارم  در تمام متن مطلبم به عبارت " سازمان مقیاس" که برجسته تر بود دقت کرده  باشید .

من قبلا" به برادر عریضی قول داده بودم در مورد اپلیکیشن سرور ها مطلبی  بنویسم و جواب این سوال رو هم مایل بودم بدم که شد یک تیر و دو نشون :wink:  حالا اگر یک نفر از ملت با مرام برنامه نویس لطف کنه و با سواد و دانش  خودش این نوشته رو ویرایش کنه و یه مقاله به درد بخور ازش در بیاره و به  بخش مقاله های سایت اضافه کنه ممکنه بتونه خیلی مفید واقع بشه در آینده .

----------


## haghft

ما هم مشکلی نداریم گفتیم هر زبان قدرت خودشو داره و به درد یه کار میخوره اما شما متعصبانه اصرار داری بگی جاوا بهترین زبونه و #C سوسکه!

----------


## r00tkit

عزیز درل برادر من کی  گفتم  C#‎  سوسکه و java قویه ؟  

من فقط گفتم  مقایسهی C#‎ , جاوا  شاید از لحاظ سرعت اجرا  و... مناسب باشه ولی  این مقایسه کافی نیست  چون فقط زبان نیست که   تو پروژه های بزرگ بر انتخاب ما تاثیر می زاره  

این Application server ها و framework ها هستن 

و ما مقایسهی ای بین C#‎  یا .NET با  J2EE نداریم این دو از هم متفاوت هستن  نمی شه مقایسه کرد  

من خودم سال ها با C#‎ کار کردم  , تجربه هایی هم با java دارم  

از شما هم معذرت می خوام

----------


## haghft

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

----------


## saman6384

1. منم میدونستم که J2EE کلا یه تکنولوژی هستش! و با C#‎ نمیشه مقایسش کرد! اما شما اومدی گفتی که J2EE کارایی میکنه که C#‎ نمیتونه!! برام جالب شد که بدونم شما چی میدونید که من نمی دونم!!

2. برداشتی که من از سوال این تاپیک کردم ، کد نویسی بود! وب اپلیکیشن و ویندوز اپلیکیشن و .........
واسه همین در زمینه کد نویسی جواب دادم!
منظور منم کد نویسی به زبان جاوا بود!
که فکر نکم اشتباه کرده باشم تو مقایسشون!

3.

----------


## haghft

البته Syntax جاوا با #C خیلی نزدیک بهم هستند حتی از VB هم به سی شارپ نزدیکتره انگار دو تا برادرند و این برام خیلی عجیبه چون سان رقیب سخت مایکروسافت بوده و هست.

----------


## r00tkit

> اما شما اومدی گفتی که J2EE کارایی میکنه که C#‎ نمیتونه


 فکر کنم نیاز باشه یه بار دیگه پست های منو بخونی  عزیز من C#‎ یه زبانه با یه syntax  ولی J2ee یه چیز دیگس  در نتیجه سوال تو " با این چی می شه با ان نمی شه " غلط هستش

----------


## saman6384

> فکر کنم نیاز باشه یه بار دیگه پست های منو بخونی  عزیز من C#‎ یه زبانه با یه syntax  ولی J2ee یه چیز دیگس  در نتیجه سوال تو " با این چی می شه با ان نمی شه " غلط هستش


عزیزم من قبلا هم سر برنامه نویسی موبایل (blackberry) با j2ee آشنا شده بودم  و اونو به عنوان یه فریم ورک درک کرده بودم ( نه یه زبان)، واسه همین وقتی من از C#‎ حرف زدم و گفتم میتونه کار بقیه زبان ها رو بکنه ، و بعدش شما اومدی گفتی نه من اشتباه میکنم و اسم J2EE رو اوردی!! تعجب کردم و اون سوال رو پرسیدم!
خودم میدونستم سوالم یه مقایسه اشتباس! ...........

----------


## cardano7

> یه مشت مقایسهی  کوچه بازاری دارید انجام می دید
> 
>  برای چی از مطالب غلط  تشکر می کنید ؟؟
> 
> عزیر برادر  J2EE یه  application server هستش  C#‎ یه زبان  و .NET یه فریم ورک   اینا دو چیز جدا  از هم هستن  این نه یه خوبی هستش نه یه بدی  .net همیه J2EE هم همین 
> 
> Application server  یک زیرساخت نرم افزاری است که وظیفه‌اش application lifecycle management  است. یعنی بایستی در تمام چرخه تولید نرم افزار باید به تمام نیازهای نرم‌افزاری پاسخ دهد.این نیازها می‌تواند شامل بانک اطلاعاتی، وب سرور، سرویس smtp و.... باشد.
> 
> 
> ...


آن خشت بود که پر توان زد!

----------


## r00tkit

> آن خشت بود که پر توان زد!



لیاقت تو همون چرت و پرت هایی بود که تو پست های اول نوشتن

----------


## mmd2009

با سلام.

این مبحث هر سال داره واسش یک تاپیک ایجاد میشه با عنواین مختلف.

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

کسی از سی شارپ هم ایراد نگیره و کسی هم از جاوا ایراد نگیره چون همه میدونن که سی شارپ و جاوا یک زبان هستن گه قابلیت هایی مثل امن بودن و تفسیری بودن و ساده و شی گرا و...... بودن رو دارن. 

منم حال و حوصله توضیح فسلفی این موضوعات رو ندارم چون واقعا اخرش روی خوشی نداره و باعث ناراحتی میشه.

همگی موفق باشید.

----------


## FastCode

من فقط یک بخش رو متوجه نشدم.
kerberos توی C#‎ چطور ممکنه؟

----------


## cardano7

> لیاقت تو همون چرت و پرت هایی بود که تو پست های اول نوشتن


 آن خشت بود که پر توان زد!

----------


## haghft

آقا خواهشا از طعنه فحش و ناسزا و جنگ و دعوا بپرهيزيد اين كاري كه شما ميكنيد كار بيهوده اي هست كه مباحث اصلي رو به انحراف ميكشونه اينجا فقط با زبان علم بايد گفت و شنيد.در ضمن نه جاوا در كل از سي شارپ بهتره نه بالعكس هر كدوم مزايا و معايبي نسبت به هم دارن ديگه بستگي به اقتضاي پروژه داره كه از كدومش استفاده كنيم.

----------


## javad_r_85

باباچرا دعوا می کنید دو تاشون مفت نمی ارزند زبان برنامه نویسی فقط  C++‎ بعد Qt  بعدشم Phyton  بقیه رو بی خیالش.

----------


## haghft

> باباچرا دعوا می کنید دو تاشون مفت نمی ارزند زبان برنامه نویسی فقط  C++‎ بعد Qt  بعدشم Phyton  بقیه رو بی خیالش.


 این حرف شما کاملا حرف نسجیده و نپخته اییه.

----------


## V0RTEX

C#‎ اشاره گر داره جاوا نداره
C#‎ خودش تو .net هست و به همین خاطر با بقیه ی زبان های تحت .net مثل VB.net خیلی مچه...
بدشم کی گفته با C#‎ نمیشه برای موبایل برنامه نوشت؟؟؟؟ تو خود VS یک چیزی هست به نام smart device الیته تو VS2010 این نیست باید جدا گانه از خود microsoft دانلود کنید
C#‎ وقتی که compile شد یگه خودش اجرا می شه و فقط به  یک OS نیاز داره ولی java این توری نیست و به جز OS به خود java  هم نیاز داره 
C#‎ روی Linux هم اجرا میشه (یک چیزی هست به نام Mono) با این mono میشه برای Linux با C#‎ برنامه نوشت

----------


## Felony

تصمیم نداشتم تو این بحث شرکت کنم و پست های تاپیک رو هم مطالعه نکردم چون این بحث های بی فایده هست و اصولا غیر فنی ؛ نمونش همین پست قبلی که خیلی کوتاه و بی طرف جوابش رو در زیر آوردم :




> C#‎ اشاره گر داره جاوا نداره


عوضش Java متغییرهای ارجاع به مرجع ( reference variables ) رو داره !
در ضمن شمایی که با #C کار میکنی چه قدر اشاره گرها به کارت اومده ؟ مگه تو یک زبان Managed اشاره گر اینقدر اهمیت داره ؟!




> C#‎ خودش تو .net هست و به همین خاطر با بقیه ی زبان های تحت .net مثل VB.net خیلی مچه...


این چیزی هست که نمیشه به عنوان یک مزیت #C به Java در نظر گرفتش ، جاوا اینقدر غنی هست که کسی که با اون برنامه مینویسه نیازی به وارد کردن یک زبان Net. ی نداشته باشه .




> C#‎ وقتی که compile شد یگه خودش اجرا می شه و فقط به یک OS نیاز داره ولی java این توری نیست و به جز OS به خود java هم نیاز داره


شوخی میکنی ؟ پس اون Net framework. چی هست ؟ جز این هست که یک بستر برای اجرای کدهای Net. ؟ دلیل نمیشه که چون Microsoft روی ویندوز های فعلی Net framework. رو در اختیار شما میزاره #C بهتر از Java باشه .

----------


## FastCode

> C#‎ روی Linux هم اجرا میشه (یک چیزی هست به نام Mono) با این mono میشه برای Linux با C#‎ برنامه نوشت


تجربه شخصی:
من اوائل که با لینوکس آشنا نبودم, عشق عمو بیل بودم و چشمم به دنیای لینوکس بسته بود, به خاطر همین نکته فوق وارد لینوکس شدم تا ببینم این که میگن برنامه C#‎  تحت لینوکس کار میکنه یعنی چی؟
الان بعد از تقریباً دو سال که فقط با لینوکس کار میکنم و ویندوز رو کنار گذاشتم فقط میفهمم که این کار یک جور حماقته که شکل حماقت نیست.یک جور حماقت پیچیده.
به نظر من C++‎ ه Native تحت لینوکس بسیار لذت بخش تر و راحتتر از C#‎ + Mono تحت لینوکسه.
واقعاً اشک آدم در میاد تا یک برنامه ۵ خطی ویندوز توی لینوکس راه بیافته.
چون کسایی که برنامه رو با C#‎  مینویسند هدف اولشون ویندوز ه و خیلی چیزها رو رعایت نمیکنن.اولیش Path separator.

 به نظر من یکی از مشکلات .Net  که بهش اشاره نشد, کامپایلر  background ه  .Net ه که هنر مصرف کردن بیهوده منابع سیستم رو از سیستم عامل ویندوز به ارث برده.بعضی وقتها قاطی میکنه





> بدشم کی گفته با C#‎ نمیشه برای موبایل برنامه نوشت؟؟؟؟ تو خود VS یک چیزی هست به نام smart device الیته تو VS2010 این نیست باید جدا گانه از خود microsoft دانلود کنید


اولن که بعدش نه بدش.

دوماً که چی؟
مثلاً برای WinCE برنامه بنویسه که چی بشه؟
به چه دردی میخوره؟
وقتی مایکروسافت فقط ۳ درصد بازار  Tablet رو داره این کار یعنی چی؟Wikipedia Reference

اصلاً چه خاطره خوشی از WinCE  یا Windows  Mobile  دارید که با ما به اشتراک بزارید.
من با همین آندروید هر کاری که با لبتابم میکنم با تبلتم انجام میدم.GCC gcj Apache PHP red5 Perl Python  و هزار تا برنامه خفن دیگه هستن که هم روی آندروید و هم iOS و  Meego  و سیستم عامل های  *NIX  کار میکنند. حالا بیا .Net Framework ه Full روی یه سیستم  Embeded نصب کن.(خودم خریدارم/دونه ای ۱۰۰ تومان بالای قیمت/نقد)
آیا Windows Mobile  این امکانات رو داره؟
برای همین ۳ درصد بازار رو داره.و هر روز بدتر هم میشه.

تا اونجایی که یادمه .Net توی ویندوز CE اصلاً Unicode ساپورت نمیکنه.(چند ماه قبل وقتی کد یکی از دوستانم رو برای فارسی نوشتن توی  WinCE  دیدم نزدیک بود بزنم زیر گریه)
جاوا حداقل توی آندروید و سیمبین و ...  هم اجرا میشه و فارسی ساپورت میکنه.

----------


## r00tkit

> عوضش Java متغییرهای ارجاع به مرجع ( reference variables ) رو داره !


منم  java کم کار کردم ولی باتوجه به اینجا  reference variables تو جاول معادل همون Reference Types   هستش  


Primitive and reference variables  تو جاوا  یعنی همون Reference Types  Value Types  تو سی شارپ ( البته شاید  چون من برنامه نویس جاوا نیستم )

و این چیز جدیدی نیست  تو python هم چنین چیز  داریم 

البته بماند  که تمام *V0RTEX* شبیه طنز هستش Qt  و پایتون جای خودش

----------


## powerboy2988

جالبه .... نمیدونم دلیل اینکه این بهتره یا اون بهتره چیه؟؟
جفتشون ابزار های برنامه نویسی هستند مقایسه کردنشون زیاد جالب نیست... 
با Java  میشه یک سری کارها رو بهتر از #C انجام داد و معکوس این هم صدق می کنه.

مقایسه این 2تا مثل مقایسه پیچ گوشتی 2 سو با 4 سو می مونه....



حالا هرکی می تونه بگه کدوم پیچ گوشتی بهتره... اون وقت می تونه بگه که کدوم زبان بهتره!!!!

----------


## FastCode

> جالبه .... نمیدونم دلیل اینکه این بهتره یا اون بهتره چیه؟؟
> جفتشون ابزار های برنامه نویسی هستند مقایسه کردنشون زیاد جالب نیست... 
> با Java  میشه یک سری کارها رو بهتر از #C انجام داد و معکوس این هم صدق می کنه.
> 
> مقایسه این 2تا مثل مقایسه پیچ گوشتی 2 سو با 4 سو می مونه....
> 
> 
> 
> حالا هرکی می تونه بگه کدوم پیچ گوشتی بهتره... اون وقت می تونه بگه که کدوم زبان بهتره!!!!


دقیقاً 
Java  دو سو ه
پیچ های C#‎  رو هم   باز و بسته میکنه.

----------


## Felony

> منم  java کم کار کردم ولی باتوجه به اینجا  reference variables تو جاول معادل همون Reference Types   هستش  
> 
> 
> Primitive and reference variables  تو جاوا  یعنی همون Reference Types  Value Types  تو سی شارپ ( البته شاید  چون من برنامه نویس جاوا نیستم )
> 
> و این چیز جدیدی نیست  تو python هم چنین چیز  داریم 
> 
> البته بماند  که تمام *V0RTEX* شبیه طنز هستش Qt  و پایتون جای خودش


من هم تجربه زیادی در کار با Java ندارم ولی گاهی اوقات نگاهی به مقالاتش میندازم ، منظور از reference variables دقیقا اشاره گر نیست ، این لینک رو ببین :

http://www.csis.pace.edu/~bergin/pap...nterTraps.html

----------


## mmd2009

> دقیقاً 
> Java  دو سو ه
> پیچ های C#‎  رو هم   باز و بسته میکنه.


ببخشید ولی فکر نکنم منظور اون دوستمون این بود که جاوا بهتر از سی شارپ باشه...

پ ن : البته احساس می کنم.

----------


## powerboy2988

من نگفتم کدوم بهتره ...
و اینکه هر پیچ 4 سویی رو نمیشه با پیچ گوشتی 2 سو باز کرد... یعنی هزینش زیاده برادر....

----------


## haghft

اين تعصبات بيخودي رو بريزيد دور.نه با طرفداري از جاوا،از سان چيزي بهتون ميماسه نه از طرفداري از سي شارپ چيزي از مايكروسافت عايدتون ميشه.اين بگو مگوهاي بيخودم همش ناشي از جهل افراده!

----------


## ma.rad

به نظر میاد این مبحث فقط برا اضافه کردن پست نه یه بحث علمی :متفکر:

----------


## r00tkit

لطفا تاپیک رو قفل کنید بره   :)

----------


## FastCode

> به نظر میاد این مبحث فقط برا اضافه کردن پست نه یه بحث علمی


 خیلی جالبه.
من همیشه هدفم توی عدد ها, نسبت تعداد تشکر به پست بوده.
قدیما که command and conquer 3 بازی میکردم شرط بندی همیشه سر Kill/Death Ratio بود.
تعداد پست زیاد یعنی وراجی; بگذریم از این که این روزها کسی از کسی تشکر نمیکنه.



> اين تعصبات بيخودي رو بريزيد دور.نه با طرفداري از جاوا،از سان چيزي بهتون ميماسه نه از طرفداري از سي شارپ چيزي از مايكروسافت عايدتون ميشه.اين بگو مگوهاي بيخودم همش ناشي از جهل افراده!


این که کاملاً مشخصه.ولی من هیچ محصولی رو از سان نمیتونم ذکر کنم که مثل یکی از محصولات مایکروسافت مشکل داشته باشه.شما خودت یدونه میال بزن.شاید من اشتباه میکنم.
 فکر نمیکنم محصولاتی مثل  sunOS,Java,csh,VirtualBox با معادل های مایکروسافتیشون قابل مقایسه باشن!؟
در ضمن Oracle صاحب امتیاز جاواست. این نشون میده مطالعتون ضعیفه.و تنها منبعتون همون مقایسه قدیمیه که آقای geek1982 زحمت quote کردنش رو کشیدن.
 جست و جوی گوگل برای  Java security vulnerability  یک هفتم  .net framework  security vulnerabilty نتیجه میاره.این در حالیه که سن جاوا به اندازه پدر بزرگ ه  .Net ه.



> ببخشید ولی فکر نکنم منظور اون دوستمون این بود که جاوا بهتر از سی شارپ باشه...


 میدونم.
اگر یک نابغه عشق C#‎  قبل از من اون پست رو میدید میتونست برعکس من حرف بزنه.جمعیت اونها بیشتره ولی من زودتر اومدم.

راجع به حرف هایی که زده شد, من واقعاً نمیتونم چیزی بگم ولی وقتی به دوستی توهین میشه.یک مقدار نارحت کنندست.
بنده شخصاً با توجه به شناخت نسبتاً کمی هم که از geek1982  دارم, اگر فکر کنم جایی از نوشته های ایشون غلطه سعی میکنم بفهمم اشتباه خودم کجا بوده.
چون حرفشون برای من کاملاً معتبره و اصلاً شکل خشت نیست.



> لطفا تاپیک رو قفل کنید بره :)


 موافقم.بحث داره به قتل با پیچگوشتی کشیده میشه.بهتره قفل بشه.

----------


## mmd2009

> اگر یک نابغه عشق C#‎ قبل از من اون پست رو میدید میتونست برعکس من حرف بزنه.جمعیت اونها بیشتره ولی من زودتر اومدم.


شوخی : چند وقتی هست به انجمن سر نمی زنم مگه اینجا نابغه هم داریم.  :لبخند گشاده!:  

قرار نیست هر کس 2 خط بیشتر خونده دلیل بر نابغه ایش باشه یا چهار مطلب از اینجا اونجا یاد گرفته بگه من نابغم و به خودش اجازه بده بیاد محصولاتی رو به تمسخر بگیره که تو 10 نسل ایندش هم نتونه مثل اون محصولات رو خلق کنه حالا چه محصولات این شرکت یا اون شرکت یا ....

در کل این بحث هم مثل Torre pendente di Pisa میمونه که هرچی بیشتر به اخرش نگاه می کنیم کج تر میشه استدلال ها.

امیدوارم تاپیک حذف نشه و ایندگان بیان اینجارو ببینن که در اینده همچین بحث هایی نکنن که ترور محصولات باشه  :قهقهه: ...

موفق باشید

پ ن : منظور من شخص خاصی نبود خواهشا کسی استدلای کج نکنه.

----------


## OSTADINA

من میگم ده بیست سی چل کن هر کدوم اومد !

MS سی# رو ساخت تا جاوا رو بزنه کنار، اما این دوتا مثل هم شدن ! الان بنظر من 50 50 هست !

----------


## haghft

> در ضمن Oracle صاحب امتیاز جاواست. این نشون میده مطالعتون ضعیفه.و تنها  منبعتون همون مقایسه قدیمیه که آقای geek1982 زحمت quote کردنش رو کشیدن.


*جناب مطالعه خدای* *منبع* منظور من خالق جاوا بود صاحب امتیاز که اونقدر مهم نیست!در ضمن من هم دل خوشی از MS ندارم من Apple رو به همه ترجیح میدم اینو هم تجربه کردم هم طبق مقایسات علمی میگم.ولی حرف شما اینه که جاوا در همه چیز از C#‎ بهتره و C#‎ سوسکه و اصلا بدرد نمیخوره من با این حرف مخالفم.

----------


## PetekDincos

یا سلام
من Java کار نکردم و #C هم در سطح متوسط بلدم اما مایکروسافت در کنفرانس PDC 2006 چندتا تکنولوژی جدید  WPF,LINQ ,WCF,WWF رو ارائه کرد شاید بگید اینا ربطی به بحث ما نداره اما مثلا WPF در ایجاد برنامه های کاربردی از لحاظ رابط کاربری که می شه ایجاد کرد (با دردسر کمتر) به همراه زبان های دات نت یک مزیت حساب می شه بحث Binding ای که تو WPF است تو هیچ زبان برنامه نویسی دیگری فکر نکنم باشه اگر تو جامعه Open Source هم یک چنین تکنولوژی است (از لحاظ راختی کار باهاش ) خوشحال می شم معرفی کنید شاید من هم در آینده برم سمت Open Source با تشکر

----------


## javad_r_85

کلا محصولات مایکروسافت مانند ویندوز و دات نت اون در کشورهایی مانند ایران طرفدار دارد ولی اگر بخواهی جهانی ببینی و مقایسه کنی سالهاست که جاوا در اولویت بوده این را می تونید با سرچ در گوگل و نمایش جدول مربوطه مشاهده کنید من جاوا کار نکردم و کار هم نخواهم کرد ولی دلیل نمی شه اونا زیر سوال ببرم حالا شاید تو ایران بازار به نفع سی شارپ باشه ولی جاوا مصرف کننده بیشتری داره خود سی شارپ هم از جاوا و سی پلاس گرفته شده در کل من متوجه شدم مایکروسافت خودش خلاقیت نداره یعنی می اید چیزای خوب از زبانهای دیگر را در زبان خودش جا می ده مثل جنریک ها که از سی پلاس گرفته و موارد دیگر ی که الان حضور ذهن ندارم من خودم با سی شارپ نمی تونم آینده شغلی ام را تضمین کنم چون محصول یه شرکتی هست که هر روز یه تکنولوژی جدید می اره و این تکنولوژی نهایتا 10 سال ساپورت شه بعد فاتحه اون خونده می شه در کل بهتره این سوال را در تایپیک جاوا نیز مطرح کنید تا اونایی که کار کردند نظر بدن نه افرادی مثل من که اصلا فقط اسمی از اون شنیدن ولی در کل     C++‎      ONLY

----------


## javad_r_85

> یا سلام
> من Java کار نکردم و #C هم در سطح متوسط بلدم اما مایکروسافت در کنفرانس PDC 2006 چندتا تکنولوژی جدید  WPF,LINQ ,WCF,WWF رو ارائه کرد شاید بگید اینا ربطی به بحث ما نداره اما مثلا WPF در ایجاد برنامه های کاربردی از لحاظ رابط کاربری که می شه ایجاد کرد (با دردسر کمتر) به همراه زبان های دات نت یک مزیت حساب می شه بحث Binding ای که تو WPF است تو هیچ زبان برنامه نویسی دیگری فکر نکنم باشه اگر تو جامعه Open Source هم یک چنین تکنولوژی است (از لحاظ راختی کار باهاش ) خوشحال می شم معرفی کنید شاید من هم در آینده برم سمت Open Source با تشکر


 wpf web broewser  همون java applet  هست و با wpf  شما می تونید ظاهر برنامه تون را زیبا کنید کاری که Qt از ابتدای کار در اون گنجانده شده و حالا با یه کمی تفاوت ولی Qt کجا و سی شارپ کجا سالاره

----------


## PetekDincos

> wpf web broewser  همون java applet  هست و با wpf  شما می تونید ظاهر برنامه تون را زیبا کنید کاری که Qt از ابتدای کار در اون گنجانده شده و حالا با یه کمی تفاوت ولی Qt کجا و سی شارپ کجا سالاره


 با سلام 
یعنی Qt در سطح WPF قدرت داره درست متوجه شدم اگه اینطوریه ممنون می شم یک تصویر از برنامه هایی که با Qt درست شده و دارای رابط  کاربری بالایی است در اینجا قرار بدید و البته بیشتر قدرت WPF در بحث Binding است با تشکر

----------


## mmd2009

بچه ها این بحث هارو باید کسایی بکنن که واقعا سطح علمی فوق عالی داشته باشن که بیشتر میتونید در لینک های زیر به این مقایسه ها بپردازید 

مقایسه با خودتون  :چشمک: 

A COMPARISON OF

MICROSOFT'S C#‎ PROGRAMMING LANGUAGE

TO SUN MICROSYSTEMS' JAVA PROGRAMMING LANGUAGE

By

Dare Obasanjo



,

The art of programming: Java vs C#‎

----------


## javad_r_85

> با سلام 
> یعنی Qt در سطح WPF قدرت داره درست متوجه شدم اگه اینطوریه ممنون می شم یک تصویر از برنامه هایی که با Qt درست شده و دارای رابط  کاربری بالایی است در اینجا قرار بدید و البته بیشتر قدرت WPF در بحث Binding است با تشکر



3.png

2.jpg

4.jpg

----------


## haghft

من میگم تو ایران که اکثرا ویندوز استفاده میکنن و ویندوز محصول مایکروسافته پس زبان و IDE که مایکروسافت داده قاعدتا مچتره چون قطعا به محصوله خودش واقف تره تا هر کس دیگه!

----------


## PetekDincos

با سلام 
با این اوصاف فکر کنم یادگیری Qt خالی از لطف نباشه چون اون طوری که شنیدم مستقل از پلتفرم هم هست اگه می شه بیشتر در مورد Qt توضیح بدید با تشکر

----------


## haghft

> با سلام 
> با این اوصاف فکر کنم یادگیری Qt خالی از لطف نباشه چون اون طوری که شنیدم مستقل از پلتفرم هم هست اگه می شه بیشتر در مورد Qt توضیح بدید با تشکر


 لطفا به این تالار مراجعه کنید.
Qt

----------


## f4rvahar

آخه این زبان بهتره یا اون زبان شد بحث؟!
کدوم از شما قادر هست کاری (تجاری و فوق العاده بزرگ در حدی که ایران به خودش ندیده!)  رو در جاوا انجام بده که در سی شارپ قابل انجام نباشه و بلعکس؟
کمی بیشتر تفکر کنید دوستان.
جای این بحث ها بهتر هست در مورد ویژگی های هر زبان بحث کنید و انتخاب رو به خود کاربر واگذار کنید.

ضمنا این اولین و آخرین پستم هست!
به تاریخ عضویت و تعداد ارسال های اینجانب نگاهی بندازید خودتون می فهمید چقدر از دست سایت شما و بحث های غیر علمی ناراحت هستم!

----------


## vof.ir

dear friend
calm down please!!!!
لااقل مسبب خیر بودند که مقاله بلند و بالایی را در این تاپیک خواندیم
بررسی ویژگی هر زبان خوب هست،اما هر خواننده ای به راحتی نمیتونه راهی را که باید برود،
پس لازمه که کمی بحث های جانبی هم بشود

----------


## MrasoolF

> البته Syntax جاوا با #C خیلی نزدیک بهم هستند حتی از VB هم به سی شارپ نزدیکتره انگار دو تا برادرند و این برام خیلی عجیبه چون سان رقیب سخت مایکروسافت بوده و هست.


درسته سان رقیب سر سخت مایکروسافت هست ولی جاوا قبل از سی شارپ اومده.
وقتی که مایکروسافت سی شارپ رو در سال 2002 معرفی کرد مدیر عامل سان مایکروسیستمز(اسمشو یادم نیست) گفت سی شارپ یک کپی احمقانه از جاواست.

----------


## abidana

:قهقهه:  :تشویق: تو یه مقاله خوندم که میگه چرا برنامه نویسای جاوا همگی عینکی اند ولی برنامه نویس های سی شارپ اینطوری نستند؟
چون که جاوا ها سی شارپ نیستند(سی یعنی دیدن و شارپ یعنی تیز کلا یعنی تیز بین)

----------


## abidana

دوست عزیز ببین با کدوم حال می کنی با اون برو جلو
البته اگه بخوای که یه برنامه نویس تجاری شی خواه نا خواه باید هر دو را یاد بگیری

----------


## sgh_programer

سلام به همگی 
بحث جالبیه 
من در حدی نیستم مقایسه کنم که جاوا بهتره یا سی شارپ چون ممکنه یه سری کارا بشه با یکیشون انجام داد با دیگری نشه یاد گرفتن جاوا هم خوبه و اگه بخوایی فقط از برنامه نویسی نون بخوری باید یاد بگیری با بقیه
زبان ها هم کار کنی

اما من خودم با سی شارپ بیشتر حال میکنم
*اما دوستان این ضرب المثل رو یادتون باشه هر چیزی که خوار آید روزی سخت به کار آید*

همگی در پناه برنامه نویس هستی موفق و سربلند باشید

----------


## tarazpouyesh

> ببین هر زبانی ویژگی های خاص خودشو داره بستگی به کاری که میخای بکنی داره ولی من به شخصه با C#‎‎‎ بیشتر حال میکنم در مورد درآمد هیچ فرقی نداره اگه حرفه ای باشی باسه هر دوتاش بازار هست.


شما د حال حاضر جایی مشغول به کار هستید؟ اگر خیر با این شماره تماس بگیرید 09021703003

----------

