1. জাভা সংস্করণের ইতিহাস

জাভার ইতিহাস 1991 সালে শুরু হয়, যখন সূর্য প্রোগ্রামারদের একটি গ্রুপ ছোট ডিভাইসগুলির জন্য একটি ভাষা তৈরি করার সিদ্ধান্ত নেয়: টিভি রিমোট কন্ট্রোল, কফি মেকার, টোস্টার, ব্যাঙ্ক কার্ড ইত্যাদি।

এই ডিভাইসগুলির নির্মাতারা তাদের পণ্যগুলি নিয়ন্ত্রণ করতে খুব আলাদা প্রসেসর ব্যবহার করে, তাই একটি নির্দিষ্ট প্রসেসর বা OS এর আর্কিটেকচারের সাথে আবদ্ধ হওয়া খুব গুরুত্বপূর্ণ হয়ে ওঠে।

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

বেশিরভাগ প্রোগ্রামাররা একটি কম্পিউটারকে একটি মেশিন হিসাবে উল্লেখ করে।

মজাদার.

C++ জাভা ভাষার ভিত্তি হিসাবে নেওয়া হয়েছিল এবং এটি ব্যাপকভাবে সরলীকৃত এবং প্রমিত করা হয়েছিল। যদি C++ আপনাকে 10টি উপায়ে কিছু করতে দেয়, তাহলে জাভা তাদের মধ্যে শুধুমাত্র একটিকে ধরে রেখেছে। কিছু উপায়ে এটি হায়ারোগ্লিফ থেকে একটি বর্ণমালায় রূপান্তরের মতো ছিল।

জাভার প্রথম সংস্করণ 1996 সালে প্রকাশিত হয়েছিল। সেই সময় থেকে, জাভা বিশ্বজুড়ে তার বিজয়ী যাত্রা শুরু করেছিল, যা ঘুরেফিরে, ভাষার বিবর্তন এবং বৃদ্ধিকে উদ্দীপিত করেছিল। আজ, লক্ষ লক্ষ লাইব্রেরি এবং কোটি কোটি লাইন কোড জাভাতে লেখা হয় এবং প্রতি 6 মাসে জাভার নতুন সংস্করণ প্রকাশিত হয়:

নাম বছর ক্লাসের সংখ্যা
JDK 1.0 1996 211
JDK 1.1 1997 477
J2SE 1.2 1998 1,524
J2SE 1.3 2000 1,840
J2SE 1.4 2002 2,723
J2SE 5.0 2004 3,279
জাভা এসই 6 2006 ৩,৭৯৩
জাভা এসই 7 2011 ৪,০২৪
জাভা এসই 8 2014 4,240
জাভা এসই 9 2017 6,005
জাভা এসই 10 2018 6,002
জাভা এসই 11 2018 4,411
জাভা এসই 12 2019 ৪,৪৩৩
জাভা এসই 13 2019 4,515

যদিও জাভার সংস্করণগুলি নিয়মিত প্রকাশ করা হয়েছিল, তবে সেগুলি সমস্ত প্রোগ্রামারদের জন্য সমান তাৎপর্য বহন করে না: জাভা ফিট এবং শুরুতে বিকশিত হয়েছে।


2. জাভা 2

JDK 1.2 প্রকাশের সাথে প্রথম বড় লাফ ফরোয়ার্ড হয়েছে। এটিতে এত বেশি উদ্ভাবন ছিল যে জাভার নির্মাতারা এটির নাম পরিবর্তন করে জাভা 2 প্ল্যাটফর্ম স্ট্যান্ডার্ড সংস্করণ বা সংক্ষেপে J2SE 1.2 রাখেন।

প্রধান উদ্ভাবন ছিল:

  • strictfpকীওয়ার্ড
  • গ্রাফিক্স নিয়ে কাজ করার জন্য সুইং লাইব্রেরি
  • JIT কম্পাইলার, যা জাভা প্রোগ্রামের এক্সিকিউশনকে ত্বরান্বিত করে
  • সংগ্রহ একটি বিশাল সেট
  • সম্পূর্ণ ইউনিকোড সমর্থন: জাপানি, চীনা এবং কোরিয়ান।

আজ, এই উদ্ভাবনগুলি এত বড় বলে মনে হয় না, তবে প্রতিটি বড় প্রকল্প একটি ছোট থেকে বৃদ্ধি পায়। জাভা আজকের মতো জনপ্রিয় হবে না যদি 20 বছর আগে প্রোগ্রামারদের একটি ছোট দল ভাষা উন্নত না করত।


3. জাভা 5

JDK 1.5 সেপ্টেম্বর 2004 সালে মুক্তি পায়। এটি অনেক উদ্ভাবনও চালু করেছিল, তাই এটি সাহায্য করতে পারেনি কিন্তু একটি নতুন নামের প্রাপ্য: সংস্করণ 1.5, 1.6, এবং 1.7 এর পরিবর্তে, তারা 5.0, 6.0 এবং 7.0 ব্যবহার করার সিদ্ধান্ত নিয়েছে। সুতরাং, JDK 1.5 এর পুরো নাম ছিল Java 2 Standard Edition 5.0

এই আপডেটে এমন জিনিসগুলি অন্তর্ভুক্ত করা হয়েছে যা ছাড়া ভাষার আরও বিকাশ সম্ভব হত না।

টীকা _ স্প্রিং এবং হাইবারনেট থেকে JUnit পর্যন্ত প্রধান আধুনিক ফ্রেমওয়ার্কগুলির অর্ধেক টীকা তৈরি করা হয়েছে।

জেনেরিক _ জেনেরিক্স সংগ্রহের শক্তি (এবং আরও অনেক কিছু) নতুন উচ্চতায় নিয়ে গেছে। কোডটি সহজ, আরও কমপ্যাক্ট এবং নিরাপদ হয়ে উঠেছে।

অটোবক্সিং/আনবক্সিং হল আদিম প্রকার এবং তাদের মোড়কের প্রকারের মধ্যে স্বয়ংক্রিয় রূপান্তর। এটি কোড লেখা এবং পড়া অনেক সহজ করেছে এবং সংগ্রহগুলিকে আরও জনপ্রিয় করেছে।

লুপটি এখন প্রোগ্রামাররা যে সমস্ত লুপের লেখে তার অন্তত অর্ধেকের জন্য অ্যাকাউন্ট করে foreachএবং, অবশ্যই, সংগ্রহের সাথে কাজ করার সময় এটি অপরিহার্য।

enum আরেকটি চমৎকার নতুন বৈশিষ্ট্য . এটি অনেক কিছুকে সুন্দরভাবে সরলীকরণ করতে দেয়।

এই সব উদ্ভাবন নয়: শত শত নতুন ক্লাস যোগ করা হয়েছে. গুরুত্বপূর্ণ বিষয় হল যে তারা ছিল সঠিক উদ্ভাবন, এবং জাভার জনপ্রিয়তাকে আরও একটি শক্তিশালী বুস্ট দিয়েছে।


4. জাভা 6

জাভা 6 কে অনেক ছোট ছোট উন্নতি এবং নামের 2 নম্বর পরিত্যাগের জন্য মনে রাখা হয়: এটি আর "জাভা 2 স্ট্যান্ডার্ড সংস্করণ 6.0" নয়, কেবল "জাভা স্ট্যান্ডার্ড সংস্করণ 6.0" ছিল।

এখানে কিছু আকর্ষণীয় উদ্ভাবন রয়েছে:

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

জাভা প্রোগ্রামের ভিতরে সরাসরি জাভাস্ক্রিপ্ট চালানো সম্ভব হয়েছে । এই বৈশিষ্ট্যটি উপস্থিত হয়েছিল কারণ JavaSE 6-এ Rhino JavaScript ইঞ্জিন অন্তর্ভুক্ত ছিল।


5. জাভা 7

জাভা 7 জুলাই 2011 সালে প্রকাশিত হয়েছিল। এতে অনেক উন্নতি হওয়ার কথা ছিল, কিন্তু প্রোগ্রামাররা যা পরিকল্পনা করা হয়েছিল তার একটি ছোট অংশ যোগ করতে পেরেছিল। বিশেষ করে, তারা এমন কিছু যোগ করেছে:

ডেটা ইনপুট এবং আউটপুট নিয়ে কাজ করার জন্য একটি নতুন লাইব্রেরি। নতুন ইনপুট আউটপুট API নামে পরিচিত , এটি প্যাকেজে অবস্থিত java.nio

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

সুইচ স্টেটমেন্ট কেস মান হিসাবে স্ট্রিং ব্যবহার করার ক্ষমতা অর্জন করেছে।

স্বয়ংক্রিয় সম্পদ ব্যবস্থাপনাও উল্লেখযোগ্যভাবে উন্নত হয়েছে: try-with-resourcesনির্মাণের সাথে, একটি জাভা প্রোগ্রাম আপনার জন্য ডেটা স্ট্রিম বন্ধ করতে পারে যখন তাদের আর প্রয়োজন হয় না।

অন্যান্য অনেক পরিবর্তন ছিল, কিন্তু জাভা শেখার আমাদের বর্তমান পর্যায়ে সেগুলো তেমন গুরুত্বপূর্ণ নয়।


6. জাভা 8

জাভা 8 মার্চ 2014 এ প্রকাশিত হয়েছিল এবং জাভা এর সবচেয়ে শক্তিশালী সাম্প্রতিক আপডেট ছিল।

সর্বোপরি, প্রোগ্রামাররা এটিকে ল্যাম্বডা এক্সপ্রেশন এবং কার্যকরী ইন্টারফেস ( @FunctionalInterfaceটীকা) যোগ করার জন্য মনে রাখে। আমরা লেভেল 21 এ তাদের পরীক্ষা করব। আপনার কোড আর কখনও একই হবে না।

সংগ্রহের জন্য স্ট্রীমগুলিও যোগ করা হয়েছিল, যা ল্যাম্বডা এক্সপ্রেশনের সংমিশ্রণে, কোডটি আরও কম্প্যাক্টভাবে লেখা সম্ভব করে তুলেছিল। যদিও সবসময় অনেক বেশি পাঠযোগ্য নয়।

মজাদার.

এবং তৃতীয় বড় পরিবর্তন হল জাভা 8 তারিখ এবং সময়ের সাথে কাজ করার জন্য সম্পূর্ণ নতুন API-এর প্রবর্তন — তারিখ সময় API । আমরা নিকট ভবিষ্যতে এটি অধ্যয়ন করব।


7. জাভা 9

জাভা 9 সেপ্টেম্বর 2017 এ প্রকাশিত হয়েছিল। সেই সময় থেকে, জাভার নির্মাতারা আরও ঘন ঘন নতুন সংস্করণ প্রকাশ করার সিদ্ধান্ত নিয়েছে — প্রতি ছয় মাসে। তারা সম্ভবত Google Chrome ব্রাউজারের বিকাশকারীদের দ্বারা গৃহীত পদ্ধতির দ্বারা প্রভাবিত হয়েছিল।

জাভা 9 রিলিজটি জাভা মেশিনের অভ্যন্তরীণ অংশের উপর বেশি দৃষ্টি নিবদ্ধ করে। এটি সাধারণ প্রোগ্রামারদের কাছে সবচেয়ে উল্লেখযোগ্য বিষয় নিয়ে এসেছিল একটি প্রোগ্রামকে মডিউলে ভাগ করার ক্ষমতা। যখন আপনার হাজার হাজার ক্লাস থাকে বা যখন আপনার কোড গতিশীলভাবে প্লাগইনগুলি আনলোড করে তখন এটি খুবই সুবিধাজনক৷

তবে অদূর ভবিষ্যতে এটি সম্ভবত আমাদের খুব একটা কাজে আসবে না।


8. জাভা 11

জাভা 9 প্রকাশের ছয় মাস পরে, জাভা 10 বের হয়েছিল এবং আরও ছয় মাস পরে, জাভা 11 বের হয়েছিল।

এই সময়ে অনেকগুলি ছোট উন্নতি করা হয়েছিল, কিন্তু আপনি সম্ভবত শুধুমাত্র দুটি মনে রাখবেন:

এটি ইউনিকোড 10 এর জন্য সমর্থন যোগ করেছে। এখন আপনি আপনার জাভা প্রোগ্রামগুলিতে ইমোজি ব্যবহার করতে পারেন। আপনি তাদের সাথে একইভাবে কাজ করতে পারেন যেভাবে আপনি বুলিয়ান টাইপের সাথে কাজ করেন:

টাইপ ইনফারেন্স উন্নত করা হয়েছে, এবং varকীওয়ার্ডটি , যেটি আপনি পছন্দ করবেন তা উপস্থিত হয়েছে।

এখন আপনি নিম্নলিখিত লিখতে পারেন:

var str = "Hello";

এবং কম্পাইলার এটি রূপান্তরিত করে:

String str = "Hello";

তবে কিছু লোকসানও ছিল। জাভার নির্মাতারা JDK 11 থেকে JavaFX, Java EE এবং CORBA এর মতো লাইব্রেরি বাদ দিয়েছেন।


9. সামঞ্জস্যের গুরুত্ব

যখন একটি নতুন সংস্করণ প্রকাশিত হয়, প্রোগ্রামাররা প্রায়শই স্ক্র্যাচ থেকে শুরু করতে চায়। সর্বোপরি, কে পুরানো বাগগুলির একটি গুচ্ছ ঠিক করতে চায় যখন তারা একেবারে ইতিবাচক হয় যে কোডটি প্রথম থেকেই লেখা উচিত ছিল?

কিন্তু ইতিহাস এমন পদ্ধতি সমর্থন করে না। প্রতিবার প্রোগ্রামাররা একটি প্রোগ্রামের একটি নতুন সংস্করণ প্রকাশ করে, এর ব্যবহারকারীদের 90% একটি পুরানো সংস্করণ ব্যবহার করে। তারা প্রোগ্রামের নতুন বৈশিষ্ট্যগুলি ব্যবহার বা উপেক্ষা করতে পারে, তবে ব্যবহারকারীরা যা ঘৃণা করেন তা হল যখন ভাল কাজ করত এমন কিছু কাজ করা বন্ধ করে দেয়।

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

আরও কী, উইন্ডোজ আপনাকে উইন্ডোজ 95 এর জন্য 20 বছর আগে লেখা বা এমএস ডস 3.0-এর জন্য 30 বছর আগে লেখা প্রোগ্রামগুলি চালাতে দেয় — তারা কাজ করবে। এটি উইন্ডোজ জনপ্রিয় থাকার একটি কারণ।

এবং জাভা ততটা জনপ্রিয় হবে না যদি এর বিকাশকারীরা সামঞ্জস্যের বিষয়ে চিন্তা না করে। যে কোনো সময় জাভা মেশিনের একটি নতুন সংস্করণ, SDK-এর একটি নতুন সংস্করণ, বা ক্লাসে বড় পরিবর্তন, জানুয়ারী 1996 থেকে লেখা সমস্ত জাভা কোড কাজ করতে থাকে।

এটি সাধারণত কিছু অপসারণ না করে শুধুমাত্র নতুন পদ্ধতি, ক্লাস এবং প্যাকেজ যোগ করে অর্জন করা হয়। এই পদ্ধতির তার সুবিধা এবং অসুবিধা আছে।

একদিকে, জাভা পুরোনো, সাবঅপ্টিমাল এবং অপ্রয়োজনীয় কোডের আকারে একগুচ্ছ লাগেজের চারপাশে টেনে আনে। অন্যদিকে, জাভা 11-এ লেখা আপনার প্রজেক্ট সবসময় জাভা 8-এ লেখা একটি লাইব্রেরি ব্যবহার করতে পারে যা জাভা 5 এবং জাভা 2-এ লেখা লাইব্রেরি ব্যবহার করে। কোডের এই হোজপজ ঠিক কাজ করবে।

C++ ভাষার সাথে, 32-বিট এবং 64-বিট উভয় প্ল্যাটফর্মের জন্য সংকলিত লাইব্রেরি একই প্রকল্পে ব্যবহার করা যাবে না। এবং আপনি একটি বিশাল মাথা ব্যাথা থাকবে যদি আপনি হঠাৎ আবিষ্কার করেন যে charএকটি লাইব্রেরিতে ব্যবহৃত টাইপটি একটি বাইট ব্যবহার করে, অন্যটি দুটি বাইট ব্যবহার করে।


10. অবচয়

সুতরাং, জাভার নির্মাতারা কিছু অপসারণ না করার সিদ্ধান্ত নিয়েছে, তবে শুধুমাত্র নতুন ক্লাস এবং প্যাকেজ যোগ করার জন্য। কিন্তু কিভাবে তারা প্রোগ্রামারদের জানাতে পারে যে বিদ্যমান সাবঅপ্টিমাল সমাধানের জন্য একটি নতুন যোগ্য বিকল্প আছে?

এটি করার জন্য, তারা টীকা সঙ্গে এসেছেন @Deprecated.

যদি কিছু পদ্ধতি বা শ্রেণী অবমূল্যায়ন করা হয়, এই টীকাটি তার ঘোষণার পাশে যোগ করা হয়। এর মানে হল যে প্রোগ্রামাররা কোড ব্যবহার করতে নিরুৎসাহিত হয়।

আপনি এখনও একটি বঞ্চিত শ্রেণী বা পদ্ধতি ব্যবহার করতে পারেন, কিন্তু এটি সুপারিশ করা হয় না।

এবং কতবার লোকেরা এমন কিছু করে যা সুপারিশ করা হয় না? প্রায় সবসময় 🙂

20 বছর ধরে অনেক ক্লাস অবলোচিত হয়েছে — সেগুলি ব্যবহার করা হয়েছে এবং এখনও ব্যবহার করা হচ্ছে৷ লোকেরা তাদের সাথে পরিচিত বা তারা কেবল সুবিধাজনক। কিন্তু একটি ঝুঁকি আছে যে তারা এক পর্যায়ে সরানো হবে, তাই তাদের ব্যবহার না করা ভাল।

IntelliJ IDEA সহ সমস্ত আধুনিক IDE, @Deprecatedটীকাটি পরিচালনা করতে পারে। স্ট্রাইকথ্রু ফরম্যাটিং ব্যবহার করে অবহেলিত ক্লাস এবং পদ্ধতির নাম দেখানো হয় । এটার মতো কিছু:

Date date = new Date();
int day = date.getDay();

অপ্রচলিত ক্লাসগুলি খুব জনপ্রিয় এবং প্রায়শই কোডে পাওয়া যায়, তাই আমরা শীঘ্রই সেগুলির কয়েকটি দেখব৷