জাভা প্রোগ্রামিং

Java Programming By ANM Bazlur Rahman

Buy Now

প্রাপ্তিস্থান

রকমারি ডট কম, ফোন: ১৬২৯৭
হক লাইব্রেরী, নীলক্ষেত, ঢাকা, ফোন: ০১৮২০-১৫৭১৮১
মানিক লাইব্রেরী, নীলক্ষেত, ঢাকা, ফোন: ০১৭৩৫-৭৪২৯০৮
রানা বুক পাবলিশার্স, নীলক্ষেত, ঢাকা, ফোন: ০১৬২৩-০৫৮৪২৮


ভূমিকা

তৃতীয় দশকে পদার্পণ করেছে জাভা। ১৯৯৫ সালে যাত্রা শুরু করে গত ২২ বছরে ক্রমাগত উন্নতি, প্রসার ও জনপ্রিয়তা অর্জন করেছে অত্যন্ত জনপ্রিয় এই প্রোগ্রামিং ভাষা। মিথষ্ক্রিয় ইন্টারনেট তৈরিতে নেতৃত্বদান ছাড়াও অন্য ইন্টারনেট প্রোগ্রামিংয়ের ভাষাগুলোকেও ক্রমাগত চ্যালেঞ্জের মুখে ফেলেছে জাভা। এতে ইন্টারনেট প্রোগ্রামিং ভাষাগুলোর মধ্যে প্রতিযোগিতার সৃষ্টি হয়েছে; ফলে জাভাসহ প্রতিটি ভাষার কম্পাইলারেই সন্নিবেশিত হয়েছে বিভিন্ন প্রযুক্তি, লাইব্রেরি, ফ্রেমওয়ার্ক ইত্যাদি। গত দু’দশক ধরে প্রকৌশল-বান্ধব প্রযুক্তি উন্নয়নেও নেতৃত্ব দিয়েছে জাভা, তাই আজও ওয়েব প্রোগ্রামিং বা ওয়েব অ্যাপ্লিকেশন তৈরিতে ডেভেলপারের প্রথম পছন্দের ভাষা জাভা।

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

সে নিরিখে আ ন ম বজলুর রহমান রোকন “জাভা প্রোগ্রামিং” পুস্তক রচনার যে উদ্যোগ গ্রহণ করেছেন, তা মহতী নিঃসন্দেহে। গ্রন্থটিতে মোট ১৫টি অধ্যায়ে বিভাজন করে জাভার প্রাথমিক বিষয়বস্তু সম্পর্কে যে আলোচনা করা হয়েছে, তা প্রারম্ভিক পর্যায়ের জাভা শিক্ষার্থীর জন্যে অত্যন্ত উপযোগী। দেশে বিশ্ববিদ্যালয় পর্যায়ে চার বা ছয় মাসের সেমিস্টার পদ্ধতি বিদ্যমান। এই সময়ের মধ্যে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ও প্রোগ্রামিংয়ের ভাষা হিসেবে জাভা শিক্ষায় অগ্রাধিকারের ভিত্তিতে বিষয়বস্তু নির্বাচন ও শ্রেণিবিন্যাস করা হয়েছে, বিষয়বস্তুর বিন্যাসক্রম সাজানো হয়েছে সে নিরিখেই। ফলে গ্রন্থটিতে বিভিন্ন বিষয়াদি যেমন যুক্ত করা হয়েছে, তেমনি জনপ্রিয় ধারার পুস্তকে থাকে এমন কিছু বিষয়াদি বাদও দেয়া হয়েছে। যেমন ডেটা ব্যবস্থাপনা শেখা একজন প্রোগ্রামারের জন্য বেশি জরুরি বিবেচনায় জাভা কালেকশন ফ্রেমওয়ার্ক এবং প্রোগ্রামের মধ্যে কীভাবে খুব সহজেই সফলভাবে ভুল-ভ্রান্তি খুঁজে বের করা যায় তার জন্য ইউনিট টেস্টিংয়ের ওপর দুটো অধ্যায় সংযোজিত হয়েছে, ডিবাগিং বিষয়ে আলোচনা করা হয়েছে। অন্য দিকে অপারেটিং সিস্টেমের ধারণা শেখার আগে মাল্টিথ্রেডিং শেখা অনাবশ্যক মনে করে মাল্টিথ্রেডিং বাদ দেয়া হয়েছে; চার থেকে ছয় মাসে জাভা শেখার ক্ষেত্রে জাভার গ্রাফিক্যাল ইউজার ইন্টারফেস সংক্রান্ত বিষয়াদিকে বাদ দেয়া হয়েছে। গত দশ বছরের শিক্ষকতার অভিজ্ঞতা, বিশেষত গত চার বছর ধরে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ও জাভা শিক্ষাদানের অভিজ্ঞতার আলোকে বজলুর রহমান রোকনকে এই পরামর্শ দিয়েছিলাম, তিনি একমত হয়ে গ্রন্থটির বিষয়বস্তু পুনর্বিন্যাস করেছেন। অদূর ভবিষ্যতে এই গ্রন্থের অগ্রসর সংস্করণ লেখার পরিকল্পনা গ্রহণ করেছেন লেখক, তাতে বাদ পড়া বিষয়াদিসহ জাভার অন্যান্য অগ্রসর বিষয়বস্তু সম্পর্কে আলোচনা করা হবে। গ্রন্থটিকে নতুন শিক্ষার্থীদের জাভা ও অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং শেখার ক্ষেত্রে একটি পূর্ণাঙ্গ সংস্থান হিসেবে পরিকল্পনা করতে পরামর্শ দিয়েছিলাম বজলুর রহমানকে, তিনি করেছেনও তাই। প্রথম প্রোগ্রামিং ভাষা হিসেবে পাঠক জাভা ও অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং শিখতে চাইলে অথবা কোনো শিক্ষক বা পথনির্দেশকের সহায়তা ছাড়া জাভা শিখতে চাইলেও এই গ্রন্থ উপযোগী হবে বলেই ধারণা করি।

বজলুর রহমান রোকনকে দেখেছি ২০০৯ সালের শুরু থেকেই, ঢাকা বিশ্ববিদ্যালয়ের তথ্য প্রযুক্তি ইনস্টিটিউটে, আমি সেখানে প্রভাষক তখন, রোকন ছাত্র সফটওয়্যার ইঞ্জিনিয়ারিং বিষয়ে স্নাতক প্রথম বর্ষে। একটু খেয়ালী, একটু উদাস, একটু অলস, তথাকথিত ভালছাত্রের গুণগুলোর অনেকগুলোই ছিল অনুপস্থিত। ছিল শেখার আগ্রহ, ছিল উজ্জ্বল চোখদুটো – অমিত আগ্রহের, উজ্জ্বল সম্ভাবনার প্রতীক হয়ে। প্রথম প্রোগ্রামিং ক্লাসে আমি ছিলাম ওদের শিক্ষক, বেছে আনা ৩০টি তারকার মধ্যে কোন বিশেষ দীপ্তি ছিল না রোকনের। খুব ভাল বললেও, রোকন সেরাদের কাতারে ছিল, তা বলা সত্যের অপলাপ হবে। সেখানেই তার বিশেষত্ব, বিশ্ববিদ্যালয়ের প্রথম বর্ষ থেকে পরের বছরগুলোতে প্রবল আগ্রহের শক্তিতে কী হতে পারে তার প্রমাণ রেখেছেন রোকন জাভা-আসক্তি দিয়ে, প্রযুক্তির প্রতি গভীর ভালবাসা দিয়ে। বিশ্ববিদ্যালয়ের প্রথাগত পদ্ধতির পড়ালেখা বা অর্জনগুলোর তুলনায় জাভা ও প্রোগ্রামিং প্রযুক্তি নিয়েই ছিল তার মাতামাতি। সময়ের সাথে সাথে জাভা ও প্রোগ্রামিং নিয়ে রোকনের আগ্রহ এবং উদ্যোগ আরো শাণিত হয়েছে। সময় এগিয়েছে, ব্যস্ততা বেড়েছে, প্রযুক্তির প্রতি রোকনের আগ্রহের ঘাটতি তৈরি হয় নি। উৎসাহের কমতি দেখি নি এতটুকুও, বরং তা বেড়েই চলেছে উত্তরোত্তর। সে আগ্রহের ঐকান্তিকতারই প্রকাশ ঘটেছে জাভা বিষয়ে ব্লগ লেখায়, ছাত্রকাল থেকেই সফটওয়্যার তৈরির সৌখিনতায়, গত চার বছর ধরে জাভা-ভিত্তিক ডেভেলপমেন্ট প্রতিষ্ঠানে একাগ্র কর্মনিষ্ঠায় ও জাভা ইউজার গ্রুপ বাংলাদেশের প্রতিষ্ঠায় তার ক্লান্তিহীন পরিশ্রমে, সবশেষে জাভা বিষয়ে বাংলা ভাষায় গ্রন্থ রচনার উদ্যোগের মধ্য দিয়ে।

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

শাহ্ মোস্তফা খালেদ
সহকারী অধ্যাপক
তথ্য প্রযুক্তি ইনস্টিটিউট
ঢাকা বিশ্ববিদ্যালয়

সূচীপত্র

লেখকের কথা

লেখক পরিচিতি

অধ্যায় শূন্য: উপক্রমণিকা

অধ্যায় এক: প্রথম জাভা প্রোগ্রাম

  • ১.১ – প্রোগ্রামিং ভাষা কী?
  • ১.২ – কেন জাভা?
  • ১.৩ – জাভা কীভাবে কাজ করে?
    • ১.৩.১ – বাইটকোড (Bytecode)
    • ১.৩.২ – জাভা ভার্চুয়াল মেশিন (JVM)
    • ১.৩.৩ – জাস্ট ইন টাইম (JIT) কম্পাইলার
    • ১.৩.৪ – আরও কিছু টার্মিনোলোজি
    • ১.৩.৫ – জাভা প্ল্যাটফর্মের সাবসেট
  • ১.৪ – জাভা ইনস্টল (Install) করা
    • ১.৪.১ – উইন্ডোজে জাভা ইনস্টল করা
    • ১.৪.২ – উইন্ডোজের প্রথম জাভা প্রোগ্রাম
    • ১.৪.৩ – লিনাক্সে জাভা ইনস্টল করা
    • ১.৪.৪ – লিনাক্সে প্রথম জাভা প্রোগ্রাম
  • ১.৫ – আইডিই (IDE) এর ব্যবহার
  • ১.৬ – আরও কয়েকটি সহজ প্রোগ্রাম
    • ১.৬.১ – যোগ, বিয়োগ, গুন, ভাগ করার প্রোগ্রাম
    • ১.৬.২ – ইনপুট নেওয়া
  • ১.৭ – অনুশীলনী

অধ্যায় দুই: সিনট্যাক্স (Syntax)

  • ২.১ – অবজেক্ট (Object) ও ক্লাস (Class)
    • ২.১.১ – অবজেক্ট (Object)
    • ২.১.২ – অবজেক্ট (Object)
  • ২.২ – জাভা প্রোগ্রামের উপাদানসমুহ
  • ২.৩ – জাভা মেথড (Java Method)
  • ২.৪ – অবজেক্ট ইনস্ট্যান্সিয়েশন (Object Instantiation)
  • ২.৫ – মেথড ওভারলোডিং (Method Overloading)
  • ২.৬ – কনস্ট্রাক্টর (Constructor)
  • ২.৭ – মেথডের ব্যবহার
  • ২.৮ – প্রিন্টিং (Printing)
  • ২.৯ – প্যারামিটার (Parameter) ও আর্গুমেন্ট (Argument)
  • ২.১০ – প্যাকেজ নাম (Package Name) ও ডিরেক্টরি স্ট্রাকচার (Directory Structure)
  • ২.১১ – প্যাকেজ ইমপোর্ট (Import) করা
  • ২.১৩ – আরও কিছু নিয়ম
  • ২.১৪ – অনুশীলনী

অধ্যায় তিন: ডেটা টাইপ (Data Type), অপারেটর (Operator) এবং এক্সপ্রেশন (Expression)

  • ৩.১ – ভ্যারিয়েবল (Variable)
  • ৩.২ – ভ্যারিয়েবল প্রিন্ট করা
  • ৩.৩ – ডেটা টাইপ (Data Type)
    • ৩.৩.১ – প্রিমিটিভ টাইপ (Primitive Type)
  • ৩.৪ – র‍্যাপার ক্লাস (Wrapper Class)
  • ৩.৫ – লিটারেল (Literal)
    • ৩.৫.১ – ইন্টিজার লিটারেল (Integer Literal)
    • ৩.৫.২ – ফ্লোটিং পয়েন্ট লিটারেল (Floating Point Literal)
    • ৩.৫.৩ – ক্যারেক্টার (Character) ও স্ট্রিং লিটারেল (String literal)
    • ৩.৫.৪ – স্যাংখিক (Numeric) লিটারেলে আন্ডারস্কোর চিহ্নের ব্যবহার
    • ৩.৫.৫ – এসকেপ সিকোয়েন্স (Escape Sequence)
  • ৩.৬ – অপারেটর (Operator)
    • ৩.৬.১ – অ্যাসাইনমেন্ট অপারেটর (Assignment Operator)
    • ৩.৬.২ – অ্যারিথমেটিক অপারেটর (Arithmetic Operator)
    • ৩.৬.৩ – ইন্টিজার সংখ্যার ভাগ অপারেশন (Integer Division) ও ফ্লোটিং পয়েন্ট সংখ্যার ভাগ অপারেশন (Floating Point division)
    • ৩.৬.৪ – রাউন্ডিং ত্রুটি বা এরর (Rounding Error)
    • ৩.৬.৫ – স্ট্রিং অপারেশন (String Operation)
    • ৩.৬.৬ – ইউনারি (Unary) অপারেটর
    • ৩.৬.৭ – ইকুয়ালিটি (Equality) এবং রিলেশনাল (Relational) অপারেটর
    • ৩.৬.৮ – ওভারফ্লো (Overflow) / আন্ডারফ্লো (Underflow)
    • ৩.৬.৯ – টাইপ কনভার্সন (Type Conversion) / টাইপ কাস্টিং (Type Casting)
  • ৩.৭ – এক্সপ্রেশন (Expression), স্টেটমেন্ট (Statement) এবং ব্লক (Blocks)
    • ৩.৭.১ – এক্সপ্রেশন (Expression)
    • ৩.৭.২ – স্টেটমেন্ট (Statement)
    • ৩.৭.৩ – ব্লক (Block)
    • ৩.৭.৪ – ভ্যারিয়েবল স্কোপ (Scope of a Variable)
  • ৩.৮ – অনুশীলনী

অধ্যায় চার: কন্ট্রোল ফ্লো (Control Flow), লুপিং (Looping) ও ব্রাঞ্চিং (Branching)

  • ৪.১ – ডিসিশন মেকিং স্টেটমেন্ট (Decision Making Statement)
    • ৪.১.১ – If, If-else, if-else-if
    • ৪.১.২ – নেস্টেড (Nested) If-else
    • ৪.১.৩ – সুইচ (Switch)
  • ৪.২ – লুপ (Loop)
    • ৪.২.১ – While লুপ
    • ৪.২.২ – For লুপ
    • ৪.২.৩ – Do-While লুপ
  • ৪.৩ – ব্রেক (break) এবং কন্টিনিউ (continue)
  • ৪.৪ – রিটার্ন (return) স্টেটমেন্ট
  • ৪.৫ – অনুশীলনী

অধ্যায় পাঁচ: অ্যারে (Array)

  • ৫.১ – অ্যারে ডিক্লেয়ারেশন (Array Declaration), ক্রিয়েশন (Creation) এবং অ্যাকসেস (Access)
  • ৫.২ – মাল্টি-ডাইমেনশনাল অ্যারে (Multi-Dimensional Array)
  • ৫.৩ – এনহ্যান্সড (Enhanced) For লুপ বা For-Each লুপ
  • ৫.৪ – অ্যারে কপি করা (Copying)
  • ৫.৫ – অনুশীলনী

অধ্যায় ছয়: অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (Object Oriented Programming)

  • ৬.১ – অবজেক্ট (Object) ও ক্লাস (Class)
    • ৬.১.১ – অবজেক্ট (Object)
    • ৬.১.২ – ক্লাস (Class)
  • ৬.২ – অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (Object Oriented Programming)
    • ৬.২.১ – অবজেক্ট অরিয়েন্টেডেট প্রোগ্রামিংয়ের প্রয়োজনীয়তা এবং উৎপত্তি
  • ৬.৩ – ইনহেরিটেন্স (Inheritence)
    • ৬.৩.১ – ফাইনাল ক্লাস (Final Class)
    • ৬.৩.২ – মেথড ওভাররাইডিং (Method Overriding)
    • ৬.৩.৩ – অ্যানোটেশন (Annotation) @Override
    • ৬.৩.৪ – super কিওয়ার্ড
    • ৬.৩.৫ – ফাইনাল (Final) মেথড
    • ৬.৩.৬ – অবজেক্ট কম্পোজিশন (Object Composition)
  • ৬.৪ –পলিমরফিজম (Polymorphism)
    • ৬.৪.১ –ভ্যারিয়েবল টাইপ এবং অবজেক্ট টাইপ
    • ৬.৪.২ –আপ-কাস্টিং (Upcasting) এবং ডাউনকাস্টিং (Downcasting)
  • ৬.৫ – অ্যাবস্ট্রাক্ট ক্লাস এবং ইন্টারফেস (Abstract class & interface)
    • ৬.৫.১ – অ্যাবস্ট্রাক্ট ক্লাস (Abstract class)
    • ৬.৫.২ – অ্যাবস্ট্রাক্ট মেথড (Abstract Method)
    • ৬.৫.৩ – অ্যাবস্ট্রাক্ট ক্লাস এবং অ্যাবস্ট্রাক্ট মেথডের কতগুলো নিয়ম
    • ৬.৫.৪ – ইন্টারফেস (Interface)
    • ৬.৫.৫ – ইন্টারফেস বনাম অ্যাবস্ট্রাক্ট
  • ৬.৬ – এনক্যাপসুলেশন (Encapsulation)
    • ৬.৬.১ – ডিফল্ট অ্যাকসেস (Default Access)
    • ৬.৬.২ – প্রাইভেট অ্যাকসেস মডিফায়ার (Private Access Modifier) – private
    • ৬.৬.৩ – পাবলিক অ্যাকসেস মডিফায়ার (Public Access Modifier) – public
    • ৬.৬.৪ – প্রোটেক্টেড অ্যাকসেস মডিফায়ার (Protected Access Modifier) – protected
    • ৬.৬.৫ – অ্যাকসেস লেভেল টেবিল
    • ৬.৬.৬ – এনক্যাপসুলেশন সংক্রান্ত জরুরী কিছু বিষয়
  • ৬.৭ – অনুশীলনী

অধ্যায় সাত: জাভা এক্সেপশন হ্যান্ডেলিং (Java Exception handling)

  • ৭.১ – try ব্লক
  • ৭.২ – catch ব্লক
  • ৭.৩ – finally ব্লক
  • ৭.৪ – জাভা এক্সেপশন হায়ারার্কি (Java Exception Hierarchy)
  • ৭.৫ – চেকড এক্সেপশন (Checked Exception) ও আনচেকড এক্সেপশন (Unchecked Exception)
    • ৭.৫.১ – আনচেকড এক্সেপশন (Unchecked Exception)
    • ৭.৫.২ – চেকড এক্সেপশন (Checked Exception)
    • ৭.৫.৩ – চেকড এক্সেপশন এবং জাভা কম্পাইলার
  • ৭.৬ – এক্সেপশন ডিক্লেয়ারেশন (Exception Declaration) ও থ্রোয়িং (Throwing)
  • ৭.৭ – এক্সেপশন থেকে তথ্য সংগ্রহ করা
  • ৭.৮ – স্ট্যাক-ট্রেস (Stack Trace)
  • ৭.৯ – মেথড কল স্ট্যাক ও এক্সেপশন (Method Call Stack & Exception)
  • ৭.১০ – সাধারণ এক্সেপশন ক্লাস
  • ৭.১১ – ইউজার ডিফাইনড এক্সেপশন (User Defined Exception)
  • ৭.১২ – ফল্ট টলারেন্ট সিস্টেম (Fault Tolerant System) এর জন্য জাভা এক্সেপশন
  • ৭.১৩ – অনুশীলনী

অধ্যায় আট: জেনেরিকস (Generics)

  • ৮.১ – জাভাতে জেনেরিকস
  • ৮.২ – জেনেরিকস (Generics) এবং সাবটাইপিং (Subtyping)
  • ৮.৩ – বাউন্ডেড টাইপ (Bounded Types)
  • ৮.৪ – ওয়াইল্ডকার্ড আর্গুমেন্ট (Wildcard Arguments)
  • ৮.৫ – জেনেরিক মেথড (Generic Method)
  • ৮.৬ – টাইপ ইরেইজার (Type erasure)
  • ৮.৭ – অনুশীলনী

অধ্যায় নয়: জাভা আই/ও (I/O)

  • ৯.১ – ফাইল নিয়ে কাজ
    • ৯.১.১ – পাথ (Path)
    • ৯.১.২ – ফাইল তৈরি
    • ৯.১.৩ – পাথ সেপারেটর (Path separator)
    • ৯.১.৪ – ডিরেক্টরি তৈরি
    • ৯.১.৫ – ফাইল রিনেমিং (File Renaming), ফাইল কপিইং (File Copying) এবং ফাইল ডিলিটিং (File Deleting)
    • ৯.১.৬ – ফাইলের তালিকা বের করা
    • ৯.১.৭ – ফাইল ফিল্টার (File Filter)
  • ৯.২ – ইনপুট/আউটপুট স্ট্রিম (Input/Output Stream)
    • ৯.২.১ – স্ট্রিমের প্রকারভেদ
    • ৯.২.২ – ইনপুট স্ট্রিম (InputStream) তৈরি
    • ৯.২.৩ – ইনপুট স্ট্রিম থেকে ডেটা পড়া
    • ৯.২.৪ – আউটপুট স্ট্রিম (OutputStream) তৈরি
    • ৯.২.৫ – আউটপুট স্ট্রিমে ডেটা রাইট করা
    • ৯.২.৬ – ক্যারেক্টার স্ট্রিম (Character Stream)
    • ৯.২.৭ – রিডার (Reader) ব্যবহার করে ডেটা রিড করা
    • ৯.২.৮ – রাইটার (Writer) ব্যবহার করে ডেটা রাইট করা
    • ৯.২.৯ – System.in, System.out, and System.error
    • ৯.২.১০ – প্রিমিটিভ ডেটা রিড/রাইট করা
  • ৯.৩ – অনুশীলনী

অধ্যায় দশ: জাভা এন আই/ও (NIO)

  • ১০.১ – জাভা এনআইও (NIO) কী?
  • ১০.২ – বাফার (Buffer)
  • ১০.৩ – চ্যানেল (Channel)
  • ১০.৪ – ফাইল রিড করা
  • ১০.৫ – ফাইল রাইট করা
    • ১০.৫.১ – try-with-resource
  • ১০.৬ – একত্রে রিড এবং রাইট করা
  • ১০.৭ – ক্যারেক্টার সেট (Character Set)
  • ১০.৮ – অনুশীলনী

অধ্যায় এগারো: কালেকশন ফ্রেমওয়ার্ক (Collection Framework)

  • ১১.১ – কালেকশন (Collection)
  • ১১.২ – লিস্ট (List)
  • ১১.৩ – স্ট্যাক (Stack)
  • ১১.৪ – ইটারেবল (Iterable) ও ইটারেটর (Iterator)
  • ১১.৫ – সেট (Set)
  • ১১.৬ – কিউ (Queue)
  • ১১.৭ – ম্যাপ (Map)
    • ১১.৭.১ – হ্যাশম্যাপ (HashMap)
    • ১১.৭.২ – ট্রিম্যাপ (TreeMap)
    • ১১.৭.৩ – হ্যাশটেবিল (HashTable)
    • ১১.৭.৪ – লিঙ্কড হ্যাশম্যাপ (LinkedHashMap)
  • ১১.৮ – কালেকশন অর্ডারিং/সর্টিং (Collection Sorting/Ordering)
  • ১১.৯ – সার্চিং (Searching)
  • ১১.১০ – অনুশীলনী

অধ্যায় বারো: স্ট্রিং অপারেশন (String Operations)

  • ১২.১ – স্ট্রিং কনক্যাটিনেশন (Concatenation)
  • ১২.২ – স্টিংয়ের কিছু গুরুত্বপূর্ণ মেথড
  • ১২.৩ – স্ট্রিং পুল (String Pool)
  • ১২.৪ – স্ট্রিং বিল্ডার (StringBuilder) এবং স্ট্রিং বাফার (StringBuffer)
  • ১২.৫ – অনুশীলনী

অধ্যায় তের: জাভা ম্যাথ এপিআই (Math API) ও ইউটিলিটি ক্লাস (Utility Class)

  • ১৩.১ – জাভা ম্যাথ এপিআই
  • ১৩.২ – র‍্যান্ডম নম্বর (Random Numbers)
  • ১৩.৩ – বিগ-ইন্টিজার (BigInteger) ও বিগ-ডেসিমাল (BigDecimal)

অধ্যায় চৌদ্দ: ইউনিট টেস্টিং (Unit Testing)

  • ১৪.১ – JUnit অ্যানোটেশন (Annotation)
  • ১৪.২ – অ্যাসার্ট স্টেটমেন্ট (Assert statements)
  • ১৪.৩ – ফেইলড টেস্ট কেইস (Failed Test Case)

পরিশিষ্ট ১ : এনাম (Enum)

পরিশিষ্ট ২: নাল (null )

পরিশিষ্ট ৩ : Object ক্লাস

পরিশিষ্ট ৪: জাভা কী পাস-বাই-ভ্যালু (Pass-by-Value)?

পরিশিষ্ট ৫ : জাভা স্ট্রিং ফরম্যাটিং

পরিশিষ্ট ৬ : একটি ক্যালকুলেটর

পরিশিষ্ট ৭ : ক্যারেক্টার এনকোডিং (Character Encoding)

পরিশিষ্ট ৮ : ডিবাগিং (Debugging)

পরিশিষ্ট ৯ : জাভা কিওয়ার্ড (Java Keywords)

পরিশিষ্ট ১০ : জাভা কীভাবে কাজ করে এবং কীভাবে ভালো পারফর্ম করে

পরিশিষ্ট ১১ : বাংলাতে জাভা প্রোগ্রামিং

বইয়ের বিবরনী

শিরোনাম জাভা প্রোগ্রামিং
লেখক আ ন ম বজলুর রহমান
ক্যাটেগরি কম্পিউটার প্রোগ্রামিং
ISBN 9789849216445
সংস্করন প্রথম প্রকাশ, ফেব্রুয়ারী, ২০১৭
পৃষ্ঠাসংখ্যা ৪৬৪

লেখক পরিচিতি

আ ন ম বজলুর রহমান

লেখালেখির শুরুটা কবিতা দিয়ে, সেই ছোট্টবেলায়। একটা সময় কবিতার খাতাটি হারিয়ে প্রোগ্রামিংয়ের এডিটরটাই হয়ে যায় লেখালেখির নতুন ক্যানভাস। পড়াশোনা সফটওয়্যার ইঞ্জিনিয়ারিংয়ে, ঢাকা বিশ্ববিদ্যালয়ের তথ্য প্রযুক্তি ইনস্টিটিউট থেকে। ছাত্রাবস্থা থেকেই প্রোগ্রামিং-ই ছিল তার ধ্যান-জ্ঞ্যান। প্রোগ্রামিংয়ের জন্যে পছন্দের ভাষা হলো জাভা। জাভা দিয়ে সফটওয়্যার লেখাটা শুধুমাত্র গ্র্যাজুয়েশনের জন্য কিংবা কাজের জন্য নয়, বরং শখের বশেই করেছেন বেশি। জাভার প্রতি ভালোবাসা থেকেই জাভা ইউজার গ্রুপ বাংলাদেশ, (http://www.jugbd.org/) প্রতিষ্ঠা করেছেন।

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

জন্মঃ ১৯৯০ সালের ২৩ শে এপ্রিল।

শখঃ বই পড়া।

Comments

comments