চলুন দেখে নেওয়া যাক জাভাস্ক্রিপ্ট এর বিশেষ বিশেষ দিকগুলো, আমরা এটি দিয়ে কী করতে পারি, এবং অন্যান্য প্রযুক্তিগুলি যা এর সাথে ভালো কাজ করে।
JavaScript was initially created to "make web pages alive".
c89ddc5d92195e08e2c32e30526fdb755fec4622
এই ভাষায় প্রোগ্রামগুলিকে বলা হয় স্ক্রিপ্ট। এগুলি সরাসরি কোনও ওয়েব পেজের HTML এর ভিতরে লেখা হয় এবং পেজটি লোড হওয়ার সাথে সাথে স্বয়ংক্রিয়ভাবে চালু হয়ে যায়।
স্ক্রিপ্টগুলি সাধারণ টেক্সট এর মতো সরবরাহ এবং এক্সিকিউট হয়। চালানোর জন্য তাদের বিশেষ প্রস্তুতি বা কম্পাইল করার প্রয়োজন নেই।
এই দিক থেকে, জাভাস্ক্রিপ্ট অন্য একটি প্রোগ্রামিং ভাষা [জাভা](https://bn.wikipedia.org/wiki/Java_(programming_language) থেকে অনেকটাই আলাদা।
যখন জাভাস্ক্রিপ্ট তৈরি করা হয়েছিল, তখন এটির আর একটি নাম ছিল: "লাইভ স্ক্রিপ্ট"। কিন্তু জাভা তখন খুব জনপ্রিয় ছিল, তাই সিদ্ধান্ত নেওয়া হয়েছিল যে জাভার একটি "ছোট ভাই" হিসাবে একটি নতুন ভাষার অবস্থান তৈরিতে সহায়তা করবে।
তবে বিকশিত হওয়ার সাথে সাথে জাভাস্ক্রিপ্ট [একমা স্ক্রিপ্ট](http://bn.wikipedia.org/wiki/ECMAScript) নামক নিজস্ব স্পেসিফিকেশন সহকারে সম্পূর্ণ স্বাধীন প্রোগ্রামিং ভাষাতে পরিণত হয় এবং এখন জাভার সাথে এর কোনই সম্পর্ক নেই।
বর্তমানে, জাভাস্ক্রিপ্ট শুধু ব্রাউজারেই নয়, বরং সার্ভারে বা জাভাস্ক্রিপ্ট ইঞ্জিন নামক একটি বিশেষ প্রোগ্রাম রয়েছে এমন যে কোনও যন্ত্রে কাজ করতে পারে।
ব্রাউজারে "জাভাস্ক্রিপ্ট ভার্চুয়াল মেশিন" নামে পরিচিত একটি মেশিন সংযুক্ত থাকে।
বিভিন্ন ইঞ্জিনের আলাদা আলাদা "কোডনাম" রয়েছে । উদাহরণ স্বরূপ:
- [V8](https://bn.wikipedia.org/wiki/V8_(JavaScript_engine) -- ক্রোম এবং অপেরা
- স্পাইডার মাংকি -- ফায়ারফক্স.
- ...আরও অনেক কোডনাম রয়েছে যেমন ইন্টারনেট এক্সপ্লোরার এর বিভিন্ন ভার্সন এর জন্য "Trident" এবং "Chakra", মাইক্রোসফ্ট এজের জন্য "ChakraCore", সাফারির জন্য "Nitro" এবং "SquirrelFish" ইত্যাদি।
উপরের টার্ম গুলি মনে রাখা ভাল, কারণ সেগুলি ইন্টারনেটে ডেভেলপার আর্টিকেলে ব্যবহৃত হয়। আমরাও সেগুলো ব্যবহার করব। উদাহরণস্বরূপ, যদি "একটি X ফিচার V8 এ সাপোর্ট করে", তবে সম্ভবত এটি ক্রোম এবং অপেরাতেও কাজ করে।
ইঞ্জিনগুলি জটিল। তবে বেসিকগুলি সহজ
১. ইঞ্জিন (ব্রাউজারের সাথে সংযুক্ত থাকে) স্ক্রিপ্টটি পড়ে ("পার্স করে")।
২. তারপরে এটি স্ক্রিপ্টটিকে মেশিনের ভাষায় রূপান্তর ("কম্পাইল") করে।
৩. এবং তারপরে মেশিন খুব দ্রুত কোডটি চালায়
ইঞ্জিনটি এই প্রক্রিয়ার প্রতিটি ধাপে অপ্টিমাইজেশন করে। এমনকি এটি স্ক্রিপ্ট চলার সময়ও পর্যবেক্ষন করতে থাকে, এর মধ্য দিয়ে প্রবাহিত ডেটা বিশ্লেষণ করে এবং সেই ধারনার উপর ভিত্তি করে মেশিন কোড অপ্টিমাইজ করে।
আধুনিক জাভাস্ক্রিপ্ট একটি "নিরাপদ" প্রোগ্রামিং ভাষা। এটি মেমরি বা সিপিইউতে নিম্ন-স্তরের এক্সেস দেয় না, কারণ এটি প্রাথমিকভাবে ব্রাউজারগুলির জন্য তৈরি করা হয়েছিল যার এসব এক্সেস এর প্রয়োজন হত না।
জাভাস্ক্রিপ্টের সামর্থ যে এনভায়রনমেন্ট এ চলছে তার উপর অনেক বেশি নির্ভর করে। উদাহরণস্বরূপ, Node.js এমন কিছু ফাংশন সমর্থন করে যা জাভাস্ক্রিপ্ট কে যেকোনো ফাইল পড়তে/এডিট করতে, নেটওয়ার্ক রিকুয়েস্ট ইত্যাদি করার সুবিধা দেয়।
ব্রাউজারে জাভাস্ক্রিপ্ট ওয়েবপেইজ পরিবর্তন, ব্যবহারকারীর সাথে যোগাযোগ এবং ওয়েবসার্ভার সম্পর্কিত সব কিছুই করতে পারে।
উদাহরণস্বরূপ, ব্রাউজারে জাভাস্ক্রিপ্ট যা করতে সক্ষম:
- ওয়েবপেজে নতুন HTML যুক্ত করা, পেইজ এর কন্টেন্ট পরিবর্তন করা, ডিজাইনে সংশোধন করা ।
- ব্যবহারকারীর একশন, মাউসের ক্লিক, মাউস পয়েন্টার এর নড়াচড়া এবং কীবোর্ড এ কি চাপলে প্রতিক্রিয়া জানানো।
- রিমোট সার্ভার এ রিকুয়েস্ট পাঠানো, ফাইল ডাউনলোড এবং আপলোড করা (উল্লেখযোগ্য [AJAX](https://bn.wikipedia.org/wiki/Ajax_(programming) এবং COMET technologies).
- কুকিজ আনা এবং সেট করা, ব্যবহারকারীদের কাছে প্রশ্ন জিজ্ঞাসা করা, ম্যাসেজ দেখানো।
- ক্লায়েন্ট-সাইড ("লোকাল স্টোরেজ") এ ডেটা সংরক্ষণ করা।
ব্রাউজারে জাভাস্ক্রিপ্টের ক্ষমতাগুলি ব্যবহারকারীর সুরক্ষার জন্য সীমাবদ্ধ। উদ্দেশ্যটি হ'ল কোনও খারাপ ওয়েবপেজকে ব্যক্তিগত তথ্যে প্রবেশ করা বা ব্যবহারকারীর ডেটা ক্ষতিগ্রস্থ করা থেকে বিরত রাখা।
এই জাতীয় বিধিনিষেধের উদাহরণগুলির মধ্যে রয়েছে:
<<<<<<< HEAD
- একটি ওয়েবপেজে জাভাস্ক্রিপ্ট হার্ড ডিস্কে যেকোনো ফাইল পড়তে / লিখতে, সেগুলি কপি করতে বা প্রোগ্রামগুলি চালাতে পারে না। এটির ওএস এর সিস্টেম ফাংশন গুলির সরাসরি এক্সেস নেই। =======
- JavaScript on a webpage may not read/write arbitrary files on the hard disk, copy them or execute programs. It has no direct access to OS functions.
c89ddc5d92195e08e2c32e30526fdb755fec4622
আধুনিক ব্রাউজারগুলি এটিকে ফাইল নিয়ে কাজ করার অনুমতি দেয়, তবে এর এক্সেস সীমাবদ্ধ এবং কেবলমাত্র যদি ব্যবহারকারী নির্দিষ্ট কিছু কাজ করেন যেমন ব্রাউজার উইন্ডোতে একটি ফাইল "ড্রপ" করা বা একটি "<input>" `ট্যাগের মাধ্যমে ফাইল সিলেক্ট করা।
ক্যামেরা / মাইক্রোফোন এবং অন্যান্য যন্ত্রগুলির সাথে ইন্টারঅ্যাক্ট করার উপায় রয়েছে তবে তাদের ব্যবহারকারীর সুস্পষ্ট অনুমতি প্রয়োজন। সুতরাং একটি জাভাস্ক্রিপ্ট-সক্ষম ওয়েবপেজ চাইলেই কোনও ওয়েব-ক্যামেরা চালু করতে পারে না, আশেপাশের কোন কিছু দেখতে পারে না এবং [NSA](https://bn.wikedia.org/wiki/National_Security_Agency) এর কাছে সেগুলি পাঠাতে পারে না।
-
ভিন্ন ভিন্ন ট্যাব / উইন্ডো সাধারণত একে অপরের সম্পর্কে জানে না। কখনও কখনও তারা জানে, যেমন, যখন একটি উইন্ডো জাভাস্ক্রিপ্ট ব্যবহার করে আরেকটি উইন্ডো খুলে। তবে এই ক্ষেত্রেও, যদি ভিন্ন কোন সাইট থেকে (অন্য কোনও ডোমেন, প্রোটোকল বা পোর্ট থেকে) আসে তবে এক পেইজের জাভাস্ক্রিপ্ট অন্য পেইজের এক্সেস পায় না।
একে "same source policy" বলা হয়। এই কাজটি করার জন্য, * উভয় পেজে * অবশ্যই ডেটা আদান-প্রদান এর সাথে সম্মতি থাকতে হবে এবং একটি বিশেষ জাভাস্ক্রিপ্ট কোড থাকতে পারে যা এটি পরিচালনা করে। আমরা এগুলো টিউটোরিয়ালে আলোচনা করব।
এই সীমাবদ্ধতাটিও ব্যবহারকারীর সুরক্ষার জন্য। এই সাইটটির
http: // anysite.com
একটি পেজে যা ব্যাবহারকারী খুলে রেখেছে অবশ্যই তা অন্য কোনো ট্যাবে খুলে রাখা সাইটে URL-http: // gmail.com
প্রবেশ করতে এবং সেখান থেকে তথ্য চুরি করতে সক্ষম হবে না। -
জাভাস্ক্রিপ্ট সহজেই ইন্টারনেট এর মাধ্যমে সার্ভারে যোগাযোগ করতে পারে যেখান থেকে বর্তমান পেজটি এসেছে। তবে অন্যান্য সাইট / ডোমেন থেকে ডেটা গ্রহণের ক্ষমতা এর নেই। যদিও এটি সম্ভব, তবে এর জন্যে রিমোট সার্ভার এর সাথে আলাদা চুক্তি (HTTP headers এ বর্ণনা করা হয়েছে) থাকতে হবে। এটিও একটি সুরক্ষা সীমাবদ্ধতা।
জাভাস্ক্রিপ্ট যদি ব্রাউজারের বাইরে ব্যবহার করা হয় তবে এসব সীমাবদ্ধতা থাকে না, যেমন সার্ভার। আধুনিক ব্রাউজারগুলি প্লাগইন / এক্সটেনশন গুলিকে অতিরিক্ত পার্মিশন চেয়ে নিতে দেয়।
জাভাস্ক্রিপ্ট সম্পর্কে কমপক্ষে * তিনটি * দুর্দান্ত জিনিস রয়েছে:
+ HTML/CSS এর সাথে সম্পূর্ণ ইন্টিগ্রেশন।
+ সহজ জিনিস সহজভাবে করা হয়।
+ প্রত্যেকটা প্রধান ব্রাউজারেই স্বাভাবিক ভাবে চলে।
জাভাস্ক্রিপ্ট একমাত্র ব্রাউজার প্রযুক্তি যা এই তিনটি জিনিসকে একত্রিত করে।
এটিই জাভাস্ক্রিপ্টকে অনন্য করে তোলে। এ কারণেই এটি ব্রাউজার ইন্টারফেস তৈরির জন্য সবচেয়ে জনপ্রিয় টুল।
বলা হয়ে থাকে, জাভাস্ক্রিপ্ট দিয়ে সার্ভার, মোবাইল অ্যাপ্লিকেশন ইত্যাদি তৈরি করা যায়।
জাভাস্ক্রিপ্টের সিনট্যাক্স সবার প্রয়োজনের সাথে খাপ খায় না। বিভিন্ন লোক বিভিন্ন বৈশিষ্ট্য চায়।
এটাই অবশ্য স্বাভাবিক, কারণ প্রজেক্ট এবং প্রয়োজনীয়তা সবার জন্য আলাদা।
সুতরাং সম্প্রতি নতুন ভাষাগুলির আধিক্য উপস্থিত হয়েছে, যা ব্রাউজারে চালানোর আগে জাভাস্ক্রিপ্টে ট্রান্সপাইল (রূপান্তরিত) হয়।
আধুনিক টুলগুলি এই ট্রান্সপাইলেশনকে খুব দ্রুত এবং স্বচ্ছ করে তোলে, যা আসলে ডেভেলপার দের অন্য প্রোগ্রামিং ভাষায় কোড করার সুযোগ দেয় এবং এটিকে অভ্যন্তরে ("Under the hood") স্বয়ংক্রিয়ভাবে রূপান্তরিত করে।
এই জাতীয় প্রোগ্রামিং ভাষার উদাহরণ:
- কফিস্ক্রিপ্ট জাভাস্ক্রিপ্টের জন্য একটি "সিনট্যাকটিক সুগার"। এটি সংক্ষিপ্ত সিনট্যাক্স নিয়ে আসে, আমাদের আরও পরিষ্কার এবং আরও সুনির্দিষ্ট কোড লেখার সুযোগ দেয়। সাধারণত, রুবি (একটি প্রোগ্রামিং ভাষা) ডেভেলপার রা এটি পছন্দ করে।
- টাইপস্ক্রিপ্ট "স্ট্রিক্ট ডাটা টাইপিং" এ জোর দিয়েছিলো ডেভেলপমেন্ট ও জটিল সমস্যা গুলোকে সহজ করার জন্য। এটি মাইক্রোসফ্ট তৈরি করেছে।
- ফ্লো ডাটা টাইপিং যুক্ত করে, তবে একটু অন্যভাবে। ফেইসবুক এটি তৈরি করেছে।
- ডার্ট একটি স্বতন্ত্র প্রোগ্রামিং ভাষা যার নিজস্ব ইঞ্জিন রয়েছে যা ব্রাউজার ছাড়াও (মোবাইল অ্যাপ্লিকেশন হিসাবে) চালানো হয়, তবে এটি জাভাস্ক্রিপ্টে স্থানান্তরিত করা যায়। এটি গুগল তৈরী করছে।
আরো অনেক আছে। যদিও আমরা যদি ট্রান্সপাইলড ল্যাঙ্গুয়েজ গুলির মধ্যে যেকোনো একটি ব্যবহার করি তবে আমরা কী করছি তা বুঝতে আমাদের জাভাস্ক্রিপ্ট জানা উচিত।
- জাভাস্ক্রিপ্ট প্রথমে শুধুমাত্র-ব্রাউজার ভাষা হিসাবে তৈরি করা হয়েছিল, তবে এখন এটি অন্যান্য অনেক জায়গাতেই ব্যবহৃত হয়।
- বর্তমানে, জাভাস্ক্রিপ্ট HTML / CSS সম্পূর্ণ ইন্টিগ্রেশনের সাথে ব্রাউজারের বহুল প্রচারিত প্রোগ্রামিং ভাষা হিসাবে একটি বিশেষ অবস্থানে রয়েছে।
- এমন অনেক প্রোগ্রামিং ভাষা রয়েছে যা জাভাস্ক্রিপ্টে "রূপান্তরিত" হয়ে যায় এবং নির্দিষ্ট বৈশিষ্ট্য সরবরাহ করে। জাভাস্ক্রিপ্টে দক্ষতা অর্জনের পরে কমপক্ষে সংক্ষেপে এগুলি একবার দেখার পরামর্শ দেওয়া হয়।