কেন জাভা বিল্ড ল্যাঙ্গুয়েজ হিসাবে ব্যবহৃত হয় না?


24

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


7
আপনার কাছে "বিল্ডিং ভাষাগুলির জন্য সাধারণ উদ্দেশ্যগুলি কেন ভাষা ব্যবহার করা হয় না" - এই প্রশ্নে কিছুটা আকর্ষণীয় হতে পারে - মানে, সি কোনও বিল্ড ল্যাঙ্গুয়েজ নয়। আমি জাভাতে একটি একক। জাভা ফাইল সংকলনের

8
এটি সম্ভবত "ডিএসএলগুলির সাথে কেন বিরক্ত করবেন?" হিসাবে সাধারণীকরণ করা যেতে পারে?
হতাশ

1
আরও ভাল প্রশ্ন হতে পারে; আইডিই / সংকলক / সরঞ্জামগুলি কেন এত খারাপ যে বিল্ড সরঞ্জামগুলি প্রথম স্থানে প্রয়োজন।
ব্রেন্ডন

6
@ ব্রেন্ডান এটি একটি প্রশ্নবিদ্ধ নয় যেহেতু বিল্ড টুলস এবং আইডিই বিভিন্ন উদ্দেশ্য করে।
জেভেন্টিং

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

উত্তর:


21

একটি নির্দিষ্ট উদ্দেশ্যে নির্দিষ্ট সরঞ্জাম

  • শব্দব্যবহার

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

  • অসুবিধা

    সাধারণ উদ্দেশ্য ভাষা কঠিন। ঠিক আছে, আমি মনে করি না প্রোগ্রামিং শক্ত এবং কারও দ্বারা বাছাই করা যায় না, তবে মুল্যটি হ'ল: আপনার বিল্ড ইঞ্জিনিয়ারটি অবশ্যই আপনার প্রোগ্রামার নয়!

  • উদ্দেশ্য

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

    • শাখা এবং শর্তাবলী পৃথক কনফিগারেশন, পরিবেশ, ইত্যাদি পরিচালনা করতে ...
    • আপনার পরিবেশ থেকে ডেটা আহরণের জন্য নির্দেশাবলীর একটি সেট,
    • সরবরাহযোগ্য উত্পাদন করার জন্য নির্দেশের একটি সেট।

    আপনার আসলে বেশি কিছু দরকার নেই।

আপনার বিল্ড সিস্টেমটি মনে হচ্ছে এটি বিরক্তিকর যখন আপনি মনে করেন যে এটির পরে বিশেষ বিশেষ ব্যবহারের ক্ষেত্রে এটি যথেষ্ট নমনীয় নয় তবে এটি সম্ভবত বেশিরভাগ মানুষের বিকল্পের চেয়ে অনেক ভাল better

সম্ভবত এই কারণেই যে লোকেরা বেশিরভাগ প্রোগ্রামযোগ্য অ্যানসেসের চেয়ে বেশি ঘোষণাযোগ্য বিল্ড সিস্টেম পছন্দ করে তাদের মধ্যে একটি মেরুক্পতা রয়েছে: আমার ধারণা, কোনও বিকাশকারী বাক্সের বাইরে বেরোনোর ​​উপায় অনুসন্ধান করার প্রাকৃতিক প্রবণতা থাকতে পারে।

অপেক্ষা করুন, আমাদের কি আসলেই কোনও সরঞ্জামের প্রয়োজন?

আরেকটি সম্পর্কিত প্রশ্ন হবে: আমাদের কি সত্যই একটি বিল্ড সরঞ্জামের প্রয়োজন? এগুলি যে সমস্ত ভাষায় বিদ্যমান তা এই চিহ্ন নয় যে তারা এমন একটি শূন্যস্থান পূরণ করে যা সেখানে প্রথম স্থানে থাকা উচিত নয়?

কিছু ভাষার অগত্যা একটি বিল্ড সরঞ্জাম প্রয়োজন হয় না। উদাহরণস্বরূপ, বেশিরভাগ স্ক্রিপ্টিং ভাষার কোনও প্রয়োজন হয় না এবং লোডের সময় সমাধান হয়। বা যান, যাঁর সংকলকটি আপনার জন্য সমস্ত কিছু পরিচালনা করবে, যা একটি দুর্দান্ত পাল্টা: যদি সিসিএসের মতো সংকলক হঠাৎ করে একগুচ্ছ পতাকা, একটি লিঙ্কার এবং একটি মেকফিলের সমস্ত কিছু একসাথে মরতে না পারে? বা জাভ্যাক যদি তাকে বলার জন্য একটি বিল্ট.এক্সএমএল বা পম.এক্সএমএল প্রয়োজন না? নির্ভরতা চূড়ান্ত কর্মসূচির একটি অংশ হওয়ায় নির্ভরতা পরিচালনা কি সরাসরি ভাষার নিজস্ব সরঞ্জামগুলির অংশ হওয়া উচিত নয়?

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

আমি মনে করি না যে আপনি আপনার প্রোগ্রামগুলি তৈরি করতে যে ভাষাটি ব্যবহার করেন তা স্টেই ইস্যু। আপনি প্রোগ্রামটি ব্যবহার করার ভাষা এবং এটির মূল প্ল্যাটফর্ম এবং সরঞ্জামাদি যেটি গুরুত্বপূর্ণ তা হ'ল এবং আমরা এখনও এটির দিকে এগিয়ে চলেছি।


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

এটি একটি বিল্ড টুল। শুধু এটি আলিঙ্গন করতে শিখুন এবং এটি যুদ্ধ করবেন না। এটা হেরে যাওয়া যুদ্ধ। বা কমপক্ষে একটি খুব দীর্ঘ এক।


সত্যিই আপনার বাস্তববাদ মত। আমার প্রশ্নটি কৌতূহলের বাইরে। আমি মাভেন (অতীতে মেক এবং পিঁপড়া ব্যবহার করে) ব্যবহার করি এবং এটি "কালো যাদু" করে যা কখনও কখনও ভাল এবং কখনও কখনও খারাপ হয়। তবে এটি এখনও যাদু।
ভ্যানোলো

1
"বা জাভ্যাক যদি তাকে বলার জন্য বিল্ট.এক্সএমএল বা পম.এক্সএমএল প্রয়োজন না?" - হি। এটা না এবং কখনও করেনি।
ব্যবহারকারী 253751

@ মিমিবিস: এটি বিতর্কযোগ্য। আমি কেবলমাত্র জাভাক দিয়ে অফিসে আমার প্রকল্পগুলি তৈরি করতে সত্যিই উপভোগ করব না :) এটি অবশ্যই মেকফাইল বা শেল স্ক্রিপ্টের সাথে খুব সামান্য পরিমাণে আঠালো প্রয়োজন বা জিনিসগুলিকে একসাথে রাখার জন্য খুব কম শেল এলিয়াসের প্রয়োজন। বা একটি ফোল্ডারে সমস্ত কিছু এবং রেপোতে সমস্ত ডেপু সহ একটি বিশাল প্রোগ্রাম। আমি চাই এমন কিছু নয়! :) তবে এটি পুরোপুরি অন্য বিতর্ক, ওপির প্রশ্নের সাথে সম্পর্কিত নয়।
হাইলেম

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

@ সেবাস্তিয়ানআরডেল তাই তৃতীয় ভাষা প্রবর্তন করে কীভাবে সমস্যাটি আরও সহজ হয় ? আপনার পক্ষে আরও ভাল কাজ করে এমন ভাষা চয়ন করুন। (এবং অবশ্যই, আপনার যদি তৃতীয় ভাষার প্রয়োজন হয় তবে
জাভাও

21

Javaহয় একটি অনুজ্ঞাসূচক ভাষা, Ant, Maven, ইত্যাদি হয় ঘোষণামূলক ভাষাসমূহ:

আমরা পার্থক্যটি নিম্নলিখিত হিসাবে সংজ্ঞায়িত করতে পারি:

  • অত্যাবশ্যক প্রোগ্রামিং: "মেশিন" কে কীভাবে কিছু করতে হবে তা বলা এবং ফলস্বরূপ আপনি যা করতে চান তা ঘটবে।
  • ডিক্লারেটিভ প্রোগ্রামিং: "মেশিন" কে আপনি কী হতে চান তা জানান এবং এটি কীভাবে করা যায় তা কম্পিউটারকে জানাতে দিন। 1

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

বিল্ডিং দৃশ্যের ক্ষেত্রে ঘোষিত ভাষাগুলি আরও উপযুক্ত বলে মনে হতে পারে, যেহেতু বিল্ড টাস্কগুলি সাধারণত সর্বত্র একই থাকে এবং এটি পুরো আকারের কোড ফর্মের চেয়ে ফর্মটিতে আরও রক্ষণাবেক্ষণযোগ্য এবং পঠনযোগ্য বলে মনে করা হয়।


3
কমপক্ষে একটি বিল্ড সিস্টেম রয়েছে যা যদিও একটি আবশ্যক ভাষা ব্যবহার করে। স্ক্যানগুলি পাইথন ব্যবহার করে।
ব্যবহারকারী16764

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

2
@Lee: প্রায় সব বিল্ড সরঞ্জাম জাভা বিশ্বের ব্যবহৃত (অ্যান্ট, ম্যাভেন, Gradle, SBT, ...) এছাড়াও সাধারণত (Rake, Buildr বা Scons এর ব্যতিক্রম যা দিয়ে জেভিএম চালানো এর পারেন , কিন্তু না আছে জেভিএম চালানোর জন্য )।
জার্গ ডব্লু মিট্টাগ ২

6
@ ভ্যানোলো "বেশিরভাগ মানুষ সত্যই কি এন্ট / ম্যাভেন / মেক" পছন্দ করেন না? এটা সাহসী বক্তব্য!
বেন থারলি

1
@ বেনথর্লি আমি লোকেরা পছন্দ করতে পছন্দ করি, পিপড়া তৈরি করা হয়েছিল কেন? এবং যদি পিঁপড়া পছন্দ করা হয়, কেন খালি ছিল? এবং এখন মানুষ কেন গ্র্যাডল ব্যবহার করছে? তবে আমি একমত যে এটি একটি সাহসী বক্তব্য, এবং এটি কেবল কয়েক দশটি জাভা বিকাশকারী "
বৌদ্ধিক

4

আপনি যদি একটি সাধারণ বিল্ড সিস্টেমের বৈশিষ্ট্যগুলি দেখতে পান তবে:

  1. প্রচুর ডেটা: নাম, সুইচ, সেটিংস, কনফিগারেশন আইটেম, স্ট্রিং ইত্যাদি,
  2. পরিবেশের সাথে প্রচুর মিথস্ক্রিয়া: কমান্ড, পরিবেশের ভেরিয়েবল
  3. অপেক্ষাকৃত সরল "বিল্ড ইঞ্জিন" হ্যান্ডলিং নির্ভরতা, থ্রেডিং, লগিং ইত্যাদি

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

বিল্ড ইঞ্জিনের বিভিন্ন বৈশিষ্ট্যগুলি ট্রিগার করতে, আপনার এক্সএমএল-এর কিছু ডেটা ব্যাখ্যামূলক ভাষা হিসাবে বিবেচনা করার জন্যও আপনি দরকারী বলে মনে করেন। আপনি কিছু ম্যাক্রো ব্যাখ্যা করতে পারেন বা ডেটাতে স্ট্রিং বিকল্পগুলি সম্পাদন করতে পারেন।

অন্য কথায়, আপনি মেক, বা পিঁপড়া, বা রেক, বা এমস বিল্ড দিয়ে শেষ করবেন। এটি ভালভাবে কাজ করে এমনগুলির জন্য একটি আবশ্যক ভাষা এবং আপনি যা করতে চান তা বর্ণনা করার জন্য ডেটা স্ট্রাকচার, এখন সাধারণত এক্সএমএলে।


2

এই ক্ষেত্রে জাভা / সি ++ / সি # ব্যবহারের বিরুদ্ধে অনেকগুলি কারণ গণনা করা হয়।

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

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

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


0

প্রকৃতপক্ষে! লোকেরা প্রায়শই (শুরুতে) ভাবার চেয়ে জটিল যে সমস্যার জন্য একটি শক্তিশালী এবং অভিব্যক্তিপূর্ণ ভাষা ব্যবহার করবেন না কেন ? বিশেষত যখন সমস্যার মুখোমুখি লোকেরা ইতিমধ্যে এই জাতীয় ভাষার সাথে দক্ষ হয়। (বিল্ডিং প্রোগ্রামারদের নিজস্ব সমস্যা এবং প্রোগ্রামারদের দ্বারা সেরা সমাধান করা))

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

অস্বীকৃতি : এই উত্তরে আমি আইভান্টকে প্রচার করছি , আমি তৈরি করছি এমন একটি বিল্ড সিস্টেম। তবে যেহেতু এটি একটি মতামতপূর্ণ আলোচনা তাই আমি নিশ্চিত যে এটি ঠিক আছে।

আমি জাভা (শক্তি এবং অভিব্যক্তি) বা আইভেন্টের বিশেষত কোনও উপকারিতা সম্পর্কে বিস্তারিত বলব না। আপনি যদি আগ্রহী হন তবে আপনি ivan পাতায় আরও পড়তে পারেন ।

পরিবর্তে আমি বিবেচনা করব যে কেন জাভা (এবং অন্যান্য জিপিএল) এত সহজেই বিল্ডিংয়ের পক্ষে অনুপযুক্ত হিসাবে বরখাস্ত হয়। এখানে অনেক উত্তর এবং মন্তব্য যেমন চিন্তাভাবনার ভাল উদাহরণ। আসুন কয়েকটি সাধারণ যুক্তি বিবেচনা করুন:

"জাভা অপরিহার্য, তবে বিল্ডগুলি একটি ঘোষণামূলক উপায়ে সেরা সংজ্ঞা দেওয়া হয়" , তারা বলতে পারে।

সত্য। কোনও অভ্যন্তরীণ ডিএসএল-এর ধাতব ভাষা হিসাবে কোনও ভাষা ব্যবহার করার সময় , আসলে কী গণনা করা হয় তা হল এর বাক্য গঠন । এমনকি জাভা এর মতো একটি অত্যাবশ্যকীয় ভাষাও ঘোষণামূলক বলে চালাকি করা যেতে পারে। যদি এটি ঘোষিত এবং ঘোষিত বোধ করে তবে তা (ব্যবহারিক উদ্দেশ্যে) ঘোষণামূলক। উদাহরণ স্বরূপ:

JacocoTargetsOfJavaModules.with()
    .jacocoWithDeps(jacoco(), modules.asmAll.mainArtifact())
    .antJars(TestedIwantDependencies.antJar(),
            TestedIwantDependencies.antLauncherJar())
    .modules(interestingModules).end().jacocoReport(name)

এটি আইওয়ান্টের ডেমো প্রকল্পের একটি বাস্তব উদাহরণ ।

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

"জাভা ভার্জোজ"

হ্যাঁ, জাভা কোড প্রচুর আছে ভার্বোজ। তবে আবার, এটি ভাষা নয়, আপনি এটি কীভাবে ব্যবহার করেন। যদি কোনও বাস্তবায়ন ভার্বোজ হয় তবে এটি একটি দুর্দান্ত বিমূর্তির পিছনে সজ্জিত করুন। অনেক জিপিএল এর জন্য পর্যাপ্ত প্রক্রিয়া সরবরাহ করে।

এক্সএমএলে লিখিত উপরের জাভা স্নিপেটটি কেবল কল্পনা করুন। কোণ বন্ধনী দিয়ে প্রথম বন্ধনী প্রতিস্থাপন করুন এবং তাদের চারপাশে সরান move এবং তারপরে ক্লোজিং ট্যাগ হিসাবে প্রতিটি কীওয়ার্ডের নকল করুন ! হিসেবে জাভা সিনট্যাক্স হয় না বাগাড়ম্বরপূর্ণ।

(আমি জানি, এক্সএমএল এর সাথে তুলনা করা শিশুর কাছ থেকে মিছরি নেওয়ার মতো, তবে এতগুলি বিল্ড কেবল এক্সএমএলে সংজ্ঞায়িত হয় to)

"আপনাকে নিজের বিল্ড স্ক্রিপ্টটি সংকলন করতে হবে"

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

"জাভা বয়লারপ্লেট আছে"

সত্য। আপনাকে ক্লাস আমদানি করতে হবে, আপনাকে "পাবলিক", "ক্লাস" ইত্যাদি উল্লেখ করতে হবে। এবং এখানে সাধারণ বহিরাগত ডিএসএল প্রাথমিক প্রাথমিক জয়ের স্কোর করে।

এবং যদি আপনার প্রকল্পটি এত তুচ্ছ হয় যে এই বয়লারপ্লেটটি উল্লেখযোগ্য, অভিনন্দন। আপনার সমস্যাটি একটি কঠিন সমস্যা নয় এবং আপনি কীভাবে এটি সমাধান করবেন তা সত্যিই গুরুত্বপূর্ণ নয়।

সংকলন, কভারেজ রিপোর্ট এবং প্যাকেজিংয়ের চেয়ে অনেক প্রকল্পের অনেক বেশি প্রয়োজন। যদি জাভার বয়লারপ্লেট গ্রাহকদের সমস্যার জন্য গ্রহণযোগ্য হয় তবে কেন সমস্যা তৈরি করবেন না? কেন অন্যের বাচ্চাদের জন্য জুতা তৈরি করবেন?


0

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

এটি সরাসরি জাভা দিয়ে করা হয়েছিল কিনা তা বিবেচনা করুন। বিল্ড টুলটি দেখতে পাবে যে একটি নির্ভরতা রয়েছে। এরপরে এটি অন্যান্য জাভা অ্যাপ্লিকেশনটি নীচে টানতে হবে এবং এর নির্ভরতা কি তা নির্ধারণ করার জন্য এটি চালানো উচিত। তবে মাভেনের জন্য এটি নির্ভরতা ঘোষণার দিকে সহজভাবে তাকান। মাভেন বিল্ড ফাইলটি স্বচ্ছ। একটি টিউরিং সম্পূর্ণ ভাষা অন্তর্নিহিতভাবে স্বচ্ছ নয় এবং তাই কিছু কারণে যেমন এটির জন্য নিকৃষ্ট হয়।


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

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

ব্যক্তিগতভাবে আমি ট্রানজিটিভ নির্ভরতা পছন্দ করি না। প্রায়শই তারা ক্লাসপথে (লাইব্রেরির একাধিক অসামঞ্জস্যপূর্ণ সংস্করণ) বিস্ময় সৃষ্টি করে। সে কারণেই মাভেনের বর্জন উপাদান রয়েছে তবে ঝামেলা কেবল এটির পক্ষে উপযুক্ত নয়। সুস্পষ্ট নির্ভরতা জীবনকে সহজ করে তোলে। তবুও, জাভা দিয়ে ট্রানজিটিভ নির্ভরতা প্রয়োগ করা যেতে পারে। আমি সম্পন্ন কিছু যে ভালো সঙ্গে আছে তোমাকে আমি অন্য প্রকল্পের বিল্ড সংজ্ঞা পুনঃব্যবহার দ্বারা।
ভিল ওইকারিনেন

@ উইলওইকারিনেন আমি বেশিরভাগ ক্ষেত্রেই আপনার সাথে একমত হই। আমি মনে করি এটি একটি টন ফোলাও কারণ যেহেতু আপনি যদি সেগুলি ব্যবহার না করেন তবে আরও নির্ভরতা টানতে কোনও অনুমান ব্যয় নেই। যাইহোক, এই উত্তরের প্রসঙ্গে আমি এই বৈশিষ্ট্যের মূল্য বা বুদ্ধি সম্পর্কে মন্তব্য করছি না তবে ডিএসএলের ব্যবহার এটি অর্জনে কীভাবে দরকারী।
জিমি জেমস 24'17

1
@ ভিলাইকাইকারিনেন আমি মনে করি আমরা এর শেষ প্রান্তে পৌঁছেছি তবে আমি কেবল স্পষ্ট করে বলতে চাই যে আমি পম / ম্যাভেন সম্পর্কে কথা বলছি না। এটি বিল্ড ডিএসএল-এর উদাহরণ তবে আমি এর বেশি ভাবি না। আমি এটি ভিক্ষুকভাবে ব্যবহার করি এবং আমি মনে করি এটি আটকানো। তবে পমকে কী প্রভাবশালী করা হয়েছে তা নির্ভরতা ঘোষণা। আমি বিল্ডারকে কিছুক্ষণ ব্যবহার করেছি এবং এটি নির্ভরতাগুলির জন্য পোম পড়ে তবে এটি সেগুলি বিল্ড স্পেসিফিকেশনের জন্য ব্যবহার করে না। এমন অনেকগুলি সরঞ্জাম রয়েছে যা জাভা ভিত্তিক নয় যা এই পোমটি বোঝে তবে এএফএআইএইসি, তাদের সমস্ত যত্নশীলতা নির্ভরতা।
জিমি জেমস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.