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

জাভা প্রোগ্রামিংয়ে Reconstruction, Marshalling এবং ভবিষ্যতের পথচলা

Introduction

এই ভিডিওর নির্দিষ্ট অংশটিতে (২০:৪০ থেকে ২৭:২৩) জাভা ল্যাঙ্গুয়েজ আর্কিটেক্ট ব্রায়ান গোয়েটজ (Brian Goetz) জাভার অত্যন্ত গুরুত্বপূর্ণ কিছু ফিচার নিয়ে আলোচনা করেছেন। মূল আলোচনাটি ছিল Project Amber-এর অধীনে আসা Reconstruction (পুনর্গঠন), Marshalling (ডেটা আদান-প্রদান) এবং জাভা ল্যাঙ্গুয়েজকে আরও সহজ করার জন্য ভবিষ্যতের পরিকল্পনা নিয়ে। মূলত রেকর্ড (Record) ক্লাসের সুবিধাগুলো কীভাবে সাধারণ ক্লাসগুলোতেও নিয়ে আসা যায়, সেই কারিগরি বিষয়গুলোই এখানে সহজভাবে তুলে ধরা হয়েছে।


Reconstruction বা অবজেক্ট পুনর্গঠন

ভিডিও রেফারেন্স: [20:40]

এখানে ব্রায়ান 'Withers' বা 'Reconstruction' নিয়ে কথা বলেছেন। আমরা জানি জাভাতে Record ক্লাসগুলো সাধারণত ইমিউটেবল (Immutable) বা অপরিবর্তনীয় হয়। এখন ধরুন, আপনার কাছে একটি অবজেক্ট আছে এবং আপনি চাচ্ছেন সেটির সব ডেটা ঠিক রেখে শুধু একটি মান পরিবর্তন করে নতুন একটি অবজেক্ট তৈরি করতে। একেই বলা হচ্ছে Reconstruction।

সহজ ব্যাখ্যা: মনে করুন আপনার কাছে একটা লাল রঙের প্লাস্টিকের চেয়ার আছে। আপনি চাচ্ছেন ঠিক একই ডিজাইনের কিন্তু নীল রঙের একটা চেয়ার। Reconstruction হলো এমন এক পদ্ধতি যেখানে পুরনো চেয়ারটির ছাঁচ ব্যবহার করে শুধু রঙটা বদলে নতুন একটা চেয়ার তৈরি করা হয়।

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


Marshalling এবং Serialization 2.0

ভিডিও রেফারেন্স: [20:58]

ব্রায়ান 'Marshalling' শব্দটিকে 'Serialization 2.0' হিসেবে অভিহিত করেছেন। যখন আমরা কোনো ডেটাকে এক জায়গা থেকে অন্য জায়গায় (যেমন- নেটওয়ার্কের মাধ্যমে অন্য পিসিতে) পাঠাতে চাই, তখন তাকে একটি নির্দিষ্ট ফরম্যাটে (যেমন- JSON বা Bytes) রূপান্তর করতে হয়।

সহজ ব্যাখ্যা: মার্শালিং হলো অনেকটা আপনার আসবাবপত্র বিদেশে পাঠানোর জন্য প্যাকিং করার মতো। আপনি যখন আপনার আলমারিটা বিদেশে পাঠাবেন, তখন সেটাকে খুলে ছোট ছোট পার্ট করে বাক্সে ভরেন (Deconstruction), আবার বিদেশে পৌঁছানোর পর সেগুলো দেখে দেখে আগের মতো সেট করেন (Reconstruction)। জাভার এই নতুন প্রোটোকল এই প্যাকিং এবং সেট করার কাজটিকে অনেক সহজ ও নিরাপদ করবে।

কঠিন শব্দের ব্যাখ্যা:

  • Marshalling: অবজেক্টের ডেটাকে এমন এক ফরমেটে সাজানো যা অন্য কোনো সিস্টেম বুঝতে পারে।

  • Serialization: অবজেক্টকে বাইট স্ট্রিমে রূপান্তর করার পুরনো প্রক্রিয়া।


ক্লিফ (Cliffs) এবং বয়লারপ্লেট কোড কমানো

ভিডিও রেফারেন্স: [22:10]

ভিডিওতে 'Cliff' বা পাহাড়ের চূড়া থেকে পড়ে যাওয়ার একটি উদাহরণ দেওয়া হয়েছে। ব্রায়ান বুঝিয়েছেন যে, বর্তমানে কেউ যদি রেকর্ড ব্যবহার করে এবং হঠাৎ তার রেকর্ডের সীমাবদ্ধতার বাইরে কিছু করার প্রয়োজন হয়, তবে তাকে রেকর্ড বাদ দিয়ে সাধারণ ক্লাসে চলে যেতে হয়। তখন তাকে প্রচুর Boilerplate কোড (যেমন- getter, setter, equals, hashCode) লিখতে হয়। এটা অনেকটা সমতল রাস্তা থেকে হঠাৎ পাহাড়ের নিচে পড়ে যাওয়ার মতো কষ্টকর।

AI চিন্তাভাবনা ও কোডিং উদাহরণ: আগে আমাদের এমন কোড লিখতে হতো:

Java

public class User {
    private final String name;
    private final int age;

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // বয়লারপ্লেট কোড (প্রচুর কোড লিখতে হয়)
    @Override
    public boolean equals(Object o) { ... }
    @Override
    public int hashCode() { ... }
    public String getName() { return name; }
} 

ভবিষ্যতে 'Carrier Classes' বা 'Component Classes'-এর মাধ্যমে জাভা চেষ্টা করছে এই সাধারণ ক্লাসগুলোতেও রেকর্ডের মতো অটোমেটিক সুবিধা দিতে, যাতে ডেভেলপারদের এই "ক্লিফ" বা কষ্টের মুখে পড়তে না হয়।


ভবিষ্যতের রোডম্যাপ ও সিনট্যাক্স বিতর্ক

ভিডিও রেফারেন্স: [24:50]

ব্রায়ান জানিয়েছেন যে তারা হুট করে কোনো সিদ্ধান্ত নিচ্ছেন না। তারা ৫-৬ বছর ধরে চিন্তা করছেন কীভাবে ক্লাস ডিজাইনকে আরও আধুনিক করা যায়। বর্তমানে তারা Syntax বা কোড লেখার ধরন নিয়ে কাজ করছেন। সিনট্যাক্স নিয়ে ডেভেলপারদের মধ্যে অনেক মতভেদ থাকে, তাই তারা এমন এক পদ্ধতি খুঁজছেন যা দেখতে সুন্দর এবং কাজ করবে নিখুঁতভাবে।


বিশ্লেষণ ও আমার মতামত

কন্টেন্ট ক্রিয়েটর যা বোঝাতে চেয়েছেন: ভিডিওর এই অংশে ব্রায়ান গোয়েটজ মূলত জাভা ডেভেলপারদের আশ্বস্ত করেছেন যে জাভা ল্যাঙ্গুয়েজ আরও স্মার্ট হচ্ছে। তারা শুধু নতুন ফিচার আনছেন না, বরং পুরনো সমস্যার (যেমন- অবজেক্ট কপি করা বা ডেটা পাঠানো) স্থায়ী সমাধান খুঁজছেন।

বাস্তবতা ও সম্ভাবনা: বর্তমানে কোটলিন (Kotlin) বা স্কালা (Scala)-তে 'data class' বা 'copy' মেথড অনেক আগে থেকেই আছে। জাভা দেরিতে হলেও এই ফিচারগুলো অনেক বেশি গভীরভাবে চিন্তা করে আনছে যাতে এটি ভবিষ্যতে বড় প্রজেক্টে কোনো সমস্যা না করে।

পরামর্শ: আপনি যদি একজন জাভা ডেভেলপার হন, তবে এখনই এই ফিচারগুলো ব্যবহার করতে পারবেন না (এগুলো এখনও পরীক্ষার পর্যায়ে বা আলোচনার টেবিলে আছে)। তবে Java 21+ এর Record এবং Pattern Matching ফিচারগুলো প্র্যাকটিস করা শুরু করুন, কারণ ভবিষ্যতের এই Reconstruction ফিচারগুলো রেকর্ডের ওপর ভিত্তি করেই আসবে।

বিকল্প ব্যবস্থা: বর্তমানে যদি আপনি রেকর্ডের মতো সুবিধা সাধারণ ক্লাসে পেতে চান, তবে Lombok লাইব্রেরি ব্যবহার করতে পারেন। তবে ব্রায়ানের কথা অনুযায়ী, জাভার নিজস্ব ফিচারগুলো লোম্বকের চেয়ে অনেক বেশি শক্তিশালী ও নিরাপদ হবে।


আপনার যদি জাভার এই নতুন কনসেপ্টগুলো নিয়ে আরও জানার থাকে, তবে প্রশ্ন করতে পারেন!

[

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

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