PDA

View Full Version : گفتگو: C#‎ و جاوا



mrbm_2007
چهارشنبه 03 اسفند 1390, 19:15 عصر
سلام بر اساتید محترم


کسی هست که با این دو زبان کار کرده باشه و بتونه مقایسه ی کلی بین این دو زبان انجام بده؟ یا اگر کسی با یکی از این ها کار کرده در مورد مزایا و معایب همون بگه.
من خودم یه مدتیه با C#‎‎‎‎ کار می کنم و تا حالا که ازش راضیم، برنامه نویسی راحته به خصوص با وجود ویزوال استدیو 2010. امروز از بچه های نرم افزار دانشگاهمون (شریف) پرسید، مثل اینکه اونا با جاوا کار می کنن.

1. به نظر میرسه سینتکس دوتا زبان هم خیلی به هم نزدیکه (نیست؟).
2. ویرایش گر حرفه ای مثل ویژوال استدیو برای جاوا هم وجود داره؟
3. میشه ( dll (assembly های منیج شده این دو زبان رو بین دو زبان share کرد؟ (مثلا dll از C#‎‎‎‎ توی جاوا استفاده کرد؟)
4. امنیت جاوا هم مثل C#‎‎‎‎ تعطیله؟ (منظورم همین رفلکتور هاست)
5. مثل C#‎‎‎‎ .net جاوا هم به پلتفرم وابسته هست؟ (البته تاجایی که خودم میدونم شعار شرکت سان اینکه یک بار بنویس همه جا استفاده کن)
6. سرعت (در کارهای ریاضی و محاسباتی)

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

ممنون

ehsan_starlight
چهارشنبه 03 اسفند 1390, 20:18 عصر
من تجربه زیادی در این مورد ندارم اما:
1) از نظر سینتکس زیاد تفاوت ندارند
2)به نظر من ویرایشگر VS بسیار قدرتمندتره نسبت به Eclips و NetBins
3)در مورد Dll ها نمی دونم !!!!!
4).....
5) همان طور که C# نیاز به Net. داره ، جاوا هم یه پلتفرم به نام Jdk داره ( البته Jdk وزنش بسیار کمتر از Dot Net FremWork هست) و قابل نصب بر روی Mac , Windows ,Linux هست
6) برای کسانی برای ویندوز می خوان برنامه بنویسند بهتره که با همون VS استفاده کنند
7) میگن قدرت گرافیک تو جاوا بیشتره
8) در نهایت براتون بگم برنامه نویسش مهمه نه برنامه ای که می خواین ادامه بدین

mrbm_2007
چهارشنبه 03 اسفند 1390, 22:12 عصر
در مورد سینتکس
http://www.harding.edu/fmccown/java_csharp_comparison.html
به نظر من با اینکه خیلی خیلی شبیه هم هستند ولی C#‎‎ ساده تره!
مثلا در پروپرتی ها


public int Size {set; get; }


توی Java باید اینجوری نوشته بشه


public int getSize() { return mSize; }
public void setSize(int value) {
mSize = value;
}


در مورد سرعت هم خیلی نمیشه اظهار نظر دقیقی کرد (بستگی به کاربرد داره) ولی بر طبق این تاپیک (http://barnamenevis.org/showthread.php?314746-%D8%B3%D8%B1%D8%B9%D8%AA-%D8%B9%D9%85%D9%84%DA%A9%D8%B1%D8%AF-%D8%AC%D8%A7%D9%88%D8%A7-%D8%AF%D8%B1-%D9%85%D9%82%D8%A7%D8%A8%D9%84-C&p=1383369&viewfull=1#post1383369) به نظر سرعت C#‎‎ بیشتره

mp_mp353
چهارشنبه 03 اسفند 1390, 22:32 عصر
سلام دوست من.
شما اول ببینید که برنامه هایی که میخواید استفاده کنید برای چه پلتفرمی هستن؟
اگه ویندوزه خوب از اونجایی که با سی شارپ کار کردید خوب سی شارپ بهتره. اما اگه نه که جاوا چون برنامه های جاوا هرجایی که ران تایم اون نصب بشه قابل اجراس. برای موبایل هم میشه برنامه های کاربردی خوبی رو با اون نوشت. جاوا به لحاظ کد نویسی کمی پیچیده تر و سختر از سی شارپه ولی اصل اصول برنامه نویسیه.
کامپابلر هم من netbeans و jbuilder رو پیشنهاد میدم که به نظر من jbuilder راحتی خاص خودشو داره البته بعضی ها از کامپایلر اوراکل JDeveloper استفاده میکنند.
به لحاظ سرعت هم سی شارپ تا حدودی سریع تره. اما برای برنامه های تحت وب وشبکه جاوا بهتره.
هرچند دانت اومد تا سی شارپ و.. رو از وابسطه بودن به پلت فرم بیرون بیاره ولی تا الان این امر محقق نشد حالا یا به خاطر اینکه اصلا دانت برای پلتفرم های دیگه نیست یا به خاطر قیمت یا هرچیز دیگه در سایر سیستم عامل ها استفاده نمیشه!
هرچند داخل سایر پلت فرم ها میشه از سایر کامپایلر ها مثل مونو برای سی شارپ استفاده کرد.
اما من فکر میکنم برای دات نت چیزی به اسم مستقل از پلتفرم هنوز.....

mrbm_2007
چهارشنبه 03 اسفند 1390, 22:41 عصر
کسی در مورد امنیت نظری نداری؟

mp_mp353
چهارشنبه 03 اسفند 1390, 22:47 عصر
در رابطه با امنیت نمیتونم نظر خاصی بدم ولی از نظر من امنیت به کدی که ما مینویسیم بستگی داره یعنی امنیت به خود ما برمیگرده.
یه سر به این لینک بزن شاید به دردت خورد.
https://www.ircert.cc/upload/files/ar_11.pdf

mrbm_2007
چهارشنبه 03 اسفند 1390, 22:52 عصر
امنیت به کدی که ما مینویسیم بستگی داره یعنی امنیت به خود ما برمیگرده.

با این حرف موافقم؛ از طرفی باید قبول کرد که امنیت 100% اصلا وجود نداره ولی سوال اینکه مثل C#‎‎ برای جاوا هم رفلکتور وجود داره؟
هرچند که یک کد نویس حرفه ای می تونه حتی توی C#‎‎ هم امنیت قابل قبولی در برابر کرکر ها ایجاد کنه ولی اینکار رو توی یه زبان دیگه مثل دلفی خیلی راحتر انجام میده :متفکر:

mp_mp353
چهارشنبه 03 اسفند 1390, 22:58 عصر
من در رابطه با رفلکتور اطلاعاتی ندارم ولی یه سر به لینک زیر بزن شاید اطلاعات به درد به خوری برات داشت.
http://stackoverflow.com/questions/722378/reflector-for-java

راستی برا انتخاب زبان برای برنامه نویسی ببین خودت کدوم رو دوست داری. چون در درجه اول زبان مهم نیست خودت مهم هستی چون میخوای با اون زبان ادامه بدی.
پس حالا چیزی که دوست داری رو بهتر میتونی ائامه بدی هرچند سخت.
من با هردو کار کردم ولی جاوا رو خیلی دوست دارم.

zarrinnegar
چهارشنبه 03 اسفند 1390, 23:11 عصر
توی این تاپیک (http://barnamenevis.org/showthread.php?291474-%D8%AC%D8%A7%D9%88%D8%A7-%D8%A8%D9%87%D8%AA%D8%B1%D9%87-%DB%8C%D8%A7-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE&highlight=%D8%AC%D8%A7%D9%88%D8%A7) کلی صحبت شده که اگه تا آخر خونده بشه ، چیزهای خوبی دستگیر میشه

FastCode
چهارشنبه 03 اسفند 1390, 23:28 عصر
سلام بر اساتید محترم
(@مدیر » نمی دونستم دقیقا این سوال رو باید کجا بپرسم، فکر کدرم توی قسمت C#‎‎‎‎ محل مناسبیه! در صورت صلاح دید منتقل شود; در ضمن مطالب مشابه هم دیدم ولی هنوز بعضی سوال هام بی جواب مونده و نخواستم مطالب قدیمی رو بیارم بالا؛ ممنون)

کسی هست که با این دو زبان کار کرده باشه و بتونه مقایسه ی کلی بین این دو زبان انجام بده؟ یا اگر کسی با یکی از این ها کار کرده در مورد مزایا و معایب همون بگه.
من خودم یه مدتیه با C#‎‎‎‎ کار می کنم و تا حالا که ازش راضیم، برنامه نویسی راحته به خصوص با وجود ویزوال استدیو 2010. امروز از بچه های نرم افزار دانشگاهمون (شریف) پرسید، مثل اینکه اونا با جاوا کار می کنن.

1. به نظر میرسه سینتکس دوتا زبان هم خیلی به هم نزدیکه (نیست؟).
2. ویرایش گر حرفه ای مثل ویژوال استدیو برای جاوا هم وجود داره؟
3. میشه ( dll (assembly های منیج شده این دو زبان رو بین دو زبان share کرد؟ (مثلا dll از C#‎‎‎‎ توی جاوا استفاده کرد؟)
4. امنیت جاوا هم مثل C#‎‎‎‎ تعطیله؟ (منظورم همین رفلکتور هاست)
5. مثل C#‎‎‎‎ .net جاوا هم به پلتفرم وابسته هست؟ (البته تاجایی که خودم میدونم شعار شرکت سان اینکه یک بار بنویس همه جا استفاده کن)
6. سرعت (در کارهای ریاضی و محاسباتی)

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

ممنون
1.بله خیلی خیلی به هم نزدیکن
2.NetBeans Eclipse MonoDevelop ...
3.بله ikvm یک نمونست
4.توی .Net بله ولی مونو نه --aot=static و ...
5.جوابش سخته.بستگی به برنامه داره.
من همین چند ساعت قبل یه برنامه خیلی بزرگ C#‎ رو پورت کردم به Mono/Linux و اولین exe ه کامپایل شده رو با android/debian chroot اجرا کردم
جاوا هم دقیقاً همین خاصیت رو داره
6.تقریباً یکی هستن

این مطالب رو مطالعه کنید:
CIL
gac
aot
jit
jvm
jilc

من یا اینکه C#‎ کار هستم یه جاوا راي میدم.

this is how flame war begun

mrbm_2007
چهارشنبه 03 اسفند 1390, 23:43 عصر
راستی برا انتخاب زبان برای برنامه نویسی ببین خودت کدوم رو دوست داری.

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

ممنون ، موفق باشید

PetekDincos
چهارشنبه 03 اسفند 1390, 23:46 عصر
امنیت پایین C#‎ مشکل دارم

با سلام
از لحاظ امنیت #C و Java فکر نکنم با هم فرقی داشته باشند هر دوشون امنبتشون نسبت به زبان های Native پایینتره با تشکر

mrbm_2007
چهارشنبه 03 اسفند 1390, 23:47 عصر
من با اینکه C#‎‎ کار هستم یه جاوا راي میدم.



چرا؟ علت خاصی داره یا علاقه شخصی؟


1
3.بله ikvm یک نمونست

ikvm چیه؟

mrbm_2007
چهارشنبه 03 اسفند 1390, 23:52 عصر
با سلام
از لحاظ امنیت #C و Java فکر نکنم با هم فرقی داشته باشند هر دوشون امنبتشون نسبت به زبان های Native پایینتره با تشکر

من با تحقیقاتی که کردم به همین نتیجه رسیدم، و به این ترتیب همچنان :قلب:C#:قلب: رو ترجیح می دم

راستی کسی میدونه که آیا برای جاوا هم برنامه هایی مثل .Net Reflector وجود داره (که کد رو از فایل exe یا dll استخراج می کنه) ؟ یه برنامه به اسم JavaDecompiler بود فکر کنم که یه همچین کاری می کرد!:متفکر:

mp_mp353
پنج شنبه 04 اسفند 1390, 12:40 عصر
آره دوت من برنامه هایی نظیر JavaDecompiler وجود دارند. تا حد زیادی درست کار میکنن ولی میشه با برنامه های دیگه از اینکه دیگران به سورس کد شما دست پیدا کنند جلوگیری کرد.
من خودم هم با سی شارپ کار میکنم هم با جاوا ولی بازهم میگم جاوا رو خیلی دوست دارم.
بعد اینکه سی شارپ یه کسی مثل مایکرو سافت پشتشه و اون روی قدرت سی شارپ کار میکنه. هردو خوبن تو میتونی همون سی شارپ رو کار کنی در کنار جاوا رو هم یاد بگیری.
با این همه به نظر من بیشترین مزیت سی شارپ نسبت به جاوا Visual Studio هست چون واقعا قویه!!!

mp_mp353
پنج شنبه 04 اسفند 1390, 12:45 عصر
البته رویه اینترنت جاوا خیلی بهتر از سی شارپ به نظر میرسه. به نظر من JSP به نسبت ASP واقعا سره.
برای تکنولوژی های مثل Wpf در سی شارپ برای جاوا هم JavaFx واقعا چیز خوبیه.

mrbm_2007
پنج شنبه 04 اسفند 1390, 12:54 عصر
خیلی ممنون از همه ی دوستان
راستی یه سوال دیگه: آیا کامپوننت های موجود برای جاوا هم مثل C# پیدا میشه (مثل تلریک، دواکسپرس، کریپتون و ...)؟ تنوعش توی کدوم بیشتره؟

mp_mp353
پنج شنبه 04 اسفند 1390, 13:02 عصر
کامپوننت که واسه جاوا زیاده و صد درصد مشابه سی شارپ برا جاوا کامپوننت موجوده. اما چون الان ویندوز رو بورسه و به طبع او سی شارپ زیاد استفاده میشه خوب برای سی شارپ خیلی بیشتره.
به همون شکل پلاگین ها نرم افزار های جانبی هم به این شکله. مثلا اگه برای سی شارپ Crystal Report و Stimul برای گزارشگیری هست خوب جاوا مثلا iReport داره که اونم خیلی قویه.

gerdioz
پنج شنبه 04 اسفند 1390, 17:55 عصر
توی این تاپیک (http://barnamenevis.org/showthread.php?291474-%D8%AC%D8%A7%D9%88%D8%A7-%D8%A8%D9%87%D8%AA%D8%B1%D9%87-%DB%8C%D8%A7-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE&highlight=%D8%AC%D8%A7%D9%88%D8%A7) کلی صحبت شده که اگه تا آخر خونده بشه ، چیزهای خوبی دستگیر میشه
اوه اوه نگو که یادم میوفته سرم گیج میره تایپیک تکراری خیلی خیلی زیاد شده دوستان

FastCode
پنج شنبه 04 اسفند 1390, 18:18 عصر
چرا؟ علت خاصی داره یا علاقه شخصی؟


ikvm چیه؟

علت هایی که اشاره شد.
جاوا استانداردتره.

ikvm = کد C# با library های جاوا

mehdi zanjani
پنج شنبه 04 اسفند 1390, 18:29 عصر
به نظرم تو تاپیک های زیادی بحث شده در این مورد ولی اینو میتونم بگم سی شارپ و جاوا خیله به هم شبیه هستند ولی سی شارپ کلا 1 عالم دیگه است چون تو دنیای سی شارپ WPF هست Silverlight هست WCF هست Windows Azure هست و . . . . خیلی تکنولوژی های دیگه که واسه هر کدوم میشه چند سال وقت گذاشت ماکروسافتم که مثل کوه پشتته کلی هم کامپوننت هست واسش در کل با سی شارپ هر کار بخوای میتونی بکنی!

b.saminjad
جمعه 05 اسفند 1390, 13:35 عصر
سلام

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

اول که قرار بود اسمه سی شارپ ++j (این دو زبان بسیار شبیه به همند)

دوم ابداع delegate توسط تیم سی شارپ

سوم وجود داده شمارشی در سی شارپ

شرکت سان مدعی بود که تیم سی شارپ اصول برنامه نویسی شی گرایی را زیر سوال برده(با ابداع delegate)

نکته بعد با وجو د مدیریت حافظه توسط clr هنوز امکان دسکاری حافظه به صورت محدود در سی شارپ وجود دارد

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

مبهم سازی و قفل اسمبلی هست

بعد با فرض اینکه il برنامه شما بدست اومد هرکسی نمیتونه از این کد مشابه برنامه ات بسازه و این نیاز وقت و...

اگه الگوریتمهای خیلی مهمی داری که دوس نداری دیده بشن بهتره از ++vc استفاده کنی

_behnam_
جمعه 05 اسفند 1390, 13:57 عصر
سلام،
انتخاب زبان بستگی به خودتون داره ،
میدونی مهم تخصصه،زبان یه ابزاره
اگه برنامه نویسی آینده شغلی شماست
لینوکس و جاوا بهتره( چرا که اگه شما به اینها مسلط باشید اکثر شرکت ها شمارو استخدام میکنن)
اما اگه برنامه نویسی شما فقط محدود به ویندوز است خوب سی شارپ میتونه انتخاب خیلی خوبی باشه

mrbm_2007
جمعه 05 اسفند 1390, 14:33 عصر
سلام


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


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



اگه الگوریتمهای خیلی مهمی داری که دوس نداری دیده بشن بهتره از ++vc استفاده کنی

ایده ی خیلی خوبیه، ممنون:تشویق:

mrbm_2007
جمعه 05 اسفند 1390, 14:35 عصر
اگه برنامه نویسی آینده شغلی شماست
لینوکس و جاوا بهتره( چرا که اگه شما به اینها مسلط باشید اکثر شرکت ها شمارو استخدام میکنن)
اما اگه برنامه نویسی شما فقط محدود به ویندوز است خوب سی شارپ میتونه انتخاب خیلی خوبی باشه

سلام
نه من رشته ی تخصصیم نرم افزار نیست، ولی کارهایی که می کنم معمولا با توسعه ی نرم افزار های مهندسی همراهه

b.saminjad
جمعه 05 اسفند 1390, 15:12 عصر
می تونی چندتا از این قفل ها اسمبلی رو معرفی کنی؟ (اگر لینکه با پیام بفرست ممنون میشم)


این نرم افزار خوب و راحتیه اسمبلی رو هم قفل میکنه (مجانی هست)

دانلود (http://www.foss.kharkov.ua/g1/projects/eazfuscator/dotnet/Default.aspx)

mrbm_2007
جمعه 05 اسفند 1390, 15:20 عصر
این نرم افزار خوب و راحتیه اسمبلی رو هم قفل میکنه (مجانی هست)

دانلود (http://www.foss.kharkov.ua/g1/projects/eazfuscator/dotnet/Default.aspx)

ممنون
این رو دارم ولی این اسمبلی رو قفل نمیکنه (مبهم سازه)
ولی نرم افزار خوب، ساده و رایگانی هست، بخصوص که با پروژه ها توی ویژوال استدیو هم لینک میشه

b.saminjad
جمعه 05 اسفند 1390, 15:58 عصر
این رو دارم ولی این اسمبلی رو قفل نمیکنه (مبهم سازه)


قفل هم میکنه امتحانش کن

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

mrbm_2007
جمعه 05 اسفند 1390, 16:08 عصر
چجوری قفل میکنه؟ (این مبهم میکنه نه قفل)
من خودم تست کردم ولی با دات نت رفلکتور که باز میشه!
توی سایتش هم گفته که مبهم سازه

Eazfuscator.NET is a free obfuscator for .NET platform. The main purpose of obfuscator is to protect intellectual property of the software.

b.saminjad
جمعه 05 اسفند 1390, 16:27 عصر
با reflector امتحان نکردم ولی ildeassembler باز نمیشه

طریقه کارش هم به این صورته که بعد از درگ کردن پروژه ، vs رو reset میکنی سپس نرم افزار خروجی نهایی (release) رو قفل میکنه