1.1 বড় প্রোগ্রাম

আমরা ইতিমধ্যে শিখেছি কিভাবে ছোট প্রোগ্রাম লিখতে হয়, তাই এখন আমরা শিখব কিভাবে বড় প্রোগ্রাম লিখতে হয়। আপনি জানেন যে, প্রোগ্রামটি যত বড় এবং জটিল, তার বিকাশের জন্য তত বেশি অর্থ প্রদান করা হয় :) এবং আসুন একটু পটভূমি দিয়ে শুরু করি ...

প্রোগ্রাম আকারে বড় হওয়ার সাথে সাথে বিকাশকারীরা দুটি নতুন চ্যালেঞ্জের মুখোমুখি হয়:

  • একই কর্মসূচিতে বিপুল সংখ্যক মানুষ কাজ করছেন।
  • এমন কোন ব্যক্তি নেই যে প্রোগ্রামটির সম্পূর্ণ কোডটি জানবে।

খুব প্রায়ই, পরিস্থিতি দেখা দিতে শুরু করে যখন একজন প্রোগ্রামার প্রোগ্রামের এক জায়গায় একটি বাগ সংশোধন করে এবং একই সাথে অন্য জায়গায় কিছু ভেঙে দেয়। রিলিজ ডকুমেন্টেশন এমনকি এই কৌতুক আছে:

পরিবর্তনের তালিকা:

  • পুরানো বাগ সংশোধন করা হয়েছে :)
  • নতুন যোগ করা হয়েছে :(

তারপরে তারা এই সমস্যাটি সমাধানের জন্য দুটি পন্থা নিয়ে এসেছিল: প্রযুক্তিগত এবং ব্যবস্থাপক।

প্রযুক্তিগত পদ্ধতি ছিল যে প্রোগ্রামগুলিকে ভাগে ভাগ করা হয়েছিল: লাইব্রেরি এবং মডিউল । এই জাতীয় প্রতিটি মডিউল ছিল একটি ছোট ইট যা থেকে তখন বড় প্রকল্পগুলি তৈরি করা হয়েছিল। গ্রন্থাগারগুলি এমন সর্বজনীন উপাদান যা বিভিন্ন প্রোগ্রামে ব্যবহার করা যেতে পারে।

ব্যবস্থাপনাগত পদ্ধতিটি আরও আকর্ষণীয় ছিল - তারা একটি প্রকল্প/লাইব্রেরিতে কাজ করতে পারে এমন লোকের সংখ্যা সীমিত করেছিল। অভিজ্ঞতাগতভাবে, তারা এমনকি একটি নিয়ম নিয়ে এসেছিল: দলটি এত বড় হওয়া উচিত যে "এটিকে দুটি পিজা খাওয়ানো যেতে পারে । " সাধারণত এর মানে হল যে যদি একটি প্রকল্পে 8 জনের বেশি লোক কাজ করে , তাহলে এটি দুটি প্রকল্পে বিভক্ত করা প্রয়োজন।

সব অনুষ্ঠানের জন্য লাইব্রেরি লেখা এবং সেগুলিকে সর্বজনীনভাবে উপলব্ধ করা জাভা বিকাশকারী সম্প্রদায়ে জনপ্রিয় হয়ে উঠেছে। এইভাবে, জাভা প্রোগ্রামাররা একই কোড আবার লিখতে পারে না (যা প্রায়শই কাঁচা ছিল এবং বাগ ছিল), তবে তৈরি এবং প্রমাণিত সমাধান ব্যবহার করে ।

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

দ্বিতীয়ত, সার্ভারের কার্যত কোডের আকারের কোন সীমা নেই। একটি মোবাইল অ্যাপ্লিকেশনের বিকাশকারী এটিকে 10 মেগাবাইটে ক্র্যাম করার চেষ্টা করে, একটি ডেস্কটপ অ্যাপ্লিকেশন - 100 মেগাবাইটে। এবং একটি জাভা ব্যাকএন্ড বিকাশকারী একটি প্রকল্পে কয়েক দশ গিগাবাইট লাইব্রেরি ক্র্যাম করতে পারে এবং কেউ তাকে একটি কথাও বলবে না :)

যাইহোক, এটি একটি রসিকতা নয়। আপনি সহজেই কয়েক ডজন মডিউল এবং কয়েকশ লাইব্রেরি সহ একটি ব্যাকএন্ড প্রকল্প জুড়ে আসতে পারেন। কিন্তু এই ধরনের প্রকল্পের জন্য স্ক্রিপ্ট তৈরি করা (এবং পরিবর্তন!) বর্ণনা করা অত্যন্ত কঠিন হয়ে পড়েছে।

এবং তারপর মাভেন হাজির।

1.2 মাভেনের পরিচিতি

Maven প্রকল্প নির্মাণ ব্যবস্থাপনার জন্য একটি বিশেষ "ফ্রেমওয়ার্ক"। এটি 3টি জিনিসকে মানসম্মত করে:
  • প্রকল্পের বিবরণ;
  • প্রকল্প নির্মাণ স্ক্রিপ্ট;
  • লাইব্রেরির মধ্যে নির্ভরতা।

মাভেনের পূর্বসূরি ছিলেন অ্যান্ট , এবং এর উত্তরসূরি হলেন গ্রেডল । কিন্তু এটি মাভেনই তিনটি তালিকাভুক্ত মান উন্নত এবং নিখুঁত করেছিল এবং তাদের মিথস্ক্রিয়া নিয়ন্ত্রণও করেছিল। তিনিই জাভা সম্প্রদায়ের কাজকে একটি নতুন স্তরে নিয়ে এসেছিলেন। এর আরো বিস্তারিতভাবে তাকান করা যাক.

মাভেন

প্রযুক্তিগতভাবে, ম্যাভেন একটি বিশেষ প্রোগ্রাম/পরিষেবা, যার মূল উদ্দেশ্য হল প্রকল্প নির্মাণের প্রক্রিয়া পরিচালনা করা । এটি কেবল একটি সংরক্ষণাগার হিসাবে ডাউনলোড করা যেতে পারে এবং যেকোনো ডিরেক্টরিতে আনপ্যাক করা যেতে পারে। এর জন্য আপনার কোন বিশেষ ইনস্টলার লাগবে না।

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

ম্যাভেনের একটি বিশেষ সংগ্রহস্থল (ডিরেক্টরি/ফোল্ডার) রয়েছে যেখানে এটি লাইব্রেরিগুলি সংরক্ষণ করে যা এটি প্রকল্প তৈরি করার সময় ব্যবহার করে। আপনাকে ডিস্কে কিছু ফোল্ডার নির্বাচন করতে হবে এবং এটি একটি সংগ্রহস্থল হিসাবে বরাদ্দ করতে হবে।

আরেকটি আকর্ষণীয় বিষয় হল সমস্ত লাইব্রেরির জন্য একটি গ্লোবাল মাভেন সংগ্রহস্থলের উপস্থিতি, তবে আমরা এই বিষয়ে একটু পরে কথা বলব।

1.3 Maven ডাউনলোড এবং ইনস্টল করুন

Maven এর একটি অফিসিয়াল সাইট maven.apache.org আছে । প্রকল্পে প্রচুর ডকুমেন্টেশন রয়েছে, তাই আপনার যদি কোন অসুবিধা বা অতিরিক্ত প্রশ্ন থাকে - আসুন, লজ্জা পাবেন না।

এছাড়াও ডাউনলোড পৃষ্ঠায় ( https://maven.apache.org/download.cgi ) আপনি ম্যাভেন সংরক্ষণাগার (apache-maven-3.8.5-bin.zip) ডাউনলোড করতে পারেন। আনপ্যাক করা সংরক্ষণাগারটি প্রায় 10 MB সময় নেবে, যদিও স্থানীয় ম্যাভেন সংগ্রহস্থলের জন্য শেষ পর্যন্ত কয়েকশ মেগাবাইট মেমরির প্রয়োজন হবে।

Maven জাভাতে লেখা এবং কমপক্ষে সংস্করণ 7 এর JRE প্রয়োজন, সেইসাথে সংজ্ঞায়িত JAVA_HOME এনভায়রনমেন্ট ভেরিয়েবল।

শুধু আপনার কম্পিউটারে Maven-এর জন্য একটি ফোল্ডার তৈরি করুন, উদাহরণস্বরূপ, d:\devtools , এবং এতে Maven দিয়ে আর্কাইভটি বের করুন। ফলস্বরূপ, আপনার d:\devtools\maven\bin এর মতো একটি ফোল্ডার পাওয়া উচিত , যেখানে প্রকল্পের প্রধান বাইনারিগুলি অবস্থিত হবে।

1.4 এনভায়রনমেন্ট ভেরিয়েবল

এর পরে, আপনাকে আনপ্যাক করা আর্কাইভ থেকে PATH এনভায়রনমেন্ট ভেরিয়েবলে বিন ফোল্ডারে পাথ যোগ করতে হবে।

Windows 10-এ পরিবেশ পরিবর্তনশীল সেট করতে, আপনাকে কন্ট্রোল প্যানেল - সিস্টেম - অ্যাডভান্সড সিস্টেম সেটিংসে যেতে হবে। তারপর "এনভায়রনমেন্ট ভেরিয়েবলস" এ ক্লিক করুন, PATH খুঁজুন এবং "সম্পাদনা" নির্বাচন করুন, তারপর লাইনের শেষে d:\devtools\maven\bin যোগ করুন। মনোযোগ দিন, পথটি অবশ্যই বিন ফোল্ডারে নিয়ে যাবে।

একটি ইউনিক্স-ভিত্তিক ওএস-এ, কনসোল কমান্ডের সাথে পরিবেশ পরিবর্তনশীল যোগ করা যেতে পারে:

export PATH=/opt/apache-maven-3.8.5/bin:$PATH

আপনি যদি সবকিছু সঠিকভাবে করেন তবে কনসোলে আপনাকে কমান্ডটি টাইপ করতে হবে: "mvn -v"। উত্তরে, আপনি এরকম কিছু দেখতে পাবেন:

C:\Users\Zapp>mvn -v
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 15:51:28+0200)
Maven home: T:\apache-maven-3.0.5\bin\..
Java version: 1.8.0_65, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_65\jre
Default locale: en_US, platform encoding: Cp1251
OS name: "windows 7", version: "6.1", arch: "amd64", family: "dos"

1.5 স্থানীয় মাভেন সংগ্রহস্থল

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

যদি এই ধরনের কোনো ফোল্ডার নির্দিষ্ট করা না থাকে, Maven বর্তমান ব্যবহারকারীর হোম ডিরেক্টরিতে এটি তৈরি করবে। আমার ডিরেক্টরি হল: C:\Users\Zapp\.m2

ফোল্ডারটির একটি নির্দিষ্ট নাম “.m2” রয়েছে। যদিও এটি লিনাক্স ব্যবহারকারীদের ভয় দেখায় না - সেখানে এটি বিভিন্ন "রিপোজিটরি" এবং / অথবা পরিষেবা তথ্যের অন্য কোনো স্টোরেজ নামকরণের জন্য একটি মোটামুটি সাধারণ পদ্ধতি।

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

3.5 সংস্করণের পূর্বে Maven-এর জন্য M2_HOME নামক একটি এনভায়রনমেন্ট ভেরিয়েবলের প্রয়োজন ছিল, কিন্তু এটি আর প্রয়োজনীয় নয়।

আপনি লিঙ্কটিতে ম্যাভেন কনফিগার করার বিষয়ে আরও পড়তে পারেন: https://maven.apache.org/configure.html