জাভা কীভাবে উন্নত করা যায় যাতে এটির আর মুছে ফেলার দরকার নেই?


16

জেনেরিক্স অফিসিয়াল জাভা টিউটোরিয়াল টাইপ ইরেজিওর ব্যাখ্যা এবং কেন এটা কম্পাইলার যোগ করা হয়েছিল:

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

এটি সম্ভবত ব্যবহারিক পদ্ধতির বা সম্ভবত সবচেয়ে কম বেদনাদায়ক ছিল। তবে, এখন যে জেনেরিকগুলি পুরো শিল্প জুড়ে ব্যাপকভাবে সমর্থিত, আমাদের ধরণের ক্ষয় প্রয়োজন না হওয়ার জন্য কী করা যেতে পারে? পিছনের সামঞ্জস্যতা ভেঙে ফেলার প্রয়োজনীয়তার সাথে এটি কি সম্ভব, বা যদি এটি সম্ভব হয় তবে এটি কি বাস্তব?

উপরের উদ্ধৃতিতে শেষ বক্তব্যটি কি স্ব-রেফারেন্সিয়াল হয়ে উঠেছে? এটি হ'ল: "প্রকার মুছে ফেলা জাভা অ্যাপ্লিকেশনগুলিকে সক্ষম করে যা জাভা গ্রন্থাগারগুলির সাথে বাইনারি সামঞ্জস্যতা বজায় রাখার জন্য জেনারিক ব্যবহার করে এবং জাভা সংস্করণগুলির সাথে তৈরি করা অ্যাপ্লিকেশনগুলি যা জাভা সংস্করণগুলির সাথে তৈরি করা হয় যা টাইপ মুছে ফেলার কাজ করে।"


1
সূর্য 1.4 ছিল EOL'ed। আইবিএম এখনও তাদের প্ল্যাটফর্মগুলিতে 1.4 সমর্থন করে।

@ থরবজর্নআরএনএন্ডারসন: এবং কমপক্ষে আমার বাবার বেসমেন্টে যে প্ল্যাটফর্মটি বসে আছে, তার জন্য 1.5 নেই।
Jörg ডব্লু মিটাগ

@ থরবজর্নআরভানএন্ডারসেন শুধু তাই নয় যে কেউ জেভিএমের পূর্ববর্তী সংস্করণগুলির জন্য বর্ধিত সমর্থনও কিনতে পারেন। শেষটি শুনেছি যদিও এটি বেশ ব্যয়বহুল।
maple_shaft

1
এখানে আমাদের কারও কাছে স্ফটিক বল নেই, সুতরাং এটি জবাবদিহি করার মতো নয়। "আপনি কি
জাভাের

@ জার্গডব্লিউমিত্যাগ কি এমন একটি প্ল্যাটফর্ম হতে পারে যা 2012 সালে উত্পাদনের জন্য ব্যবহৃত হয়েছিল?

উত্তর:


7

জীবনের শেষটি জাভা ডেভলপমেন্ট টুলকিট এবং জাভা রানটাইম এনভায়রনমেন্টের ক্ষেত্রে প্রযোজ্য। এবং কেবল ওরাকল (সান) সংস্করণ। তবে এটি তৃতীয় পক্ষের দ্বারা লিখিত অ্যাপ্লিকেশনগুলিতে প্রযোজ্য নয়। উদ্দেশ্যটি কখনই JVM- এ চালিত কোডটি ভাঙার নয়, সুতরাং জাভাটি টাইপ মুছে ফেলা বন্ধ করবে না।

অবশ্যই সি # টাইপ ক্ষয় না করে পশ্চাদপদ-সামঞ্জস্যপূর্ণ পদ্ধতিতে জেনেরিকগুলি প্রবর্তন করেছিল, তবে এটির মূলত সমস্ত সংগ্রহের শ্রেণীর নকল করা ছিল। আমি মনে করি যা জাভা ডিজাইনাররা যা করতে চান না এবং তাই তারা কেন প্রথম স্থানে মুছে ফেলা পছন্দ করে। মান ধরণের ছাড়াই নন-টাইপ-মোছা জেনেরিকের সুবিধা এত বড় নয়।


6
ওপেনজেডিকে টিম আবারও সংশোধিত জেনারিক্সের দিকে তাকানোর বিষয়ে আলোচনা করেছে, সময়সীমার? সম্ভবত জাভা 9 এর সময়সীমার সময় এবং যদি এটি প্রযুক্তিগতভাবে সম্ভব হয় তবে জাভা 10 এর সময়সীমার মধ্যে বিতরণ করার বিষয়টি গুরুত্ব সহকারে দেখা হবে। তবে এটি আমার পক্ষে মারাত্মক প্রশংসনীয়।
মার্টিজন ভার্গবার্গ

প্রকার মুছে ফেলা JVM দ্বারা নয়, সংকলক দ্বারা সম্পন্ন হয়। সংশোধিত জেনেরিকগুলি পরিচয় করানোর জন্য একটি নতুন সংকলক এবং নতুন জেভিএম প্রয়োজন হবে, তবে সম্ভবত তারা পুরানো কোড সহ কাজ করবে।
গ্যাবে

@ গ্যাবে: স্পষ্টতই এগুলি নতুন রিলিজের সাথে পরিচয় করানো হবে, সুতরাং সেখানে নতুন সংকলক এবং নতুন জেভিএম থাকবে। তবে এটির জন্য স্ট্যান্ডার্ড লাইব্রেরির উল্লেখযোগ্য অংশটিও নকল করা দরকার, কারণ এটির তুলনায় নতুন কোডের জেনেরিক সংস্করণ এবং পশ্চাদপটে সামঞ্জস্যের জন্য জেনেরিক সংস্করণগুলির প্রয়োজন হবে। .NET ঠিক ২.০ সংস্করণে করেছে, জাভা এটিকে মুছে ফেলার সাথে এড়িয়ে চলে। .NET এর জন্য মান ধরণের (স্ট্রাক্ট) থাকে এবং তাদের জন্য প্রথম শ্রেণীর সমর্থন প্রকারের ক্ষয়কে পূর্ববর্তী করে। জাভা করে না, তাই সংশোধিত জেনেরিকের জন্য চাপ অনেক কম।
জানু হুডেক

জানু: আমি কেবল এ বিষয়ে মন্তব্য করছিলাম যে জেনেরিকগুলি রেফার করার অর্থ স্বয়ংক্রিয়ভাবে সমস্ত পুরানো কোডটি ভেঙে যায় না। আমি আরও যোগ করব যে একটি List<int>সম্ভবত সম্ভবত বর্তমানের তুলনায় কাজের চাপকে আরও বেশি দক্ষ করে তুলবে List<Integer>
গাবে

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