আমি প্রায় তিন বছর ধরে জাভায় কাজ করছি। প্রথম দিকে এরকম দ্বিধান্বিত আমি নিজেও ছিলাম। একটা প্রশ্নই মাথায় আসত সবসময়, What is it good for?
সহজ উত্তর হল, It’s good for everything!
এখন কাজের কথায় আসি। জাভা মূলত একটা প্রোগ্রামিং ল্যাঙ্গুয়েজ। কন্সিডার ইট অ্যাজ এ টুল। যে টুলটা লজিক্যালি ব্যাবহার করে একজন প্রোগ্রামার তার প্রব্লেম সমাধান করবে। জাভার বেসিক কনসেপ্ট শেখা হয়ে গেছে? বেশ। প্রব্লেম সলভিং করে নিজের হাত পাকা করে নেয়াটা ভালো। এতে দুইটা উপকার হবে।
১। কোর ল্যাঙ্গুয়েজে হাত পাকা হবে।
২। লজ্যিক্যাল স্কিল ডেভেলপ হবে।
এই গেল টুলের কথা। এখন আসি প্রব্লেমে। কোন ধরনের প্রব্লেম আমাদের সলভ করতে হবে এবং কোন প্ল্যাটফর্মে। ওয়েব এপ্লিকেশন, ডেস্কটপ অথবা মোবাইল এপ্লিকেশন? অথবা অন্য যেকোন ধরনের প্রব্লেম?
জাভা প্রোগ্রামারদের কাজ করার প্ল্যাটফর্ম এই সবগুলোই। তবে সাধারণত এখন সবচেয়ে বেশী যে প্ল্যাটফর্মে জাভা ব্যাবহৃত হয় সেটা মোবাইল এবং ওয়েব এপ্লিকেশন। এছাড়াও মেশিন লার্নিং এ জাভা ইউজ করা হয়, তবে পাইথনের জয়জয়কার ওদিকে অনেক বেশী।
মোবাইল প্ল্যাটফর্ম
যদি মোবাইল প্ল্যাটফর্মে কাজ করার ইচ্ছা থাকে তবে অ্যাণ্ড্রয়েড ডেভেলপমেন্ট শেখা লাগবে। অ্যান্ড্রয়েডে যদিও জাভা (এবং কোটলিন) ব্যাবহৃত হয় ল্যাঙ্গুয়েজ হিসেবে, তবে কোর জাভা এপিআই গুলোর সাথে অ্যান্ড্রয়েড এসডিকের এপিআইগুলোর বেশ পার্থক্য আছে।
অ্যাণ্ড্রয়েড ডেভেলপমেন্ট শিখতে হলে Ed Burnette এর Hello, Android বইটা বেশ ভালো বিগিনার লেভেলে।
তবে অনেকের বই পরার ধৈর্য্য থাকে না। সেক্ষেত্রে নিউবোস্টনের অ্যান্ড্রয়েড ডেভেলপমেন্ট সিরিজটা ফ্রি হিসেবে বেশ ভালো। বাংলায় দেখতে চাইলে মোশাররফ রুবেল ভাইয়ের এই সিরিজটা ফলো করা যায়।
ওয়েব প্ল্যাটফর্ম
জাভায় কাজ করার সবচেয়ে বড় প্ল্যাটফর্ম হচ্ছে ওয়েব। মূলত ওয়েবটাই হচ্ছে জাভা এন্টারপ্রাইজ, এটা জাভার মুল ক্ষমতাটা কাজে লাগানোর সবচেয়ে উপযুক্ত স্থান। বড় বড় কোম্পানি, হাসপাতাল, স্কুল-কলেজ, ব্যাংক এবং কর্পোরেট সফটওয়ারগুলোতে জাভা ইউজ করার কারণ হচ্ছে,
- প্রুভেন টেকনোলজি, ইন্ডাস্ট্রিতে অনেকদিন ধরে ব্যাবহৃত হয়ে আসছে।
- অসাধারণ ক্ষমতাসম্পন্ন জাভা ভার্চুয়াল মেশিন।
- সিকিউরিটি
- এবং রিসোর্স। অলমোস্ট এমন কোন প্রব্লেম নাই যার সমাধান অনলাইনে খুঁজলে পাওয়া যাবে না।
ওয়েব এপ্লিকেশন ডেভেলপ করার জন্য আমাদের বেশ কিছু চয়েজ আছে।
- জাকার্তা এন্টারপ্রাইজ (প্রাক্তন জাভা এন্টারপ্রাইজ) ।
- স্প্রিং ফ্রেমওয়ার্ক
- স্ট্রুটস, প্লে কিংবা এ ধরনের অন্যান্য ফ্রেমওয়ার্ক।
জাকার্তা এন্টারপ্রাইজ হচ্ছে অনেকগুলো জাভা এপিআই এর সমষ্টি যার মাধ্যমে ডেভেলপকৃত ওয়েব এপ্লিকেশন সার্ভারে ( টমক্যাট, গ্লাসফিস, ওয়েবলজিক ) ডেপ্লয় করা যাবে।
এদিকে স্প্রিং হয়ে ভিন্ন ফ্রেমওয়ার্ক, জাভাতে ওয়েব এপ্লিকেশন ডেভেলপ করার জন্য। এটা খুবই বিশাল একটা ফ্রেমওয়ার্ক। এবং সবচেয়ে বেশী জনপ্রিয়। স্প্রিং ফ্রেমওয়ার্ক শিখলে জাকার্তা এন্টারপ্রাইজ না শিখলেও চলবে। লার্জ স্কেল এন্টারপ্রাইজ ওয়েব এপ্লিকেশন ডেভেলপ করার সব ধরনের রিসোর্সই স্প্রিং এ আছে।
আমি পারসোনালি রেকমেন্ড করবো স্প্রিং চয়েজ করতে।
স্প্রিং ফ্রেমওয়ার্ক শেখার জন্য এই ওয়েতে স্টেপ বাই স্টেপ এগুনো যেতে পারে:
- মাভেন অথবা গ্রেডেল শেখা (জাভা প্রোজেক্ট ম্যানেজমেন্ট টুল। ডিপেন্ডেন্সী ম্যানেজমেন্ট, টাস্ক ম্যানেজমেন্ট)। জাভা ব্রেইনসের মাভেন টিউটোরিয়াল
- জেএসপি- সার্ভলেট (জাকার্তা এন্টারপ্রাইজ টেকনোলজি) শেখা এবং এটা দিয়ে ছোটখাটো একটা প্রোজেক্ট করে ফেলা। স্প্রিং আসলে জাকার্তা এন্টারপ্রাইজের উপরেই বানানো। কাজেই স্প্রিং শেখার সময় বেসিকটা খুব কাজে আসবে পরবর্তীতে।
- জাভা ব্রেইনসের টিউটোরিয়ালগুলো রেকমেন্ড করবো।
- স্প্রিং ফ্রেমওয়ার্কের কোর কনসেপ্টগুলো শেখা। জাভা ব্রেইনস।
- জেপিএ/হাইবারনেট (ডেটাবেজ-ওআরএম)
- ফাইনালি স্প্রিং এমভিসির টিউটোরিয়াল দেখে শুরু করা যেতে পারে। তবে ইতোমধ্যে স্প্রং বুট নামে কুল প্রোজেক্ট এসেছে যেটা আমি পারসোনালি রেকমেন্ড করব। স্প্রিং এমভিসির সবচেয়ে বড় সুবিধা এবং সবচেয়ে বড় অসুবিধা হল, এটা অনেক বেশই কনফিগারেবল। সব কিছুর জন্যই কনফিগারেশন লিখতে হয়, সেই সাথে যেসব ডিপেন্ডেন্সি ব্যাবহার করা হচ্ছে, তার ভার্সনগুলা কম্প্যাটিবল কিনা সেটা ট্র্যাক রাখা খুবই ঝামেলার কাজ।
এসব সমস্যার সমাধান করার জন্যই মূলত স্প্রিং বুট, যেটা ডিপেন্ডেন্সীর ভার্সন অটোমেটিকলি ম্যানেজ করবে, সেই সাথে কমন কনফিগারেশনগুলো সব নিজে নিজেই করে নেবে। কিন্তু চাইলে যে কোন সময় ওভাররাইড করা যাবে অবশ্যই।
স্প্রিং বুট শেখার জন্য জাভাব্রেইনসের টিউটোরিয়াল
সবচেয়ে বেশী যেটা লাগবে তা হলে লেগে থাকার মত মানসিকতা। জাভার সব টেকনোলজির লার্নিং কার্ভটা অনেক হাই। কাজেই মাঝপথে হাল ছেড়ে দিলে কিছুই শেখা হবে না।
যে কোন ধরনের সমস্যায় এই কমিউনিটিতে টপিক খুললে আশা করছি সর্বোচ্চ সহযোগিতার চেষ্টা করবে সবাই। হ্যাপি লার্নিং।