জাভা
প্যারাডাইমঅবজেক্ট ওরিয়েন্টেড, স্ট্রাকচার্ড, ইমপেরাটিভ
নকশাকারজেমস গসলিং
বিকাশকারীসান মাইক্রোসিস্টেম্‌স বর্তমানে যার স্বত্বাধীকারী ওরাকল কর্পোরেশন
প্রথম প্রদর্শিত২৩ মে ১৯৯৫; ২৯ বছর আগে (1995-05-23)
টাইপিং পদ্ধতিস্ট্যাটিক, নিরাপদ, শক্তিশালী, নমিনেটিভ
ওএসআন্ত-প্লাটফর্ম
লাইসেন্সগনু জেনারেল পাবলিক লাইসেন্স / জাভা কমিউনিটি প্রোসেস
ফাইলনেম এক্সটেনশন.java, .class, .jar, .jmod
ওয়েবসাইটoracle.com/java/, java.com, dev.java
মুখ্য বাস্তবায়নসমূহ
অসংখ্য
যার দ্বারা প্রভাবিত
অবজেক্টিভ-সি, সি++, স্মলটক, আইফেল সি#
যাকে প্রভাবিত করেছে
সি#, ডি, জে#, আডা ২০০৫, ইসিএমএস্ক্রিপ্ট, স্ক্যালা, কোটলিন
জেমস গসলিং, জাভা প্রোগ্রামিং ভাষার জনক


জাভা একটি উচ্চ-স্তরের, ক্লাস-ভিত্তিক, অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ভাষা। এটি এমন একটি প্রোগ্রামিং ভাষা যা প্রোগ্রামারদের "একবার লেখ, যেকোনো জায়গায় ব্যবহার কর" করতে দেয়, যার মানে কম্পাইল করা জাভা কোড সব প্ল্যাটফর্মে চলতে পারে যেটাতে জাভা সমর্থন করে, পুনরায় কম্পাইল করার প্রয়োজন হয় না।[] জাভা প্রোগ্রামগুলি একটি বাইটকোড নামক ফরম্যাটে রূপান্তরিত হয় যা যেকোনো কম্পিউটার বা ডিভাইসে চালানো যেতে পারে যাতে জাভা ভার্চুয়াল মেশিন (JVM) আছে। []

জাভা একটি কম্পাইল করা এবং ইন্টারপ্রেট করা ভাষা উভয়ই। জাভা সোর্স কোড সাধারণ বাইনারি নির্দেশনায় রূপান্তরিত হয়, অনেকটা সাধারণ মাইক্রোপ্রসেসর মেশিন কোডের মতো। তবে, যেখানে C বা C++ সোর্স নির্দিষ্ট মডেলের প্রসেসরের জন্য নেটিভ নির্দেশনায় রূপান্তরিত হয়, সেখানে জাভা সোর্স একটি সার্বজনীন ফরম্যাটে কম্পাইল করা হয়—একটি ভার্চুয়াল মেশিন (VM) এর জন্য নির্দেশনা। [] কম্পাইল করা জাভা বাইটকোড একটি জাভা রানটাইম ইন্টারপ্রেটার দ্বারা কার্যকর করা হয়। রানটাইম সিস্টেমটি হার্ডওয়্যার প্রসেসরের সব স্বাভাবিক কার্যকলাপ সম্পাদন করে, তবে এটি একটি নিরাপদ, ভার্চুয়াল পরিবেশে করে। এটি একটি স্ট্যাক-ভিত্তিক নির্দেশনা সেট কার্যকর করে এবং অপারেটিং সিস্টেমের মতো মেমোরি পরিচালনা করে। এটি প্রাথমিক ডেটা টাইপ তৈরি এবং পরিচালনা করে।[]

জাভা C++ এর তুলনায় সহজ করার জন্য নিম্নলিখিত উপায়ে ডিজাইন করা হয়েছিল:

  • জাভা স্বয়ংক্রিয়ভাবে মেমরি বরাদ্দ এবং ডিলোকেশন পরিচালনা করে, প্রোগ্রামারদের এই ত্রুটিপূর্ণ এবং ক্লান্তিকর কাজ থেকে মুক্তি দেয়।
  • জাভায় পয়েন্টার অন্তর্ভুক্ত নয়, যা অভিজ্ঞ প্রোগ্রামারদের জন্য একটি শক্তিশালী বৈশিষ্ট্য হলেও সহজেই অপব্যবহার করা যায় এবং বড় নিরাপত্তা দুর্বলতা তৈরি করতে পারে।
  • জাভায় অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ে শুধুমাত্র একক ইনহেরিট্যান্স রয়েছে।
  • জাভাকে প্রতিটি ভিন্ন প্ল্যাটফর্মে কম্পাইল করতে হয় না, সর্বত্র একই বাইটকোড কার্যকর করে।
  • পয়েন্টার না থাকা এবং স্বয়ংক্রিয় মেমরি ব্যবস্থাপনার উপস্থিতি জাভা নিরাপত্তার দুটি মূল উপাদান।[]

ইতিহাস

সম্পাদনা
 
ডিওক, জাভা মাসকট

জাভা ১৯৯১ সালে সান মাইক্রোসিস্টেমস-এ জেমস গসলিং, প্যাট্রিক নটন, ক্রিস ওয়ার্থ, এড ফ্রাঙ্ক, এবং মাইক শেরিডান দ্বারা উদ্ভাবিত হয়। এই ভাষাটির প্রাথমিক নাম ছিল "Oak" তবে ১৯৯৫ সালে এর নাম পরিবর্তন করে "Java" রাখা হয়। [] জেমস গোসলিং এবং একটি ডেভেলপার দলের সদস্যরা ১৯৯০-এর দশকে সান মাইক্রোসিস্টেমসে একটি ইন্টারেক্টিভ টিভি প্রকল্পে কাজ করছিলেন যখন গোসলিং C++ প্রোগ্রামিং ভাষার ব্যবহারে হতাশ হয়ে পড়েন। C++ একটি অবজেক্ট-অরিয়েন্টেড প্রোগ্রামিং ভাষা যা একটি দশক আগে C ভাষার সম্প্রসারণ হিসাবে তৈরি করা হয়েছিল।

C++ এর কারণে বিরক্তি নিরসনের জন্য গোসলিং তার অফিসে নিজেকে বন্ধ করে রেখে তার প্রকল্পের জন্য উপযুক্ত একটি নতুন ভাষা তৈরি করেন। যদিও সেই ইন্টারেক্টিভ টিভি প্রকল্পটি ব্যর্থ হয়েছিল, গোসলিং-এর ভাষার অপ্রত্যাশিতভাবে একটি নতুন মাধ্যমে প্রয়োগযোগ্যতা দেখা দেয় যা সেই সময় জনপ্রিয় হয়ে উঠছিল: ওয়ার্ল্ড ওয়াইড ওয়েব।

জাভা প্রথমবারের মতো ২৩ মার্চ, ১৯৯৫-এ "আলফা সংস্করণ 1.0a2" হিসাবে প্রকাশিত হয়। এর মূলনীতি ছিল "একবার লিখুন, যে কোনো জায়গায় চালান (Write Once, Run Anywhere or WORA)"। যদিও ভাষার বেশিরভাগ বৈশিষ্ট্য C++ (এবং বর্তমান জাভা) এর তুলনায় প্রাথমিক ছিল, এতে আকর্ষণীয় ব্যবহার ছিল: বিশেষ জাভা প্রোগ্রাম, যেগুলি অ্যাপলেট নামে পরিচিত, সেই সময়ের সবচেয়ে জনপ্রিয় ওয়েব ব্রাউজার, নেটস্কেপ ন্যাভিগেটরে ওয়েব পৃষ্ঠার অংশ হিসাবে চালানো যেত।

এই কার্যকারিতা—ওয়েবে প্রথম ইন্টারেক্টিভ প্রোগ্রামিং উপলব্ধ—নতুন ভাষার প্রতি এত বেশি মনোযোগ আকর্ষণ করে যে প্রথম ছয় মাসে কয়েক শত হাজার প্রোগ্রামার জাভা শিখে ফেলে।

সান মাইক্রোসিস্টেমস জাভা ভাষার উন্নয়ন নিয়ন্ত্রণ করেছিল এর শুরু থেকে ২০১০ সাল পর্যন্ত, যখন কোম্পানিটি ৭.৪ বিলিয়ন ডলারের একটি চুক্তিতে ডেটাবেস এবং এন্টারপ্রাইজ সফটওয়্যার দৈত্য অরাকলের দ্বারা অধিগৃহীত হয়। অরাকল, যা তার নিজস্ব পণ্যের উপর ভাষাটির দীর্ঘকালীন ব্যবহারকারী, জাভাকে সমর্থন করার প্রতি দৃঢ় প্রতিশ্রুতি রয়েছে এবং প্রতিটি নতুন রিলিজের সাথে এর সক্ষমতা বৃদ্ধি করতে থাকে।[]

জাভা'র গুরুত্বপূর্ণ দিকগুলো

সম্পাদনা

বহনযোগ্যতা

সম্পাদনা

জাভা'র পূর্বতন প্রোগ্রামিং ভাষাগুলিতে সাধারণত এক অপারেটিং সিস্টেমের জন্য লেখা প্রোগ্রাম অন্য অপারেটিং সিস্টেম এ চালানো যেত না। জাভায় লেখা প্রোগ্রাম যেকোন অপারেটিং সিস্টেমে চালানো যায় শুধু যদি সেই অপারেটিং সিস্টেমের জন্য একটি জাভা রানটাইম এনভায়রনমেন্ট(জাভা ভার্চুয়াল মেশিন)থেকে থাকে। এই সুবিধা জাভাকে একটি অনন্য প্ল্যাটফর্মে পরিণত করে। বিশেষ করে ইন্টারনেটে, যেখানে অসংখ্য কম্পিউটার যুক্ত থাকে এবং কম্পিউটারগুলো বিভিন্ন অপারেটিং সিস্টেম ব্যবহার করে থাকে সেখানে জাভায় লেখা অ্যাপলেট গুলো সকল কম্পিউটারে চলতে পারে এবং এর জন্য কোন বিশেষ ব্যবস্থা নিতে হয় না। জাভা'র এই সুবিধাকে বলা হয় বহনযোগ্যতা।

অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং

সম্পাদনা

অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং জাভা'র খুবই গুরুত্বপূর্ণ দিক। প্রোগ্রামিং জগতে মূলত সিমূলা৬৭ (প্রোগ্রামিং ভাষা) এবং স্মলটক (প্রোগ্রামিং ভাষা) এর মাধ্যমে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর সূচনা হলেও, জাভা'র মাধ্যমেই এটি পরিপূর্ণভাবে বিকশিত হতে পেরেছে। অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর কারণে জাভায় অতিদীর্ঘ প্রোগ্রাম লেখা এবং ত্রুটিমুক্ত(debug) করা অনেক সহজ হয়েছে।

মূলনীতি

সম্পাদনা

১. এটি হবে সরল, অবজেক্ট ওরিয়েন্টেড এবং পরিচিত।

২. এটি হবে শক্তিশালী এবং সুরক্ষিত।

৩. এটি কোন নির্দিষ্ট প্লাটফর্মের উপর নির্ভর করবে না আর এর থাকবে বহনযোগ্যতা।

৪. এটি অনেক উচ্চ কার্যশীলতাসম্পন্ন হবে।

৫. এটি হবে ইন্টারপ্রিটেড, থ্রেডেড এবং ডাইনামিক।

কার্যপদ্ধতি

সম্পাদনা

জাভা প্রথম গুরুত্বপূর্ণ ভাষা যা পুরোপুরি ইন্টারপ্রেটেড বা কম্পাইলড নয়; বরং, দুটি ফর্মের সংমিশ্রণ ব্যবহার করা হয়। বেশিরভাগ প্রোগ্রামিং ভাষায়, একটি কম্পাইলার (বা ইন্টারপ্রেটার) কোড তৈরি করে যা নির্দিষ্ট লক্ষ্য মেশিনে চালানো যায়। উদাহরণস্বরূপ, যদি আপনি একটি C++ প্রোগ্রাম উইন্ডোজ মেশিনে কম্পাইল করেন, তবে এক্সিকিউটেবল ফাইলটি অন্য যে কোনো মেশিনে কপি করা যেতে পারে, তবে এটি শুধুমাত্র অন্য উইন্ডোজ মেশিনে চলবে, অন্য কোনো মেশিনে (যেমন, ম্যাক বা লিনাক্স মেশিনে) নয়। একটি প্ল্যাটফর্ম নির্ধারণ করা হয় লক্ষ্য মেশিন (এবং এর অপারেটিং সিস্টেম) দ্বারা। আগের ভাষাগুলির জন্য, ভাষা ডিজাইনারদের প্রতিটি প্ল্যাটফর্মের জন্য একটি বিশেষায়িত সংস্করণের কম্পাইলার (বা ইন্টারপ্রেটার) তৈরি করতে হতো। আপনি যদি একটি প্রোগ্রাম লিখতেন যা বিভিন্ন প্ল্যাটফর্মে উপলব্ধ করতে চাইতেন, তবে আপনাকে, প্রোগ্রামার হিসেবে, অনেক অতিরিক্ত কাজ করতে হতো। প্রতিটি প্ল্যাটফর্মের জন্য আপনার সোর্স কোডের একাধিক সংস্করণ তৈরি করতে হতো।

জাভা উচ্চ-স্তরের প্রোগ্রামারদের জন্য (যেমন আপনার মতো) প্ল্যাটফর্ম সমস্যাটি দূর করতে সক্ষম হয়েছে কারণ এটি কম্পাইল-লিংক-এক্সিকিউট সিকোয়েন্সকে কম্পাইলারের একটি অন্তর্নিহিত স্তরে পুনর্গঠিত করেছে। জাভা কম্পাইলার একটি অবজেক্ট ফাইল তৈরি করে না, বরং এটি একটি বাইটকোড ফাইল তৈরি করে যা মূলত একটি ভার্চুয়াল মেশিনের জন্য একটি অবজেক্ট ফাইল। আসলে, জাভা কম্পাইলারকে প্রায়শই জেভিএম কম্পাইলার (Java Virtual Machine এর জন্য) বলা হয়।

ফলস্বরূপ, আপনি যেকোনো প্ল্যাটফর্মে একটি জাভা প্রোগ্রাম লিখতে পারেন এবং JVM কম্পাইলার (যাকে javac বলা হয়) ব্যবহার করে একটি বাইটকোড ফাইল (বাইটকোড ফাইলের এক্সটেনশন .class হয়) তৈরি করতে পারেন। এই বাইটকোড ফাইলটি যেকোনো প্ল্যাটফর্মে ব্যবহার করা যেতে পারে (যেখানে জাভা ইনস্টল করা আছে)। তবে, বাইটকোড একটি এক্সিকিউটেবল ফাইল নয়। একটি বাইটকোড ফাইল কার্যকর করতে, আপনাকে প্রকৃতপক্ষে একটি জাভা ইন্টারপ্রেটার (যাকে java বলা হয়) আহ্বান করতে হবে। প্রতিটি প্ল্যাটফর্মের নিজস্ব জাভা ইন্টারপ্রেটার রয়েছে যা স্বয়ংক্রিয়ভাবে প্ল্যাটফর্ম-নির্দিষ্ট সমস্যাগুলি সমাধান করবে যা আর স্থগিত রাখা যাবে না। যখন বাইটকোড দ্বারা প্ল্যাটফর্ম-নির্দিষ্ট অপারেশন প্রয়োজন হয়, জাভা ইন্টারপ্রেটার প্ল্যাটফর্মের জন্য নির্দিষ্ট উপযুক্ত কোড লিংক করে।

জাভা কীভাবে কাজ করে (প্ল্যাটফর্ম স্বাধীনতা অর্জনের জন্য) তা সংক্ষেপে বলতে গেলে, কম্পাইল-লিংক-এক্সিকিউট সাইকেলটি বিবেচনা করুন। পূর্ববর্তী প্রোগ্রামিং ভাষাগুলিতে, এই সাইকেলটি "কম্পাইল-লিংক তারপর এক্সিকিউট" হিসাবে আরও সুনির্দিষ্টভাবে সংজ্ঞায়িত। কিন্তু জাভাতে, সাইকেলটি "কম্পাইল তারপর লিংক-এক্সিকিউট" এর কাছাকাছি।

ইন্টারপ্রেটেড ভাষাগুলির মতো, বাইটকোডকে একটি এক্সিকিউটেবলে কম্পাইল করার মাধ্যমে জাভা প্রোগ্রামগুলিকে দ্রুত চালানো সম্ভব; তবে এর অসুবিধা হল যে এই ধরনের এক্সিকিউটেবল শুধুমাত্র সেই প্ল্যাটফর্মে কাজ করবে যেখানে এটি তৈরি করা হয়েছে। [][]

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

এরপর বাইটকোড একটি ইন্টারপ্রেটার, যা জাভা ভার্চুয়াল মেশিন (JVM) নামে পরিচিত, দ্বারা প্রক্রিয়া করা হয়। JVM গুলি বেশিরভাগ সফ্টওয়্যার এবং হার্ডওয়্যার প্ল্যাটফর্মের জন্য উপলব্ধ, এবং এটাই জাভা কোডকে এক ডিভাইস থেকে অন্য ডিভাইসে স্থানান্তরিত করতে সক্ষম করে। জাভা চালানোর জন্য, JVM গুলি কোড লোড করে, যাচাই করে এবং একটি রানটাইম পরিবেশ সরবরাহ করে।[]

জাভাতে লেখা কোড কম্পাইল হয়ে সরাসরি মেশিন কোড-এ রূপান্তরিত হয় না। বরং তা বাইট কোড নামক বিশেষ একটি মধ্যবর্তি অবস্থায় আসে যা .class ফাইলে থাকে। এই ক্লাস ফাইল সরাসরি চলতে পারে না। একে চালাতে গেলে জাভা ভার্চুয়াল মেশিন এর মাধ্যমে চালাতে হয়। কারণ বাইট কোড কেবলমাত্র জাভা ভার্চুয়াল মেশিন বুঝতে পারে ।

বাক্যরীতি

সম্পাদনা

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

ডাটা কাঠামো/স্ট্রাকচার

সম্পাদনা

জাভাতে এগুলোর জন্য আলাদা বাক্যরীতি রয়েছে। উল্লেখ্য, এরে এবং স্ট্রিং সাধারণ/primitive ডাটা টাইপ নয়, তারা reference ডাটা টাইপ এবং তাদের কে java.lang.Object থেকে আনা হয়।

সাধারণ/মৌলিক ডাটা টাইপগুলো

সম্পাদনা
ইন্টেজার টাইপগুলো
byte ৮-বিট
short ১৬-বিট
int ৩২-বিট
long ৬৪-বিট
ফ্লোটিং পয়েন্ট টাইপগুলো
float ৩২-বিট
double ৬৪-বিট
ক্যারেক্টার
char ১৬-বিট ইউনিকোড
বুলিয়ান
boolean true বা false

The advantages of Java are as follows:[]

  • Java is easy to learn. Java was designed to be easy to use and is therefore easy to write, compile, debug, and learn than other programming languages.
  • Java is object-oriented. This allows you to create modular programs and reusable code.
  • Java is platform-independent. One of the most significant advantages of Java is its ability to move easily from one computer system to another. The ability to run the same program on many different systems is crucial to World Wide Web software, and Java succeeds at this by being platform-independent at both the source and binary levels.

জাভার সুবিধাগুলো নিম্নরূপ:

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

জাভা অবজেক্ট-ওরিয়েন্টেড: এটি আপনাকে মডুলার প্রোগ্রাম তৈরি করতে এবং পুনর্ব্যবহারযোগ্য কোড ব্যবহার করতে দেয়।

জাভা প্ল্যাটফর্ম-স্বাধীন: জাভার অন্যতম প্রধান সুবিধা হলো এটি সহজেই একটি কম্পিউটার সিস্টেম থেকে অন্য সিস্টেমে স্থানান্তরিত করা যায়। একই প্রোগ্রাম বিভিন্ন সিস্টেমে চালানো যাওয়া ওয়েব সফটওয়্যারের জন্য খুবই গুরুত্বপূর্ণ, এবং জাভা উভয় স্তরে (সোর্স ও বাইনারি) প্ল্যাটফর্ম-স্বাধীন হওয়ার মাধ্যমে এই কাজটি সফলভাবে করে।

Disadvantages of Java[]

সম্পাদনা

Despite its many benefits and features, Java does have some notable disadvantages worth mentioning. We highlight the most important ones below, which include:

  • Slower execution speed and performance
  • Syntax verbosity
  • Memory usage
  • Low-level access
  • Lack of multiple inheritance
  • Compatibility with legacy code
  • Learning curve

Following are the main features of the Java language -

  1. Object Oriented: done
  2. Platform Independent
  3. Architecture-neutral: Java system adopts to solve the binary-distribution problem is a "binary code format" that's independent of hardware architectures, operating system interfaces, and window systems. The format of this system-independent binary code is architecture neutral. If the Java run-time platform is made available for a given hardware and software environment, an application written in Java can then execute in that environment without the need to perform any special porting work for that application.[১০]
  4. Multithreaded: Java provides built-in support for multithreaded programming. A multithreaded program contains two or more parts that can run concurrently. Each part of such a program is called a thread, and each thread defines a separate path of execution. Thus, multithreading is a specialized form of multitasking. In a thread-based multitasking environment, the thread is the smallest unit of dispatchable code. This means that a single program can perform two or more tasks simultaneously. The Java run-time system depends on threads for many things, and all the class libraries are designed with multithreading in mind. Java uses threads to enable the entire environment to be asynchronous. This helps reduce inefficiency by preventing the waste of CPU cycles.[১১]
  5. Interpreted and High Performance: Java enables the creation of cross-platform programs by compiling into an intermediate representation called Java bytecode. This code can be executed on any system that implements the Java Virtual Machine. the Java bytecode was carefully designed so that it would be easy to translate directly into native machine code for very high performance by using a just-in-time compiler. /Not good enough[]
  6. Distributed

আরও দেখুন

সম্পাদনা

তথ্যসূত্র

সম্পাদনা
  1. "The Java Language Environment" 
  2. Cadenhead, R. (2018). Java in 21 Days, Sams Teach Yourself (Covering Java 9). Sams Publishing.
  3. Loy, Marc; Niemeyer, Patrick; Leuck, Daniel (২০২০)। Learning Java: an introduction to real-world programming with Java (Fifth edition সংস্করণ)। Beijing: O'Reilly। আইএসবিএন 978-1-4920-5627-0 
  4. Schildt, Herbert (২০১৪)। Java. A beginner's guide (Sixth edition সংস্করণ)। New York: McGraw-Hill Education। আইএসবিএন 978-0-07-180925-2 
  5. "How Java Works"www.cs.cmu.edu। সংগ্রহের তারিখ ২০২৪-০৭-৩১ 
  6. "How Java Program Works?"www.ccbp.in (ইংরেজি ভাষায়)। সংগ্রহের তারিখ ২০২৪-০৭-৩১ 
  7. "What is Java?"Microsoft Azure 
  8. "Advantages of Java"www.ibm.com (ইংরেজি ভাষায়)। সংগ্রহের তারিখ ২০২৪-০৮-১৮ 
  9. Payne, Ronnie (২০২৩-০৯-২৫)। "Advantages and Disadvantages of Java"Developer.com (ইংরেজি ভাষায়)। সংগ্রহের তারিখ ২০২৪-০৮-১৮ 
  10. "Architecture Neutral, Portable, and Robust" 
  11. Schildt, Herbert (২০১৪)। Java. A beginner's guide (Sixth edition সংস্করণ)। New York: McGraw-Hill Education। আইএসবিএন 978-0-07-180925-2