সরাসরি প্রধান সামগ্রীতে চলে যান

জাভাতে ক্যারিয়ার ক্লাস এবং ডিকনস্ট্রাকশন এর বিবর্তন

Introduction

এই ভিডিওতে ওরা জাভা ল্যাঙ্গুয়েজের নতুন কিছু ফিচার নিয়ে কথা বলেছে। বিশেষ করে 'Carrier Classes' (বা Component Classes) কী এবং এগুলো কীভাবে জাভাতে ডাটা হ্যান্ডেল করার পদ্ধতি বদলে দিচ্ছে, তা নিয়ে আলোচনা করা হয়েছে। রেকর্ড (Records) আসার পর জাভাতে কোড লেখা অনেক সহজ হয়েছে, কিন্তু সাধারণ ক্লাসগুলোকে কীভাবে রেকর্ডের মতো সুবিধা দেওয়া যায়, সেই বিবর্তনটাই এখানে মূল বিষয়।


ক্যারিয়ার ক্লাসের প্রথম প্রস্তাব (First Proposal)

রেফারেন্স: [14:14]

শুরুতে আইডিয়া ছিল যে, একটা ক্লাসের হেডারেই (Header) আমরা বলে দেব যে এই ক্লাসের ভেতর কী কী কম্পোনেন্ট আছে। এর মাধ্যমে জাভা অটোমেটিকালি equals, hashCode, এবং toString মেথডগুলো তৈরি করে দেবে।

বিস্তারিত: রেকর্ড ক্লাসে যেমন ব্র্যাকেটের ভেতর সব ভেরিয়েবল লিখে দেওয়া হয়, ক্যারিয়ার ক্লাসেও অনেকটা সেরকম করার চেষ্টা করা হয়েছিল। এতে সুবিধা হতো যে আপনাকে বারবার একঘেয়ে কোড (Boilerplate code) লিখতে হতো না। কিন্তু ব্রায়ান গেটজ (Java Architect) খেয়াল করলেন যে, এতে সিস্টেমটা অনেক জটিল হয়ে যাচ্ছে। কারণ এটি ক্লাসের ওপর অনেক বেশি সীমাবদ্ধতা তৈরি করছিল, যা অনেকটা রেকর্ডের মতোই হয়ে যাচ্ছিল।

  • সহজ ব্যাখ্যা (Boilerplate code): প্রೋಗামিংয়ে কিছু কোড আছে যা বারবার একই রকম লিখতে হয় (যেমন গেটার/সেটার)। এগুলোকে 'বয়লারপ্লেট' বলা হয়।

দ্বিতীয় ও বর্তমান প্রস্তাব (Second Proposal)

রেফারেন্স: [15:57]

দ্বিতীয়বার যখন তারা এটা নিয়ে ভাবলেন, তখন তারা ফোকাস করলেন 'API' এর ওপর। অর্থাৎ, একটা ক্লাসকে কীভাবে ভেঙে ফেলা যায় (Deconstruction), তার ওপর বেশি গুরুত্ব দেওয়া হলো।

বিস্তারিত: এবারের প্রস্তাবে বলা হলো, ক্লাসের হেডারে কম্পোনেন্ট লিস্ট থাকার মানে হলো—"আমি এই জিনিসগুলো দিয়ে তৈরি এবং আমাকে এইভাবেই ভাঙা যাবে।" এটা অনেকটা কোনো খেলনা বা যন্ত্রের পার্টস আলাদা করার মতো। যদি আপনার ক্লাসে একটি কনস্ট্রাক্টর (Constructor) থাকে যার প্যারামিটারগুলো এই লিস্টের সাথে মিলে যায়, তবে জাভা সেটাকে অটোমেটিকালি গ্রহণ করে নেবে। এর ফলে কোড আরও নমনীয় (Flexible) হয়।

  • সহজ ব্যাখ্যা (Deconstruction): ধরুন আপনার কাছে একটি 'বিন্দু' (Point) ক্লাস আছে যার মান x=10 এবং y=20। ডিকনস্ট্রাকশন মানে হলো সেই ক্লাস থেকে সরাসরি 10 এবং 20 মান দুটি আলাদা করে নেওয়া।

রিকনস্ট্রাকশন এবং উইদার্স (Reconstruction & Withers)

রেফারেন্স: [18:01]

নতুন আইডিয়াগুলোর মধ্যে একটি হলো 'Reconstruction'। অর্থাৎ একটা অবজেক্টকে ভেঙে আবার নতুন করে গড়া।

বিস্তারিত: মাঝে মাঝে আমাদের প্রয়োজন হয় একটি অবজেক্টের সব মান ঠিক রেখে শুধু একটি মান পরিবর্তন করে নতুন একটি অবজেক্ট তৈরি করা। জাভাতে এটাকে সহজ করার জন্য 'Withers' বা with কীওয়ার্ড নিয়ে কাজ চলছে। যেমন: myObject with { x = 5 }। ক্যারিয়ার ক্লাস এই রিকনস্ট্রাকশন প্রসেসকে অনেক সহজ করে দেবে।


ডাটা মার্শালিং ও সিরিয়ালাইজেশন (Marshalling & Serialization)

রেফারেন্স: [19:11]

যদি আমরা কোনো ক্লাসকে সঠিকভাবে ভাঙতে এবং আবার জোড়া লাগাতে পারি, তবে সেই ডাটা ইন্টারনেটের মাধ্যমে পাঠানো (Serialization) অনেক সহজ হয়।

বিস্তারিত: ভিডিওতে বলা হয়েছে, ডিকনস্ট্রাকশন প্রোটোকল থাকলে ডাটাকে খুব সহজেই JSON বা অন্য ফরম্যাটে রূপান্তর করে অন্য কোথাও পাঠানো যাবে এবং সেখানে আবার আগের অবস্থায় ফিরিয়ে আনা যাবে। এতে ডেটার নিরাপত্তা এবং নির্ভুলতা বাড়ে।


এনালাইসিস এবং আমার ভাবনা

ভিডিওর এই অংশটি থেকে বোঝা যায় যে, জাভা টিম এখন কোড কমানোর চেয়ে সেমান্টিক কন্ট্রাক্ট (Semantic Contract) বা কোডের অর্থপূর্ণ ব্যবহারের দিকে বেশি নজর দিচ্ছে।

বাস্তবতা ও সম্ভাবনা: ১. সহজ কোড: ভবিষ্যতে জাভা ডেভেলপারদের আর হাজার হাজার লাইনের অপ্রয়োজনীয় কোড লিখতে হবে না। ২. ভুল কম হওয়া: অটোমেটিক মেথড তৈরির ফলে হাতে কোড লেখার সময় যে ভুলগুলো হয়, তা কমে যাবে। ৩. বিকল্প চিন্তা: লম্বক (Lombok) লাইব্রেরি বর্তমানে এই কাজগুলো করে দেয়, কিন্তু জাভা নিজে থেকে এই ফিচারগুলো আনলে থার্ড-পার্টি লাইব্রেরির ওপর নির্ভরতা কমবে।

পরামর্শ: আপনি যদি নতুন জাভা শিখছেন, তবে Records সম্পর্কে ভালো ধারণা নিন। কারণ ক্যারিয়ার ক্লাস মূলত রেকর্ডের সীমাবদ্ধতাগুলো দূর করার জন্যই আসছে। জাভার পরবর্তী আপডেটগুলোতে এই with এক্সপ্রেশন এবং ডিকনস্ট্রাকশন প্যাটার্নগুলো আপনার কোডিং স্টাইলকে আরও স্মার্ট করে তুলবে।

সহজ ভাষায় কিছু কঠিন শব্দের ব্যাখ্যা:

  • Encapsulation (এনক্যাপসুলেশন): ডাটাকে একটি প্যাকেটের (ক্লাস) মধ্যে নিরাপদ রাখা।

  • Canonical Constructor: একটি স্ট্যান্ডার্ড নিয়ম মেনে তৈরি করা কনস্ট্রাক্টর যা ক্লাসের সব ডাটা সেট করে।

  • Semantic: কোডের বাহ্যিক রূপ নয়, বরং কোডটি আসলে কী বোঝাতে চাচ্ছে সেই মূল অর্থ।

[

Carrier Classes & Discussing Syntax - Inside Java Podcast 52

Java · 3K views

](http://www.youtube.com/watch?v=b6cXuA84c9g)

মন্তব্যসমূহ

এই ব্লগটি থেকে জনপ্রিয় পোস্টগুলি

সিজ্জিন (Sijjin) vs ইল্লিয়িন (Illiyin) পার্থক্য Difference

Sijjin (سِجِّين) এবং Illiyin (عِلِّيِّين) —এ দুটি শব্দ কুরআনে এসেছে এবং দুটোই মানুষের আমলনামা সংরক্ষণ সম্পর্কিত স্থানকে নির্দেশ করে। ১. সিজ্জিন (Sijjin) সিজ্জিন হলো পাপীদের (কাফের, মুনাফিক ও দুরাচারীদের) আমলনামা সংরক্ষণের স্থান। এটি সাত তলদেশের নীচে এক কারাগার বা অন্ধকার জগতে অবস্থিত বলে উল্লেখ রয়েছে। সূরা আল-মুতাফফিফীন (৮৩:৭-৯) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْفُجَّارِ لَفِي سِجِّينٍ ۝ وَمَا أَدْرَاكَ مَا سِجِّينٌ ۝ كِتَابٌ مَرْقُومٌ" অর্থ: "না, পাপীদের আমলনামা সিজ্জিনে সংরক্ষিত। তুমি কি জানো, সিজ্জিন কী? এটি এক লিখিত দলিল।" সিজ্জিনকে একটি কারাগার, সংকীর্ণ স্থান, বা নিচের স্তরে অবস্থিত এক অন্ধকার দুনিয়া হিসেবে ব্যাখ্যা করা হয়। ২. ইল্লিয়িন (Illiyin) ইল্লিয়িন হলো সৎকর্মশীলদের (মুমিন ও নেককারদের) আমলনামা সংরক্ষণের স্থান । এটি সপ্তম আসমানের ওপরে সংরক্ষিত এক সম্মানিত স্থান। সূরা আল-মুতাফফিফীন (৮৩:১৮-২১) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْأَبْرَارِ لَفِي عِلِّيِّينَ ۝ وَمَا أَدْرَاكَ مَا عِلِّيُّونَ ۝ كِتَابٌ مَرْقُومٌ ۝ يَش...

তারাবিহ সমগ্র - প্রথম আলো

রামাদান ২০২৪ উপলক্ষে প্রথম আলোর নিয়মিত আয়োজন - খতমে তারাবিহ'র সূরা গুলো নিয়ে সংক্ষিপ্ত আলোচনা'র লিংক  নিচে দেওয়া হলো।  লিংকে ক্লিক করলেই আপনাকে আলোচনা তে নিয়ে যাবে। তারাবিহ: ১ | একটি খুন ও গাভি নিয়ে বনি ইসরাইলের বাড়াবাড়ি তারাবিহ: ২ | নারীর মর্যাদা ও অধিকার এবং অলৌকিক তিন ঘটনা তারাবিহ: ৩ | যে ১৪ নারীকে বিয়ে করা হারাম তারাবিতে: ১২ | মহানবী (সা.)–এর আকাশভ্রমণ এবং আসহাবে কাহাফের কাহিনি

রেডমি নোট ৯ এর বিস্তারিত | Redmi Note 9 in Bangla

৩০ এপ্রিল, ২০২০ এ শাওমির ঘোষনা আসে এই ফোনটি নিয়ে। কিন্তু ফোনটি মার্কেটে আসে মে মাসের শেষের দিকে৷ করোনার কারনে ফোনটি বাংলাদেশে আসতে আরো সময় নেয়। বর্তমানে বাংলাদেশে আন অফিশিয়াল ভাবে ফোনটি পাওয়া যাচ্ছে৷ বাংলাদেশে অফিশিয়াল ভাবে এখনো ফোনটি আসার তথ্য নেয়৷ চলুন ফোনটি নিয়ে বিস্তারিত আলোচনা করা যাক। শাওমি নোট সিরিজের ফোন বের করে এদের রেডমি নামে সাব ব্যান্ড৷ এদের কাজ হল এই নোট সিরিজ নিয়ে কাজ করা৷ প্রতিবছর নোট সিরিজের ১/২ টা ফোন বাজারে আসে। সাথে সেই ফোন গুলার বিভিন্ন ভার্সন (যেমন - র‍্যাম ও রমের ভিত্তিতে) বাজারে আসে। এই বছরও তারা রেডমি সিরিজের নোট ৯ বাজারে আনে। এই বছর হয়তো এই সিরিজের আরো ফোন বাজারে আসবে। ডিস্পলেঃ ফোনটির ডিসপ্লে সাইজ ৬.৫৩ ইঞ্চি। এতে আইপিএস এলসিডি ডিসপ্লে ব্যবহার করা হয়েছে। এই ফোনের ডিসপ্লে প্রটেকশন হিসেবে আছে গরিলা গ্লাস ফাইভ। স্ক্রিন আর ফোনের বডির অনুপাত প্রায় ৮৩.৫%। এই ফোনের ডিসপ্লে ফুলএইচডি মানে ১০৮০পি। এই ডিস্পলের দৈর্ঘ্য ১৯.৫ একক এবং প্রস্থ হল ৯ একক। এত বড় ফোনের কারনে এই ফোনের পিপি আই ডেনসিটি ৩৯৫। যা একটু কম। প্লাটফর্মঃ এই ফোনের অপারেটিং সিস্টেম এন্ড্রয়েড ১০ এবং এর...