আমরা প্রায়ই জাভাস্ক্রিপ্ট এর সাথে ES5 বা ES6 বা এরকম অনেককিছুর কথা শুনে থাকি। ES এর ফুল মিনিং হচ্ছে ECMAScript, আর সাথের নাম্বারটা এডিশন মিন করে। তো এটার সাথে জাভাস্ক্রিপ্ট এর সম্পর্ক কোথায় বুঝতে হলে আগে একটু হিস্টোরি ঘাটতে হবে। আজকে এই পর্বে আমি আসলে এগুলো নিয়েই আলোচনা করবো।
এখন জাভাস্ক্রিপ্ট এর বেশ কিছু ভার্শন আছে। কিন্তু জাভাস্ক্রিপ্ট ফার্স্ট রিলিজ হয় ১৯৯৫ সালের দিকে। তখন সেটা লাইভস্ক্রিপ্ট (LiveScript) নামে রিলিজ হয়, যদিও ডেভেলপ করার সময় নাম ছিলো মকা ( Mocha)। কিন্তু জাস্ট এর পরের বছর ১৯৯৬ সালে এটার নাম পরিবর্তন করে জাভাস্ক্রিপ্ট (JavaScript) করা হয়।
আর এদিকে ইকমাস্ক্রিপ্ট হচ্ছে স্ক্রিপ্টিং ল্যাংগুয়েজের স্পেসেফিকেশন। এর কাজ হচ্ছে নিয়ম-কানুন দেওয়া। যে এগুলো এগুলো মেনে চলতে হবে একটা স্ক্রিপ্টিং ল্যাংগুয়েজকে। এই ইকমাস্ক্রিপ্ট বানানো হয়েছে ইকমা ইন্টারন্যাশনাল (Ecma International) নামে একটা অরগানাইজেশন থেকে। ইকমা ইন্টারন্যাশনালের কাজই হচ্ছে এরকম বিভিন্ন টেকনোলিজীর স্ট্যান্ডার্ড মেইন্টেইন করার জন্য স্পেশিফিকেশন প্রদান করা। এখন স্ট্যান্ডার্ড কি? স্ট্যান্ডার্ড যেমন আপনি যদি ASCII ভ্যালুর কথা শুনে থাকেন, ASCII হচ্ছে বিভিন্ন ক্যারেক্টার ইনকোডিং করার স্ট্যান্ডার্ড। আরো রিয়েল এক্সাম্পলের দিকে গেলে QWERTY কীবোর্ডের কথা বলা যায়। বেশীরভাব জায়গাতেই এই QWERTY কীবোর্ড দেখবেন। এই কীবোর্ডগুলো QWERTY স্ট্যান্ডার্ড মেইন্টেইন করে। এখন ইকমা ইন্টারন্যাশনার ASCII বা QWERTY স্ট্যান্ডার্ড নির্ধারন না করলেও ইকমাস্ক্রিপ্ট ইকমা ইন্টারন্যাশনাল প্রদান করে থাকে। ইকমা আরো অনেক কিছুর জন্যেই স্পেসিফিকেশন দেয়। কিন্তু স্ক্রিপ্টিং ল্যাংগুয়েজের জন্যে ECMA-262 নামে একটা স্ট্যান্ডার্ড পাবলিশ করেছে ইকমাস্ক্রিপ্ট।
এখন ES5 বা ES6 কি? ১৯৯৬ সালের দিকেই জাভাস্ক্রিপ্ট এর প্রতিষ্ঠাতা প্রতিষ্ঠান জাভাস্ক্রিপ্ট কে ইকমা ইন্টারন্যাশনালের হাতে দিয়ে দেয় স্ট্যান্ডার্ড মেইন্টেইন করার জন্যে। প্রথম ভার্শন(ES1) বের হয়েছিলো ১৯৯৭ সালে। আর হ্যা, এগুলো ECMA-262 এর এডিশন। তারপর আগে-পরে অনেক ভার্শন বের হলেও সবচেয়ে বড় পরিবর্তন আসে ভার্শন নাম্বার ৫ (ES5) এ। যেটার পরপরি জাভাস্ক্রিপ্ট এর আসলে এভাবে ওয়েবে পাওয়ারফুল হয়ে যাওয়া। তারপর থেকে ইকমা ইন্টারন্যাশনাল ২০১৫ তে সিদ্ধান্ত নেয় প্রতি বছর বছর তারা স্পেসেফিকেশন এর ভার্শন করবে। মানে ইয়ারলি তারা আপডেট করতে থাকবে। কিন্তু এর আগেই ES6 নামে একটা ভার্শন রিলিজ হয়। তাই পরিবর্তিতে ES6 এর নাম চ্যাঞ্জ করে ES2015 করা হয়। আর প্রতি বছর বছর যেটা আসবে সেটা সেই বছরের নামে হবে। যেমনঃ ES2015, ES2016, ES2017 এভাবে।
এখন জাভাস্ক্রিপ্ট কি সবসময় ইকমাস্ক্রিপ্ট এর স্ট্যান্ডার্ড ফলো করে? উত্তর হলোঃ না জাভাস্ক্রিপ্ট এ এমন কিছু ফিচার আছে যেগুলো ইকমাস্ক্রিপ্ট এর স্ট্যান্ডার্ড ফলো করে না। দেখতে মজিলার রেফারেন্স ডকুমেন্টগুলো দেখতে পারেন। কিছু ফিচার আছে যেটা ইকমাস্ক্রিপ্ট এর স্পেসিফিকেশনে না থাকা সত্বেও জাভাস্ক্রিপ্ট এ ইমপ্লিমেন্ট করা হয়েছে।
ইকমাস্ক্রিপ্ট স্পেসেফিকেশনের গিটহাব রিপোজিটরিও আছে। চাইলে দেখে আসতে পারে। এখানে পুরোনো ভার্শন, বর্তমান ভার্শনসহ সামনে কি কি আসতে পারে সব খুঁজে পাবেন।
অবশ্যই যে জিনিসের জন্যে কাজ করবেন সেটা কোন ভার্শন ১০০% সাপোর্ট করে সেটা দেখে সেই অনুযায়ী ভার্শন ইউজ করতে হবে। যেমন ES5 সব ব্রাউজারেই কমপ্লিটলি সাপোর্ট করে যেখানে ES6 এর বেশ কিছু ফিচার এখনো অনেক ব্রাউজারে সাপোর্ট করে না। কোথায় কোন ভার্শন কতটুকু সাপোর্ট করে দেখতে চাইলে এই ওয়েবসাইটে দেখতে পারেন।
ES5 সব ব্রাউজারে সাপোর্ট করে পুরোপুরি।
ES6 সব ব্রাউজারে অনেকটাই সাপোর্ট করে, কিন্তু অনেক ফিচার আছে যেগুলো সাপোর্ট করে না। তাই এই মূহূর্তে ইউজ করা সেইফ না
ES2016 একদমই কোনো ব্রাউজারে সাপোর্ট নেই বললেই চলে।
তবে ব্যাবেল নামে একটা কম্পাইলার আছে যেটা ইউজ করে আপনি চাইলে জাভাস্ক্রিপ্ট এর একদম নতুন ভার্শনে কোড লিখে ES5 এ কনভার্ট করে নিতে পারবেন যেটা কমপ্লিটিলি সাপোর্টেড।
আজ এই পর্যন্তই। যদিও আজকের পর্বে কিছু শিখানো হয়নি। তারপরেও এগুলো অনেক গুরুত্বপূর্ন কিছু ছিলো তাই আলাদা করে পর্বে লিখলাম। আশা করি এরপর থেকে ইকমাস্ক্রিপ্ট নিয়ে আর কনফিউশান সৃষ্টি হবে না। আর আমি জাভাস্ক্রিপ্ট ব্যাসিক এর সিরিজে শুধুমাত্র ES5 নিয়েই লিখবো। পরে অ্যাডভান্স জাভাস্ক্রিপ্ট লিখে তারপর ES6 নিয়ে লেখা শুরু করবো। ES5 এর সাথে তুলনা করে করে ES6 নিয়ে লিখবো যাতে সহজেই বুঝে ফেলা যায় সবকিছু