প্রকৃতপক্ষে! লোকেরা প্রায়শই (শুরুতে) ভাবার চেয়ে জটিল যে সমস্যার জন্য একটি শক্তিশালী এবং অভিব্যক্তিপূর্ণ ভাষা ব্যবহার করবেন না কেন ? বিশেষত যখন সমস্যার মুখোমুখি লোকেরা ইতিমধ্যে এই জাতীয় ভাষার সাথে দক্ষ হয়। (বিল্ডিং প্রোগ্রামারদের নিজস্ব সমস্যা এবং প্রোগ্রামারদের দ্বারা সেরা সমাধান করা))
আমি নিজেও এই প্রশ্নটি বহু বছর আগে জিজ্ঞাসা করেছি এবং সিদ্ধান্ত নিয়েছি যে জাভা বিল্ডগুলি সংজ্ঞায়িত করার জন্য বিশেষত জাভা প্রকল্পগুলির জন্য একটি ভাল ভাষা। এবং, ফলস্বরূপ, আমি এটি সম্পর্কে কিছু করা শুরু করি।
অস্বীকৃতি : এই উত্তরে আমি আইভান্টকে প্রচার করছি , আমি তৈরি করছি এমন একটি বিল্ড সিস্টেম। তবে যেহেতু এটি একটি মতামতপূর্ণ আলোচনা তাই আমি নিশ্চিত যে এটি ঠিক আছে।
আমি জাভা (শক্তি এবং অভিব্যক্তি) বা আইভেন্টের বিশেষত কোনও উপকারিতা সম্পর্কে বিস্তারিত বলব না। আপনি যদি আগ্রহী হন তবে আপনি ivan পাতায় আরও পড়তে পারেন ।
পরিবর্তে আমি বিবেচনা করব যে কেন জাভা (এবং অন্যান্য জিপিএল) এত সহজেই বিল্ডিংয়ের পক্ষে অনুপযুক্ত হিসাবে বরখাস্ত হয়। এখানে অনেক উত্তর এবং মন্তব্য যেমন চিন্তাভাবনার ভাল উদাহরণ। আসুন কয়েকটি সাধারণ যুক্তি বিবেচনা করুন:
"জাভা অপরিহার্য, তবে বিল্ডগুলি একটি ঘোষণামূলক উপায়ে সেরা সংজ্ঞা দেওয়া হয়" , তারা বলতে পারে।
সত্য। কোনও অভ্যন্তরীণ ডিএসএল-এর ধাতব ভাষা হিসাবে কোনও ভাষা ব্যবহার করার সময় , আসলে কী গণনা করা হয় তা হল এর বাক্য গঠন । এমনকি জাভা এর মতো একটি অত্যাবশ্যকীয় ভাষাও ঘোষণামূলক বলে চালাকি করা যেতে পারে। যদি এটি ঘোষিত এবং ঘোষিত বোধ করে তবে তা (ব্যবহারিক উদ্দেশ্যে) ঘোষণামূলক। উদাহরণ স্বরূপ:
JacocoTargetsOfJavaModules.with()
.jacocoWithDeps(jacoco(), modules.asmAll.mainArtifact())
.antJars(TestedIwantDependencies.antJar(),
TestedIwantDependencies.antLauncherJar())
.modules(interestingModules).end().jacocoReport(name)
এটি আইওয়ান্টের ডেমো প্রকল্পের একটি বাস্তব উদাহরণ ।
প্রকৃতপক্ষে, এটিকে এমন কিছু ভাবাপন্ন বিল্ড সিস্টেমের সাথে তুলনা করুন যা তাদের ব্যবহারকারীদের "পরীক্ষা" বা "সংকলন" এর মতো অপরিহার্য ক্রিয়াগুলির সাথে প্রকাশ করে। উপরোক্ত ঘোষণায় কেবল বিশেষ্য, কোনও ক্রিয়া নেই। সংকলন এবং পরীক্ষণ হ'ল আইভেন্ট দ্বারা স্পষ্টভাবে পরিচালিত কাজগুলি ব্যবহারকারীকে তিনি যে বিশেষ্যটি দিতে চান তা দেওয়ার জন্য। এটি ভাষা নয়। এটি আপনি এটি ব্যবহার কিভাবে।
"জাভা ভার্জোজ"
হ্যাঁ, জাভা কোড প্রচুর আছে ভার্বোজ। তবে আবার, এটি ভাষা নয়, আপনি এটি কীভাবে ব্যবহার করেন। যদি কোনও বাস্তবায়ন ভার্বোজ হয় তবে এটি একটি দুর্দান্ত বিমূর্তির পিছনে সজ্জিত করুন। অনেক জিপিএল এর জন্য পর্যাপ্ত প্রক্রিয়া সরবরাহ করে।
এক্সএমএলে লিখিত উপরের জাভা স্নিপেটটি কেবল কল্পনা করুন। কোণ বন্ধনী দিয়ে প্রথম বন্ধনী প্রতিস্থাপন করুন এবং তাদের চারপাশে সরান move এবং তারপরে ক্লোজিং ট্যাগ হিসাবে প্রতিটি কীওয়ার্ডের নকল করুন ! হিসেবে জাভা সিনট্যাক্স হয় না বাগাড়ম্বরপূর্ণ।
(আমি জানি, এক্সএমএল এর সাথে তুলনা করা শিশুর কাছ থেকে মিছরি নেওয়ার মতো, তবে এতগুলি বিল্ড কেবল এক্সএমএলে সংজ্ঞায়িত হয় to)
"আপনাকে নিজের বিল্ড স্ক্রিপ্টটি সংকলন করতে হবে"
এটি একটি বৈধ পয়েন্ট। তবুও, এটি সমাধান করা কেবল একটি ছোট প্রযুক্তিগত সমস্যা। আমি এটি বেনশেল বা অন্য কোনও অনুবাদক ব্যবহার করে সমাধান করতে পারতাম । পরিবর্তে, আমি এটিকে অন্য বিল্ড সমস্যা হিসাবে বিবেচনা করে এবং একটি সাধারণ শেল বা পিপীলিকা স্ক্রিপ্টের সাহায্যে আইওয়ান্টকে বুটস্ট্র্যাপিং করে সমাধান করেছি যা একটি সাধারণ জাভা বুটস্ট্রায়ার সংকলন করে এবং চালায়।
"জাভা বয়লারপ্লেট আছে"
সত্য। আপনাকে ক্লাস আমদানি করতে হবে, আপনাকে "পাবলিক", "ক্লাস" ইত্যাদি উল্লেখ করতে হবে। এবং এখানে সাধারণ বহিরাগত ডিএসএল প্রাথমিক প্রাথমিক জয়ের স্কোর করে।
এবং যদি আপনার প্রকল্পটি এত তুচ্ছ হয় যে এই বয়লারপ্লেটটি উল্লেখযোগ্য, অভিনন্দন। আপনার সমস্যাটি একটি কঠিন সমস্যা নয় এবং আপনি কীভাবে এটি সমাধান করবেন তা সত্যিই গুরুত্বপূর্ণ নয়।
সংকলন, কভারেজ রিপোর্ট এবং প্যাকেজিংয়ের চেয়ে অনেক প্রকল্পের অনেক বেশি প্রয়োজন। যদি জাভার বয়লারপ্লেট গ্রাহকদের সমস্যার জন্য গ্রহণযোগ্য হয় তবে কেন সমস্যা তৈরি করবেন না? কেন অন্যের বাচ্চাদের জন্য জুতা তৈরি করবেন?