আধুনিক কম্পিউটারের প্রোগ্রামগুলো বেশ বুদ্ধিদীপ্ত ও জটিল। এগুলো একই সঙ্গে একাধিক কাজ সম্পাদন করতে পারে। এই প্রোগ্রামগুলো লিখতে হলে আমাদের নিজেদেরও বুদ্ধির পরিচয় দিতে হয়। সাধারণত একটি বড়ো কাজ কতগুলো ছোটো ছোটো কাজের সমষ্টি হয়। এই ছোটো কাজগুলোকে আলাদাভাবে করে, এদেরকে জুড়ে দিয়েই সামগ্রিকভাবে বড়ো কাজটি সম্পন্ন করা হয়। এর মধ্যে কিছু কাজ একটি আরেকটির ওপর নির্ভরশীল হয়, অন্যগুলো স্বাধীনভাবে সম্পাদন করা যায়। আবার এই ছোটো ছোটো কাজগুলো কম্পিউটার ধারাবাহিকভাবে একটির পর আরেকটি সম্পাদন করতে পারে। তবে যে কাজগুলো স্বাধীন সেগুলোকে যদি একই সঙ্গে করা যায়, তাহলে অল্প সময়ে আমরা একাধিক কাজ করে ফেলতে পারি। এই একই সঙ্গে একাধিক কাজ কীভাবে করা যায়, তা নির্ভর করে আমাদের প্রোগ্রামটি আমরা কীভাবে লিখছি তার ওপর। জাভা প্রোগ্রামিং ল্যাংগুয়েজ ব্যবহার করে একাধিক ছোটো কাজ খুব সুন্দর ও বুদ্ধিদীপ্তভাবে সাজিয়ে প্রোগ্রাম লেখার উপায় হলো থ্রেডিং। এই সাজানোর প্রক্রিয়াটি শিক্ষানবিশদের কাছে অনেক সময়ই কঠিন মনে হয়। এই কঠিন মনে হওয়াটা যুক্তিসংগত। আমরা মানুষ, একই সময়ে একাধিক কাজে মনোযোগ দিতে পারি না। আমাদের চিন্তাভাবনার প্রক্রিয়াও ধারাবাহিক। এই কঠিন বিষয়টি অনুশীলনের মাধ্যমে আয়ত্তে আনতে পারলে কাজের অনেক সুবিধা হয়। প্রোগ্রামিংয়ের ক্ষেত্রেও পরপর ধারবাহিক প্রোগ্রাম লেখা বা চালানো সহজ হলেও একই সময়ে প্রোগ্রামের একাধিক অংশ পাশাপাশি একই সঙ্গে চালানো এবং এদের মধ্য সমন্বয় করা খানিকটা কঠিন। তবে কোনো কাজ কঠিন হলেই কি আর আমরা থেমে থাকি? মানুষ চাঁদে গিয়ে ফিরে এসেছে আর এখন প্রস্তুত হচ্ছে মঙ্গলযাত্রায়। যেকোনো কঠিন বিষয়কে যদি সহজভাবে উপস্থাপন করা যায়, বিশেষ করে যদি মাতৃভাষায় বোঝানো যায়, তাহলে যে-কেউ তা বিনা ক্লেশেই ধরে ফেলতে পারে। এই সহজ উপস্থাপনের কথা চিন্তা করেই এই বইটি লেখায় প্রয়াস। বইটি লেখার পেছনে আমার গত পাঁচ বছরের পেশাগত অভিজ্ঞতা অনেকভাবে কাজে লেগেছে। এ ছাড়া জাভা ইউজার গ্রুপ বাংলাদেশের (jugbd.org) কল্যাণে অসংখ্য শিক্ষানবিশ, দেশ ও দেশের বাইরের অনেক সফটওয়্যার নির্মাতা, আন্তর্জাতিক খ্যাতিসম্পন্ন বিভিন্ন প্রযুক্তি বিশেষজ্ঞ ও বক্তাদের সঙ্গে বিভিন্ন সময় বিভিন্ন রকম যে আলাপচারিতা হয়েছে এবং এ থেকে যে অভিজ্ঞতা সঞ্চিত হয়েছে, তারও খানিকটা এই বইয়ে প্রতিফলিত হয়েছে। আশা করছি এই ছোট্ট বইটি শুধু শিক্ষানবিশদেরই নয়, বরং যারা ইতিমধ্যে সফটওয়্যার ইন্ড্রাস্ট্রিতে মাত্র পা রেখেছে, তাদের অনেকেরই কাজে আসবে এবং পড়ে উপকৃত হবে।
বইটিতে অনেকগুলো গুরুত্বপূর্ণ ধারণা বাংলাতে সহজভাবে উপস্থাপন করার চেষ্টা করেছি এবং এগুলোর সঙ্গে প্রচুর উদাহরণ সংযুক্ত করেছি। বইটি শুধু একবার পড়ে গেলে হবে না, কয়েকবার পড়তে হবে। এ ছাড়া যে কোডগুলো রয়েছে, তার প্রতিটি হাতে আইডিইতে লিখে রান করে পরীক্ষা করে দেখতে হবে। বইটিতে জাভা থ্রেডিংয়ের অনেকগুলো গুরুত্বপূর্ণ বিষয় আলোচনা করা হয়েছে। এটিই শেষ নয়। থ্রেডিং বা কনকারেন্সি অনেক বড়ো এবং জটিল বিষয়। শুধু একটি বই পড়ে এ সম্পর্কে বিস্তর ধারণা নেওয়া সম্ভব নয়। তবে প্রাথমিকভাবে এখানে যে বিষয়গুলো আলোচনা করা হয়েছে সেগুলো ভালোভাবে আয়ত্তে আনতে পারলে জাভা থ্রেড প্রোগ্রামিংয়ের যে ভয়টুকু থাকে, তা মুছে যাবে বলে আমার বিশ্বাস। জাভা ৮-এ জাভা থ্রেডিংয়ের বেশ কিছু নতুন সংযোজন রয়েছে, যা এই বইয়ে আলোচনা করা হয়নি। এর কারণ জাভা ৮ নিয়ে আমার আরেকটি বইয়ের কাজ চলছে। পরবর্তী বইয়ে ল্যামডা এক্সপ্রেশন ও অন্যান্য বিষয় নিয়ে আলোচনা করব। এই বইটি নিয়ে বা এই বইয়ে আলোচিত যেকোনো বিষয় নিয়ে বিভিন্নরকম প্রশ্ন থাকতে পারে। এ ক্ষেত্রে প্রোগ্রামাবাদে ( আপনারা প্রশ্নগুলো করতে পারেন।
বাংলা ভাষায় কনকারেন্সি বা থ্রেডিং নিয়ে একটি বই লেখা হয়েছে শুনে অনেকে হয়তো আঁতকে উঠতে পারে এবং মনে করতে পারে যে, এরকম টেকনিক্যাল বই ইংরেজিতেই পড়া উচিত। এমতের সঙ্গে আমার দ্বিমত নেই। ইংরেজিতে যারা সিদ্ধহস্ত, তাদের বরং ইংরেজিতেই পড়া উচিত। তবে বাংলা বিশ্বের অন্যতম প্রধান ভাষা (সপ্তম) হওয়া সত্ত্বেও আমাদের যদি টেকনোলজি বিষয়ে জ্ঞান আহরণের পূর্বশর্ত হিসেবে অন্য একটি ভাষা রপ্ত করতে হয়, তাহলে ব্যাপারটি খানিকটা দুঃখজনক তো বটেই, বরং ভাষার জন্য আমাদের যে অকৃত্রিম ত্যাগ, তা কিছুটা হলেও ম্লান হয়ে যায়। ডিজিটাল বাংলাদেশ বিনির্মাণে ও মাতৃভাষায় প্রযুক্তিচর্চায় এই বই কিছুটা সহায়ক হলেই আমার এ পরিশ্রম সার্থক হয়েছে বলে ধরে নেব। বাংলা ভাষার মান রক্ষার্থে বাংলাদেশের মাটির মানুষেরা যে ত্যাগ ও দায়িত্বশীলতার পরিচয় দিয়েছে, তা মনে রেখে এই ভাষার মাসে টেকনোলজি বিষয়ে আরেকটি বাংলা বই প্রকাশ করতে পারায় আমি অত্যন্ত আনন্দিত।
লেখালেখির শুরুটা কবিতা দিয়ে, সেই ছোট্টবেলায়। একটা সময় কবিতার খাতাটি হারিয়ে প্রোগ্রামিংয়ের এডিটরটাই হয়ে যায় লেখালেখির নতুন ক্যানভাস। ছাত্রাবস্থা থেকে প্রোগ্রামিং-ই ছিল তাঁর ধ্যান-জ্ঞান। প্রোগ্রামিংয়ের জন্য পছন্দের ভাষা হলো জাভা। জাভার প্রতি ভালোবাসা থেকেই জাভা ইউজার গ্রুপ বাংলাদেশ (http://www.jugbd.org/) প্রতিষ্ঠা করেছেন।
মাতৃভাষায় প্রোগ্রামিং শেখার আনন্দ দিতেই প্রিয় প্রোগ্রামিং ভাষা জাভা নিয়ে লিখে চলেছেন একের পর এক বই। তাঁর লেখার প্রধান বৈশিষ্ট্য – তিনি জাভার যে বিষয়েই লেখেন, সেটি গভীরভাবে ব্যাখ্যা করেন। তাঁর বই পড়লে কী এবং কীভাবের পাশাপাশি ‘কেন’-এর উত্তরও পাওয়া যায়।
আ ন ম বজলুর রহমানের প্রথম বই জাভা প্রোগ্রামিং নতুন শিক্ষার্থীদের কাছে অত্যন্ত জনপ্রিয়। জাভা থ্রেড প্রোগ্রামিং, অ্যাডভান্সড জাভা প্রোগ্রামিং, জাভা ওয়েব প্রোগ্রামিং-ও সমানভাবেই পাঠক সমাদৃত হয়েছে। জাভা প্রোগ্রামিং বইটির প্রথম সংস্করণ প্রকাশের চার বছর পর এবার বেশ কিছু পরিবর্তন নিয়ে এর দ্বিতীয় সংস্করণটি প্রকাশিত হচ্ছে। লেখা এবং চাকরির পাশাপাশি তিনি নিয়মিত জাভা বিষয়ক জাতীয় ও আন্তর্জাতিক সেমিনার এবং কনফারেন্সে বক্তব্য দিয়ে থাকেন।
শেরপুর জেলার ভারেরা গ্রামে জন্ম আ ন ম বজলুর রহমানের, শৈশবটাও কেটেছে সেখানেই। ঢাকা বিশ্ববিদ্যালয় থেকে সফটওয়্যার প্রকৌশলে স্নাতক সম্পন্ন করে থেরাপ, ভ্যানটেজ ল্যাবসের মতো যুক্তরাষ্ট্রভিত্তিক কোম্পানিতে চাকরি করেছেন। এর মধ্যেই গেস্ট ফ্যাকাল্টি হিসেবে ঢাকা বিশ্ববিদ্যালয়ের তথ্যপ্রযুক্তি ইনস্টিটিউটে সফটওয়্যার ইঞ্জিনিয়ারিংয়ের শিক্ষার্থীদের জাভা শিখিয়েছেন দুই বছর। এরপর বিকাশ লিমিটেডে কর্মরত ছিলেন সিনিয়র লিড ইঞ্জিনিয়ার হিসেবে। বর্তমানে তিনি সিনিয়র সফটওয়্যার ডেভেলপার হিসেবে কর্মরত আছেন কানাডার লবলো ডিজিটালে, এবং সস্ত্রীক বসবাস করছেন টরন্টো শহরে।
জাভা বেসড এপ্লিকেশন ডেভেলপমেন্টের একটা গুরুত্বপূর্ন বিষয় হলো থ্রেডিং। সেইটা সার্ভার-সাইড ডেভেলপমেন্ট-ই হোক আর ক্লায়েন্ট সাইড ডেভেলপমেন্ট। সার্ভার-সাইড ডেভেলপমেন্ট এ বিভিন্ন প্রসেসকে একধিক কাজে ভাগ করে faster response করা কিংবা ক্লায়েন্ট সাইড ডেভেলপমেন্ট এ GUI এর পাশাপাশি Network request বা IO Request সঠিক ভাবে handle করা - এগুলা খুবই গুরুত্বপূর্ন বিষয়। থ্রেডিং এর concept ভালো না থাকলে ভালো মানের application develop করা এক কথায় অসম্ভব।
আমি আমার আগের company Therap এবং বর্তমান company Grab - দুই যায়গাতেই Developer Interview নেবার process এর সাথে যুক্ত ছিলাম বা আছি। Interview নেওয়ার experience থেকে একটা ব্যাপার বলতে পারি, আমরা ইন্টারভিউয়াররা candidate দের কে normally অনেক রকম question করেই যাচাই করি। যখন মনে হয়, candidate-রা মুটামুটি ভালো logic programming এ, তখন তাদের development knowledge এর depth যাচাই করার জন্য এই থ্রেডিং থেকেই বিভিন্নরকম প্রশ্ন করি, যেমনঃ Thread safety, race condition, synchronization, Threadpool-executor ইত্যাদি। অনেক candidate এই বিষয়গুলাতেই আটকে যায়। Programming এ Beginner থেকে Advance লেভেল এ যাবার জন্য আসলে থ্রেডিং এর ভালো concept জানা ছাড়া কোনো উপায়-ই নাই বলা যায়।
এবার আসি, "জাভা থ্রেড প্রোগ্রামিং" বইটাতে কি কি আলোচনা করা হয়েছে। ৮টা চ্যাপ্টার এ আলোচনা করা হয়েছে থ্রেডিং কী, থ্রেড তৈরি ও ব্যবহার, থ্রেড সেফটি ও ডেটা সিনক্রোনাইজেশন, কনকারেন্ট কালেকশন, ব্লকিং কিউ, এক্সিকিউটর ফ্রেমওয়ার্ক, Locks and Latches, কনকারেন্সি বনাম প্যারালালিজম। ৯ম চ্যাপ্টার এ একটা প্রজেক্ট করার ধারনা দেওয়া হয়েছেঃ মাল্টিথ্রেডেড ফাইল ডাউনলোডার।
থ্রেডিং জিনিসটা আসলেই একটু complicated. তার মধ্যে বাংলা ভাষায় এইটা নিয়ে সহজভাবে লেখার ব্যাপারে আমি আসলেই skeptical ছিলাম। বিশেষ করে অনেক english terminology এখানে ব্যাবহার করা হয়, যেগুলার বাংলা করা বা বুঝানো বেশ কঠিন। কিন্তু overall বই পড়ে মনে হয়েছে, বজলুর বেশ ভালোভাবেই এই থ্রেডিং এবং তার আশেপাশের রিলেটেড বিষয়গুলা সহজ বাংলায় উপস্থাপন করতে পেরেছে। যারা মুটামুটি programming জানে বা beginner লেভেল এর development এর সাথে যুক্ত - তাদের এই বইটা must পড়া উচিত।
বাংলা ভাষায় প্রোগ্রামিং এর এরকম বই লেখার উদ্যেগ নেবার সাহস করার জন্য লেখক এবং সংশ্লিষ্ট সবাইকে ধন্যবাদ!
আমি আমার অভিজ্ঞতা থেকে জানি যে থ্রেড নিয়ে সবাই কেমন যেন একটা ভয়ের মধ্যে থাকে। এবং আমরা যারা জুনিয়র পজিশনে আছি তারা ভাবি যে এইগুলো আমাদের জন্য না, আমরা বুঝব না, এইগুলা সমাধান করার দায়িত্ব সিনিয়রদের। অথবা ঘণ্টার পর ঘণ্টা bug নিয়ে বসে থাকি কিন্ত উপায় খুঁজে বের করতে পারি না। কারণ এখন প্রায় প্রতিটি অ্যাপ্লিকেশন ই মাল্টিথ্রেডিং ইনভাইরনমেন্টে চলে। এবং অনেক সময় দেখা যায় যে প্রোডাকশন এ গিয়ে অনেক বাগ ধরা পড়ে যেগুলো single thread এ খুব সুন্দর কাজ করে কিন্ত multiple thread এ গিয়ে ঠিকঠাক কাজ করতে পারে না। এই বিষয়গুলা কিভাবে ঘটে এবং এগুলার সমাধান জানার জন্য এটা একটা চমৎকার বই। এখানে লেখক থ্রেডিং এর একবারে বেসিক থেকে এডভান্স লেভেলের জিনিসগুলো সহজভাবে বোঝানোর চেষ্টা করেছেন। জাভা থ্রেডিং নিয়ে ইন্টারনেটে সাধারণত যে রিসোর্সগুলো পাওয়া যায় সেগুলো আমার কাছে কিছুটা কঠিন লেগেছে। সেই তুলনায় এই বইটা বেশ সহজ। লেখকের কাছে অনুরোধ থাকবে ভবিষ্যতে উনি বইটিকে আরও সমৃদ্ধ করবেন এবং উত্তরমালা সহ অনুশীলনী যুক্ত করবেন। আরেকটা কথা না বললেই নয়, বইয়ের প্রচ্ছদটা খুব সুন্দর।
This is a great book, but this is not for everyone. If you're new to Java, then it's probably better to learn the basics first. However, if you're an intermediate to advanced learner, this book will give you a deeper understanding of Java threads. At this moment, I'm not aware of another Bangla book for any programming language that can give you a similar overview of threads.