সি # এবং জাভার মধ্যে প্রধান পার্থক্য কি?


209

আমি শুধু একটি বিষয় স্পষ্ট করতে চাই। এটি একটি প্রশ্ন নয় যার উপর কোনটি ভাল, সেই অংশটি আমি অন্য কারও কাছে আলোচনা করার জন্য রেখেছি। আমি এটি সম্পর্কে যত্ন নেই। আমার কাজের সাক্ষাত্কারে আমাকে এই প্রশ্ন জিজ্ঞাসা করা হয়েছে এবং আমি ভেবেছিলাম এটি আরও কিছুটা শেখার জন্য দরকারী।

এগুলিই আমি নিয়ে আসতে পারি:

  • জাভা হ'ল "প্ল্যাটফর্ম ইন্ডিপেন্ডেন্ট"। আজকাল আপনি বলতে পারবেন মনো প্রকল্প আছে তাই সি # কেও বিবেচনা করা যেতে পারে তবে আমি বিশ্বাস করি এটি কিছুটা অতিরঞ্জিত। কেন? ঠিক আছে, যখন জাভাটির একটি নতুন প্রকাশ সম্পন্ন হবে তখন এটি সমর্থিত সমস্ত প্ল্যাটফর্মগুলিতে এটি একই সাথে পাওয়া যায়, অন্যদিকে মনো # বাস্তবায়নে সি # 3.0 এর কতগুলি বৈশিষ্ট্য এখনও অনুপস্থিত রয়েছে? বা এটি কি সত্যই সিএলআর বনাম জেআরই আমাদের এখানে তুলনা করা উচিত?
  • জাভা ইভেন্ট এবং প্রতিনিধিদের সমর্থন করে না। যতদুর আমি জানি.
  • জাভাতে সমস্ত পদ্ধতি ভার্চুয়াল
  • বিকাশ সরঞ্জামগুলি: আমি বিশ্বাস করি ভিজুয়াল স্টুডিও হিসাবে এমন কোনও সরঞ্জাম এখনও নেই। বিশেষত যদি আপনি টিম সংস্করণগুলির সাথে কাজ করেছেন তবে আপনি কী বলতে চাইবেন তা বুঝতে পারবেন।

আপনি প্রাসঙ্গিক বলে মনে করেন দয়া করে অন্যদের যুক্ত করুন।

আপডেট: সবেমাত্র আমার মন টুপি দিয়েছে, জাভাতে ক্লাস, পদ্ধতি ইত্যাদিতে কাস্টম বৈশিষ্ট্যগুলির মতো কিছু নেই বা আছে?


1
ভাষা প্রয়োগকরণের চেয়ে ভাষা পৃথক, যা গ্রন্থাগার থেকেও আলাদা। আপনি কি তুলনা করার চেষ্টা করছেন?
মিগুয়েল পিং


2
আমি এটিতে একটি এমএসডিএন.মাইক্রোসফট.ইন- ইউএস / লিবারি / এমস 836794.aspx পেয়েছি এটি সি # এবং জাভা এর মধ্যে মিল এবং পার্থক্য উভয়কেই কভার করে।
বিপুল

1
নীচে জাভা সম্পর্কে উল্লিখিত অনেকগুলি সঠিক লাইব্রেরি সহ আপনি পেতে পারেন। উদাহরণস্বরূপ এই বৈধ জাভা কোডটি পরীক্ষা করুন: নতুন স্ট্রিং [] {"জেমস", "জন", "জন", "এডি" where। কোথাও (প্রারম্ভের সাথে ("জে"))। স্বতন্ত্র (); এটি লম্বোক-পিজি নামে একটি লাইব্রেরি ব্যবহার করে। Github.com/nicholas22/jpropel
NT_

উত্তর:


329

জাভা 7 এবং সি # 3 তুলনা করা

(জাভা 7 এর কয়েকটি বৈশিষ্ট্য এখানে উল্লেখ করা হয়নি, তবে usingজাভা 1-6 এর উপরে সি # এর সমস্ত সংস্করণের স্টেটমেন্ট সুবিধা অপসারণ করা হয়েছে।)

আপনার সমস্ত সারাংশ সঠিক নয়:

  • জাভা পদ্ধতিতে ডিফল্ট ভার্চুয়াল হয় তবে আপনি এগুলিকে চূড়ান্ত করতে পারেন। (সি # তে সেগুলি ডিফল্টরূপে সিল করা হয় তবে আপনি সেগুলি ভার্চুয়াল তৈরি করতে পারেন))
  • জাভার জন্য প্রচুর আইডিই রয়েছে, উভয়ই বিনামূল্যে (যেমন: গ্রহন, নেটবিয়ান) এবং বাণিজ্যিক (যেমন ইন্টেলিজ আইডিইএ)

এর বাইরে (এবং ইতিমধ্যে আপনার সারাংশে কী রয়েছে):

  • জেনেরিক্স দুজনের মধ্যে সম্পূর্ণ আলাদা; জাভা জেনেরিকগুলি কেবল একটি সংকলন-কালীন "কৌশল" (তবে এটির জন্য দরকারী)। সি # এবং .NET জেনেরিকগুলি কার্যকর করার সময়ও রক্ষণাবেক্ষণ করা হয় এবং যথাযথ দক্ষতা (উদাহরণস্বরূপ বক্সড বাইটের অ্যারের পরিবর্তে এটির ব্যাক List<byte>হিসাবে একটি byte[]সমর্থন হিসাবে) রেখে মান ধরণের পাশাপাশি রেফারেন্সের ধরণের জন্যও কাজ করা হয় )
  • সি # এর ব্যতিক্রম চেক করে নি
  • জাভা ব্যবহারকারী-সংজ্ঞায়িত মান ধরণের তৈরি করার অনুমতি দেয় না
  • জাভাতে অপারেটর এবং রূপান্তর ওভারলোডিং নেই
  • জাভাতে পুনরাবৃত্তির সাধারণ প্রয়োগের জন্য পুনরাবৃত্তকারী ব্লক নেই
  • জাভাতে লিনকুইয়ের মতো কিছু নেই
  • আংশিকভাবে প্রতিনিধি না থাকার কারণে, জাভাতে বেনামে পদ্ধতি এবং ল্যাম্বডা এক্সপ্রেশনগুলির মতো কিছু নেই। অজ্ঞাতনামা অভ্যন্তরীণ শ্রেণিগুলি সাধারণত এই ভূমিকাগুলি পূরণ করে তবে নির্লিপ্তভাবে।
  • জাভাতে অভিব্যক্তি গাছ নেই
  • সি # এর বেনামে অভ্যন্তর ক্লাস নেই
  • সি # তে জাওয়ার অভ্যন্তরীণ ক্লাসগুলি মোটেও নেই, আসলে - সি # তে থাকা সমস্ত নেস্টেড ক্লাসগুলি জাভার স্ট্যাটিক নেস্টেড ক্লাসগুলির মতো
  • জাভাতে স্ট্যাটিক ক্লাস নেই (যার কোনও উদাহরণ নির্মাণকারী নেই, এবং ভেরিয়েবল, প্যারামিটার ইত্যাদির জন্য ব্যবহার করা যাবে না)
  • জাভাতে সি # 3.0 বেনামি ধরণের কোনও সমতুল্য নেই
  • জাভাতে স্পষ্টভাবে স্থানীয় ভেরিয়েবলগুলি টাইপ করা হয়নি
  • জাভাতে এক্সটেনশন পদ্ধতি নেই
  • জাভাতে অবজেক্ট এবং সংগ্রহের আরম্ভের প্রকাশ নেই izer
  • অ্যাক্সেস মডিফায়ারগুলি কিছুটা আলাদা - জাভাতে (বর্তমানে) কোনও সমাবেশের সরাসরি সমতুল্য নেই, সুতরাং "অভ্যন্তরীণ" দৃশ্যমানতার কোনও ধারণা নেই; সি # তে জাভাতে "ডিফল্ট" দৃশ্যমানতার সমতুল্য নেই যা নেমস্পেসের অ্যাকাউন্ট (এবং উত্তরাধিকার) নেয়
  • জাভা এবং সি # তে আরম্ভের ক্রম যথাযথভাবে পৃথক (সি # বেস টাইপের কনস্ট্রাক্টরে শৃঙ্খলাবদ্ধ কলের আগে পরিবর্তনশীল আরম্ভকারীকে কার্যকর করে)
  • জাভা ভাষার অংশ হিসাবে বৈশিষ্ট্য নেই; তারা get / set / is পদ্ধতির কনভেনশন
  • জাভাতে "অনিরাপদ" কোডের সমতুল্য নেই
  • জাভা-র জেএনআই-এর চেয়ে সি # (এবং সাধারণভাবে নেট) ইনটারপ সহজ
  • জাভা এবং সি # এর এনামগুলির কিছুটা আলাদা ধারণা রয়েছে। জাভা গুলি অনেক বেশি অবজেক্ট-ওরিয়েন্টেড।
  • জাভাতে কোনও প্রিপ্রসেসর নির্দেশ নেই (সি # তে # নির্দিষ্ট, # আইফ ইত্যাদি)।
  • জাভাতে সি # এর সমতুল্য নেই refএবং outরেফারেন্স দ্বারা পরামিতিগুলি পাস করার জন্য
  • জাভাতে আংশিক ধরণের সমতুল্য নেই
  • সি # ইন্টারফেস ক্ষেত্রগুলি ঘোষণা করতে পারে না
  • জাভাতে স্বাক্ষরবিহীন পূর্ণসংখ্যার ধরণ নেই
  • দশমিক ধরণের জন্য জাভাতে কোনও ভাষা সমর্থন নেই । (জাভা.ম্যাথ.বিগডিসিমাল সিস্টেমের মতো কিছু দেয় like ডেসিমাল - পার্থক্য সহ - তবে কোনও ভাষা সমর্থন নেই)
  • জাভাতে কোনও মূল্যহীন মান ধরণের সমতুল্য নেই
  • জাভাতে বক্সিং নির্দিষ্ট ক্রিয়াকলাপগুলির সাথে পূর্বনির্ধারিত (তবে "সাধারণ") রেফারেন্স ধরণের ব্যবহার করে। সি # এবং .NET- এ বক্সিং করা আরও স্বচ্ছ বিষয়, সিএলআর দ্বারা যে কোনও মান ধরণের জন্য বক্সিংয়ের জন্য একটি রেফারেন্স টাইপ তৈরি করা হয়।

এটি নিখুঁত নয়, তবে এটি অফ-হ্যান্ডের বিষয়ে ভাবতে পারি এমন সমস্ত বিষয়কে কভার করে।


24
@ ব্রায়ান: আমি মনে করি জাভা জেনেরিকস এবং অভ্যন্তরীণ শ্রেণীর বিবরণগুলি জাভা সরলতার মাধ্যমে শ্রেষ্ঠত্ব অর্জনের ধারণাটিকে খুব শীঘ্রই বাতিল করতে পারে;)
জোন স্কিট

8
@ ওরেঞ্জডগ: আইএমও, বেশিরভাগ লোকেরা মজা করছে বলে বিতর্ক করছে। আইএমও-র ব্যবহারের চেয়ে সুস্পষ্ট চেষ্টা / শেষ অবধি ব্লক লিখতে বাধ্য করা কীভাবে ত্রুটি-প্রবণতা কম তা দেখা মুশকিল। জাভার সাথে তুলনা করা বেশিরভাগ সি # এর "অতিরিক্ত" বৈশিষ্ট্যগুলির অর্থ হ'ল আপনি কম কোড লেখার মাধ্যমে দূরে সরে যেতে পারেন, এবং সেই কোডটি আরও পঠনযোগ্য হতে পারে।
জন স্কিটি

17
@ ওরেঞ্জডগ: আগ্রহের বাইরে আপনি কতটা নিরপেক্ষ? হ্যাঁ, আমি একজন সি # উত্সাহী, তবে জাভা অভিজ্ঞতার সাথেও বেশ গুরুত্বপূর্ণ - এটি আমার দিনের কাজ, সর্বোপরি। জাভা কার্যকরভাবে কীভাবে ব্যবহার করা যায় সে সম্পর্কে আমি অজ্ঞ নই।
জন স্কিটি

8
@ ওরেঞ্জডগ: শুরু করার জন্য, বেশিরভাগ বিকাশকারীরা "অসুরক্ষিত" ব্যবহার করে কোড লিখেন না যতক্ষণ আমি অবগত, সুতরাং এটি একটি লাল রঙের হারিং ring আমিও মনে করি যে provability একটি লাল হেরিং - আমি আনুষ্ঠানিক provability খুব কতো সহজে এটি জন্য কি আছে তা মনে করি না মানুষের কোড সম্পর্কে কারণ। আমার বক্তব্যটি হ'ল যে কেউ জাভা এবং সি # উভয় ক্ষেত্রেই বেশ অভিজ্ঞ, আমি সি # কে উত্পাদনশীলতা এবং পঠনযোগ্যতার দিক থেকে অনেক উন্নততর ভাষা বলে মনে করি। যদি আপনি বিপরীতটি অনুভব করেন তবে আপনি উভয় ভাষায় আপনার অভিজ্ঞতার স্তরটি পরিষ্কার করতে পারেন? আমি মনে করি এটি আলোচনার সাথে বেশ প্রাসঙ্গিক।
জন স্কিটি

21
@ ওরেঞ্জডগ: তদুপরি, আপনার দাবি যে "বেশি কিছু করতে সক্ষম হবেন এমন সম্ভাবনা বাড়ায় যে আপনি তাদের ভুল করবেন" এটিও একটি মিথ্যা আইএমও ... কারণ এটি ধরে নিয়েছে যে আপনি যদি কোনও বৈশিষ্ট্য ব্যবহার করে কিছু করতে না পারেন তবে যে ভাষা এটি সহজ করে তোলে, আপনাকে এটি একেবারেই করতে হবে না। এটি কেবল অসত্য - প্রায়শই আপনার জাভা এবং সি # তে সম্পাদিত হওয়া কাজগুলি একই রকম হয় তবে বৈশিষ্ট্যগুলি হারিয়ে যাওয়ার কারণে জাভা সেই কাজগুলি সঠিকভাবে সম্পাদন করা আরও শক্ত করে তোলে। কার্যটি সরল করে বৈশিষ্ট্যটি সম্ভবত আপনি এটি ভুল করে করার সম্ভাবনা হ্রাস করে।
জন স্কিটি

24

নীচে সি # এবং জাভার পার্থক্য সম্পর্কে সাহসী ওবাসানজোর গভীরতার উল্লেখে একটি দুর্দান্ত রেফারেন্স দেওয়া আছে। দুজনের মধ্যে স্যুইচ করার সময় আমি সর্বদা নিজেকে এই নিবন্ধটি উল্লেখ করছি।

http://www.25hoursaday.com/CsharpVsJava.html


2
@ জোন স্কিটি: আপনি সর্বাধিক সি # অ্যাক্টিভ বিকাশকারী। আপনি কেন আপনার সি # এবং জাভা পার্থক্যগুলির সংস্করণ বজায় রাখছেন না। আমি বাজি ধরছি লোকেরা এটি পড়তে পছন্দ করবে।
নখ

1
@ ক্লাউস: আমি যা করতে চাই তার সবটুকু করার সময় পাইনি।
জন স্কিটে

19
@ উইনস্টন: আমাদের "চক নরিস এবং জোন স্কিটির মধ্যে" পার্থক্য দরকার: 1) চক নরিস এর সর্বদা সময় থাকে; জনের TimeDateসর্বদা সময় থাকতে ক্লাসটি পরিবর্তন করতে হবে এবং এখনও সময় পাননি:
রেডফিল্টার

11

সি # এর অটোমেটিক বৈশিষ্ট্য রয়েছে যা অবিশ্বাস্যভাবে সুবিধাজনক এবং এগুলি কমপক্ষে আপনার গেটার এবং সেটারগুলিতে কাস্টম লজিক না থাকলে আপনার কোডটি পরিষ্কার রাখতে সহায়তা করে।


10

জাভাতে সি # অনুপস্থিত বৈশিষ্ট্যসমূহ • সি # আরও বেশি আদিম ধরণের এবং গাণিতিক ব্যতিক্রমগুলি ধরার কার্যকারিতা অন্তর্ভুক্ত করে।

Java জাভা জুড়ে প্রচুর পরিমাণে ন্যূনতম সুবিধাগুলি অন্তর্ভুক্ত রয়েছে, যার মধ্যে অনেকগুলি যেমন অপারেটর ওভারলোডিং এবং ব্যবহারকারী-সংজ্ঞায়িত ক্যাসেটগুলি ইতিমধ্যে C ++ প্রোগ্রামারদের বৃহত সম্প্রদায়ের সাথে পরিচিত।

• ইভেন্ট হ্যান্ডলিং একটি "প্রথম শ্রেণির নাগরিক" - এটি ভাষারই অংশ।

Str "স্ট্রাক্টস" এর সংজ্ঞাটি মঞ্জুরি দেয় যা ক্লাসগুলির অনুরূপ তবে স্ট্যাকের উপর বরাদ্দ হতে পারে (সি # এবং জাভাতে ক্লাসের উদাহরণগুলির তুলনায়)।

# সি # ভাষা সিনট্যাক্সের অংশ হিসাবে বৈশিষ্ট্যগুলি প্রয়োগ করে।

# C # সুইচ স্টেটমেন্টগুলিকে স্ট্রিংগুলিতে পরিচালনা করতে অনুমতি দেয়।

# C # বেনামে পদ্ধতি বন্ধের কার্যকারিতা সরবরাহ করে।

# C # পুনরাবৃত্তিকে ফাংশনাল স্টাইলের ফলন কীওয়ার্ডের মাধ্যমে সহ-রুটিনগুলিতে নিয়োগ দেয় allows

# সি # এর আউটপুট প্যারামিটারগুলির জন্য সমর্থন রয়েছে, একাধিক মানের ফিরতি সহায়তা করবে, সি ++ এবং এসকিউএল দ্বারা ভাগ করা একটি বৈশিষ্ট্য।

# C # টির মধ্যে উপনামের নামের স্থানের ক্ষমতা রয়েছে।

# সি # এর "স্পষ্ট সদস্য সদস্য বাস্তবায়ন" রয়েছে যা একটি শ্রেণিকে নির্দিষ্টভাবে একটি ইন্টারফেসের পদ্ধতিগুলি প্রয়োগ করতে পারে যা তার নিজস্ব শ্রেণি পদ্ধতি থেকে পৃথক হয়। এটি একই নামের একটি পদ্ধতি আছে যা দুটি পৃথক ইন্টারফেস বাস্তবায়নের অনুমতি দেয়। একটি ইন্টারফেসের পদ্ধতিগুলি জনসাধারণের প্রয়োজন হয় না; এগুলি কেবল সেই ইন্টারফেসের মাধ্যমে অ্যাক্সেসযোগ্য হতে পারে।

। C # COM এর সাথে সংহতকরণ সরবরাহ করে।

C সি এবং সি ++ এর উদাহরণ অনুসরণ করে, সি # আদিম এবং রেফারেন্স ধরণের জন্য রেফারেন্সের মাধ্যমে কলকে অনুমতি দেয়।

সি # তে জাভা অনুপস্থিত বৈশিষ্ট্যগুলি

• জাভার স্ট্রাইকফপি কীওয়ার্ড গ্যারান্টি দেয় যে ভাসমান পয়েন্ট ক্রিয়াকলাপের ফলাফল প্ল্যাটফর্মগুলিতে একই থাকে।

• জাভা ত্রুটি ফাঁদ এবং পরিচালনা করার জন্য আরও ভাল প্রয়োগের জন্য চেক করা ব্যতিক্রমগুলি সমর্থন করে।


9

আরেকটি ভাল সংস্থান হ'ল http://www.javacamp.org/javavscsharp/ এই সাইটটি এমন অনেকগুলি উদাহরণ গণ্য করে যা এই দুটি প্রোগ্রামিং ভাষার মধ্যে প্রায় সমস্ত পার্থক্যকে প্রশ্রয় দেয়।

বৈশিষ্ট্য সম্পর্কে, জাভাতে টীকা রয়েছে যা প্রায় একইভাবে কাজ করে।


5

জেনেরিক্স:

জাভা জেনেরিকের সাহায্যে আপনি .NET এর সাথে বাস্তবায়নের কোনও দক্ষতা পাবেন না কারণ আপনি যখন জাভাতে জেনেরিক ক্লাসটি সংকলন করেন, সংকলকটি সর্বত্র প্যারামিটার টাইপ করে প্যারামিটারটি নিয়ে যায়। উদাহরণস্বরূপ, যদি আপনার কোনও Foo<T>শ্রেণি থাকে তবে জাভা সংকলক বাইট কোডটি উত্পন্ন করে যেমন এটি Foo<Object>। এর অর্থ কাস্টিং এবং এছাড়াও বক্সিং / আনবক্সিং "ব্যাকগ্রাউন্ডে" করতে হবে।

আমি এখন জাভা / সি # এর সাথে কিছুক্ষণ খেলছি এবং আমার মতে ভাষা স্তরের প্রধান পার্থক্য হ'ল আপনি যেমন বলেছিলেন, প্রতিনিধিরা।


এটি ভুল, জেনেরিক্স মুছা বা পুনর্নির্মাণ (যথাক্রমে জাভা এবং সি #) কার্য সম্পাদনকে প্রভাবিত করে না।
মিগুয়েল পিং

আপনি কাস্টিংয়ের সাথে অটোবক্সিংকে বিভ্রান্ত করছেন।
জেস্পের ই

3
না, ব্রুনো পারফরম্যান্সের পার্থক্য সম্পর্কে সঠিক। জাভাতে কোনও তালিকা <বাইট> (সাধারণভাবে) এর সমতুল্য হওয়ার কোনও উপায় নেই। আপনার কাছে একটি তালিকা থাকতে হবে <বাইট> যা বক্সিং জরিমানা (সময় এবং স্মৃতি) বহন করতে পারে।
জন স্কিটি

(আন) বক্সিংটি কেবল বাক্সযুক্ত প্রকারের জন্য ঘটে, যা আদিম ধরণের।
মিগুয়েল পিং

1
দয়া করে এই নিবন্ধটি দেখুন: jprl.com/Blog/archive/de વિકાસment
ব্রুনো

0

দয়া করে নীচে দেওয়া লিঙ্কটি দেখুন msdn.microsoft.com/en-us/library/ms836794.aspx এটি সি # এবং জাভা এর মধ্যে মিল এবং পার্থক্য উভয়ই কভার করে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.