C# vs JAVA
براساس شاخصTiobe، هم زبان سی شارپ(#C)و هم زبان جاوا (Java)برای سال های متوالی در بین پنج زبان مشهور برنامه نویسی در جهان بودهاند.
در ادامه مقاله به بیان مختصر هر یک از این دو زبان، مقایسهی آنها و نتیجه گیری در اینباره میپردازیم.
JAVA
جاوا توسط جیمز گاسلینگ در Sun Microsystem ساختهشد. هدف این بود که یک زبان قابل حمل و با کارایی خوب ایجاد شود که امنیت و استحکام برنامهها را تضمین کند بسیاری از سینتکسهای جاوا به دلیل سادهتر شدن مهاجرت توسعه دهندگان به این زبان جدید از ++C گرفته شدهاند.
جاوا مبتنی بر کلاس و شی گرا است. جاوا به صورت JDK (Java Development Kit) ارسال میشود، که شامل اجزای مختلفی است که برای اجرای یک برنامه جاوا لازم است، با این وجود همه اجزای JDK برای اجرای جاوا الزامی نیستند . اصل اساسی در جاوا WORA است ، به این معنی است که به محض نوشتن یک برنامه در این زبان ، باید بتوان آن را برروی هر پلتفورم نرمافزاری اجرا کرد.
#C
زبان #C در سال 2000 توسط مایکروسافت با ابتکار عمل NET و با تیم توسعه به سرپرستی Anders Hejlsberg ابداع شد. هدف و ایده مایکروسافت متناسبسازی زبان جاوا با نیازهای خود بود ولی به علت اجازه ندادن شرکت Sun Microsystem به دخالت مایکروسافت در زبان جاوا ، زبان #C بوجودآمد.
سی شارپ یک زبان با نوع استاتیک است ، بنابراین کد منبع نوشته شده قبل از تبدیل شدن به برنامه کاملاً بررسی میشود. سی شارپ یک زبان پیچیده برای یادگیری است و تسلط بر آن می تواند بیش از زبانی مانند پایتون به زمان احتیاج داشته باشد.
مقایسه ی زبان #C و JAVA
برای مقایسه جاوا و سی شارپ نمیتوان به مسائل فنی اتکا کرد چون هر زبان به نوبه خود خوب و قابل احترام است . در اینجا با مطرح کردن چند پرسش اساسی و پاسخ به آنها سعی در مقایسه و نتیجه گیری درست و صحیح بین این دو زبان داریم .
- چه موقع باید از هرکدام از زبانهای جاوا و سیشارپ استفادهکرد؟
اولین چیزی که باید هنگام انتخاب بین دو زبان برنامه نویسی بدانید، هدف نهایی شماست. اگرچه نمی توان گفت کدام زبان بهتر است، اما سیشارپ یا جاوا در اکثر موارد براساس نیازمندی های خاصی انتخاب میشوند. هر دو زبان برای اهداف عمومی ساخته شده اند و این بدان معنی است که می توان آنها را به روشهای گوناگونی مورد استفاده قرار داد.
با استفاده از زبان جاوا می توانید برنامههایی را برای استفاده در دسکتاپ، وب و موبایل بنویسید، همچنین میتوان با استفاده از آن، سیستمهای تعبیه شده ایجاد کرد. اکثر ما حداقل دستگاهی داریم که بدون جاوا کار نمی کند: دستگاههای اندرویدی (طبق آمار، بیش از 85 درصد تلفنهای هوشمند در جهان با اندروید اجرا میشوند)، پخش کنندههای Blu-rayو حتی سیم کارتهایی که در موبایل ما هستند، نیاز به زبان جاوا دارند .
اگر کمی در زمینه جاوا از مهارت بالاتری برخوردار باشید، حتی میتوانید از جاوا برای توسعه برنامههای مالی و علمی نیز استفاده کنید. نکته جاوا این است که در مواجهه با مقادیر عظیم اطلاعات بسیار خوب عمل میکند.
این امر، زبان جاوا را به گزینه مناسبی را برای موتورهای جستجو، تجارت الکترونیکی و شبکههای اجتماعی تبدیل میکند. جای تعجب نیست که گوگل، آمازون، e-bay، فیسبوک ، اینستاگرام و linked-in همگی از جاوا به صورت گسترده استفاده میکنند.
وقتی سیشارپ را با جاوا مقایسه میکنیم، باید توجه داشته باشیم زبان سیشارپ نیز یک زبان جهانی است. با این حال، دو زمینه وجود دارد که این زبان در آنها میدرخشد. اول از همه مایکروسافت همه چیز را برای شما آماده کرده است.
میتوانید انواع برنامههای دسکتاپ را برای ویندوز ایجاد کنید. ممکن است از قبل با ویژوال استادیو آشنا باشید. ویژوال استادیو یک بهترین محیط توسعه برای برنامه نویسان در سراسر جهان است که میتوانید برای ساخت برنامههای تجاری از آن استفاده کنید.
باید بدانید که از هر 5 رایانه در جهان 4 تا از آنها از سیستم عامل ویندوز استفاده میکنند. از طرفی با استفاده از ویژوال استادیو و زبان سیشارپ تنها قادر به تهیه برنامههای ویندوزی نیستید، در واقع شما میتوانید برنامههای وب و موبایل هم ایجاد کنید .
دومین و احتمالاً مهمترین دلیلی که مردم از سیشارپ استفاده میکنند برای توسعه بازی است. با استفاده از زبان سیشارپ بدون هیچ مشکلی میتوانید با نرمافزار ایجاد بازی یونیتی کار کنید. به عنوان یک سیستم توسعه بازی، یونیتی بسیار محبوب است: در واقع این سیستم در مقایسه با سیستمهای دیگر بسیار سبک است و در بیش از 30 پلتفرم پشتیبانی میشود. همچنین از سیشارپ برای ایجاد تجربیات واقعیت مجازی استفاده میشود.
- محیطهای در حال اجرای سی شارپ و جاوا
هر دو زبان سیشارپ و جاوا معمولاً کامپایل میشوند، به این معنا که ابتدا کدهای ما به زبان ماشین تبدیل شده و سپس اجرا میشوند، این روش برخلاف برخی زبانهای دیگر است که در زبان اجرا تفسیر میشوند. وقتی زبانی کامپایلری باشد از سرعت و عملکرد بهتری برخوردار است. از طرفی برای اجرای کدهای های کامپایل شده نیاز به نرم افزارهای اضافهتری دارید.
برای اینکه بتوانید از جاوا استفاده کنید ، باید JVM یا همان ماشین مجازی جاوا را دانلود کنید. JVM در واقع یک موتور است که به عنوان یک محیط زمان اجرا برای کدهای جاوا کار میکند. نحوه کار آن هم ساده است: کد های جاوا به bytecode تبدیل میشود که ماشین ها می توانند آن را تفسیر کنند. Bytecode توسط انسان قابل خواندن نیست، فقط واسطهای بین سورس کدهای جاوا و سیستم میزبان است.
در سی شارپ همه چیز کاملاً متفاوت است. برای اینکه بتوانید در آن کدنویسی کنید، باید از فریمورک دات نت استفاده کنید. اگر کاربر ویندوز هستید، احتمال دارد که این فریمورک به طور پیش فرض در رایانه شما نصب شده باشد (از ویندوز 8 به بعد این فریمورک را نمیتوان از سیستم عامل حذف کرد).
با این حال اگر اینگونه نیست، میتوانید آن را به صورت رایگان دانلود کنید. فریمورک دات نت از دو بخش اصلی تشکیل شده است: زمان اجرای زبان مشترک(CLR) و یک کتابخانه از کلاس ها. CLR برنامههای در حال اجرا را مدیریت میکند: در واقع کدها را کامپایل و اجرا کرده و ایمنی آنها را تضمین میکند. مدیریت حافظه هم بر عهده آن است.
بخش دوم یعنی کتابخانه ها نیز، کدهایی هستند که توسط برنامهنویسان مایکروسافت نوشته شده اند و کار برنامه نویسی را برای ما بسیار ساده میکنند. در واقع بسیاری از قابلیتها از قبل نوشته شدهاند و نیازی به پیاده سازی آنها توسط خود برنامه نویس نیست.
- مقایسه قاعده نوشتاری دو زبان سی شارپ و جاوا
از آنجا که سازندگان زبانهای سی شارپ و جاوا تحت تاثیر زبانهای سبک C بوده اند، جای تعجب نیست که نحو و قاعده نوشتاری آنها نیز به هم شبیه باشد. درست مانند زبانهای C و ++C که از بلوک های بریس ({}) استفاده میکنند: در دو زبان سی شارپ و جاوا نیز برای مشخص کردن بلوک های کد از بریس ها استفاده میشود.
در واقع، در سطح دستورات و عبارات، سیشارپ و جاوا به طور مشابه کار میکنند. با این حال، وقتی به سمت تعریف انواع حرکت میکنیم، برخی تفاوتهای جزئی ظاهر میشود
همانطور که در ابتدای این مقاله ذکر شد، هدف اصلی سازندگان سی شارپ ساختن یک جاوای بهتر بود. بنابراین جای تعجب نیست که از ویژگیهای بیشتری نسبت به جاوا برخوردار باشد و این نیز به معنای کلمات کلیدی بیشتری است. امروزه سی شارپ از قابلیتهای بسیار فوق العاده ای بهره میبرد که هر برنامه نویسی را به خود جذب میکند.
سی شارپ همچنین از انواع دادههای بیشتری نسبت به جاوا برخوردار است. جاوا دارای هفت نوع داده اولیه و غیر ابتدایی است. از طرفی سی شارپ دارای گروه از انواع داده ای است: 9 نوع value type و 6 نوع reference type احتمالاً بزرگترین تفاوت بین سی شارپ و جاوا از نظر سینتکس و قاعده نوشتاری این است که سی شارپ از ساختارها(struct) پشتیبانی می کند.
یکی دیگر از قابلیتهای قابل توجه سی شارپ پشتیبانی از LINQ است که با استفاده از آن میتوانید بدون دانش SQL با هر پایگاه دادهای ارتباط برقرار کنید.
- بازار کار برنامه نویسی سی شارپ و جاوا
از لحاظ بازار کاری این دو زبان در ایران، می توان گفت وضعیت سی شارپ و تکنولوژیهای همراه آن به شدت بهتر از جاوا میباشد. معمولا در ایران زبان جاوا رو یاد میگیرند تا وقتی وارد حوزه برنامهنویسی اندروید میشوند راحتر کدنویسی کنند. اما وضعیت بازار کار این دو زبان در خارج کشور کاملا متفاوت از ایران است و جاوا به عنوان بهترین زبان برنامهنویسی در خارج کشور شناخته میشود و بازار کار قابل قبولی دارد.
- مدت زمان یادگیری سیشارپ و جاوا
در یادگیری مقدماتی
- در زبان سی شارپ : تقریبا در طول یک ماه و به طور روزانه 3 تا 5 ساعت برای یادگیری مفاهیم کلی و مقدماتی زمان میخواهد
- در زبان جاوا : در زبان جاوا برای یادگیری مقدماتی به زمان بیشتری به نسبت سایر زبانها نیاز است به طوریکه باید حداقل در مدت یک ماه بین 4 تا 7 ساعت روزانه به فراگیری مفاهیم کلی و تمرینات برای یادگیری بیشتر بپردازید .
در یادگیری متوسط
- در زبان سی شارپ : برای انجام پروژههای متوسط مانند ماشین حساب ، دفترچه تلفن ، دفترچه یادداشت باید حداقل در مدت دو تا سه ماه به طور روزانه 3 تا 5 ساعت به تمرین و یادگیری بپردازید که مرور زمان این مدت یادگیری و تمرین با توجه تسلط شما کاهش پیدا می کند .
- در زبان جاوا : برای انجام مینی پروژههایی مانند ماشین حساب و ... باید حداقل در مدت زمان دو تا سه ماه روزانه بین 6 تا 9 ساعت به تمرین بپردازید (برنامه نویسی جاوا به تمرین بسیار برای یادگیری نیاز دارد و هرچقدر تمرین بیشتر باشد تسلط شما به این زبان به میزان زیادی افزایش مییابد)
در یادگیری پیشرفته
- در زبان سی شارپ : برای انجام پروژههایی مانند کتابخانه و... باید حداقل در مدت 6 ماه روزانه بین 3 تا 5 ساعت به تمرین و یادگیری این زبان بپردازید .
- در زبان جاوا : برای قبول و انجام پروژههای بزرگ باید حداقل به طور میانگین 6تا 7 ماه روزانه بین 6 تا 9 ساعت به یادگیری و تمرین بپردازید که باید سهم بیشتری از آن به تمرین کردن اختصصاص یابد .
مدت زمان |
JAVA |
#C |
مقدماتی |
100 تا 120 ساعت |
80 تا 100 ساعت |
متوسط |
250 تا 300 ساعت |
200 تا 250 ساعت |
پیشرفته |
1000 تا 1500 ساعت |
800 تا 1000 ساعت |
مدت زمان قرارگرفته در جدول به طور میانگین و در فاصله ی زمانی 1 تا 7 ماه میباشد
(برای ورود به بازار کار نیز بعد از 6 ماه تمرین و یادگیری میتوانید به قبول و انجام پروژههای گوناگون بپردازید)
- مقایسه کلی
تفاوتهای اساسی |
JAVA |
#C |
الگو |
مبتنی بر کلاس – زبان شیء گرا برگرفته از C++ |
شی گرا ، component-oriented ، فانکشنال، تایپ قوی |
پروژه |
مناسب برای پروژه concurrency پیچیده مبتنی بر وب |
مناسب برای پروژههای توسعه بازی |
استفاده |
پیام رسانی – برنامه وب و غیره |
بازیها ، توسعه موبایل ، واقعیت مجازی و غیره |
نصب و راهاندازی |
برای اجرا به JDK نیاز است |
فریم ورک .NET کتابخانه عظیمی از کدهای مورد استفاده توسط #C را فراهم می کند. |
محدوده |
تسلط بر تعامل سمت سرور |
زبان سمت سرور با پایه برنامه نویسی خوب |
کراس پلتفورم |
برای کراس پلت فرم با کد عبور خود بسیار کارآمد است. |
در مقایسه با جاوا ، #C باید در این ویژگی بهبود یابد |
ابزارها |
Eclipse, NetBeans, IntelliJ IDEA |
ویژوال استودیو MonoDevelop ، #develop |
- انتخاب بین جاوا و سی شارپ
جاوا دارای یک اکوسیستم بزرگ و گسترده است که هرکدام در حال رشد و تکامل است و کتابخانههای جدید و فریمورک و حتی ابزار ایجاد میکند و زبان های جدید مبتنی بر JVM نیز مانند Scala ، Groovy و غیره در حال ظهور هستند. جاوا همچنین اصلی ترین زبان مورد استفاده Google برای توسعه Android است که بزرگترین سیستم عامل موبایل میباشد.
از طرف دیگر سی شارپ در درجه اول در فریم ورک NET ، .Mono و سایر اجرای CLI استفاده میشود. برنامههای کاربردی ساخته شده با استفاده از #C می توانند در اکوسیستم مایکروسافت کارآمد باشند ، اما با جدیدترین ابزارها و کتابخانهها و این ویژگی در حال به روز رسانی است.
جاوا و سی شارپ تفاوتها و شباهتهای زیادی دارند، زبانی که فرد برای توسعه انتخاب میکند تا حد زیادی بستگی به نوع پروژهای که روی آن کار میکند بستگی دارد. و در نهایت انتخاب بر اساس نوع نیاز و علاقهی شما باید باشد.