একটি জাভা প্রকল্পের জন্য ভ্যাগ্র্যান্ট: আপনার ভিএম বা হোস্টে সংকলন করা উচিত?


92

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

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

কিছু জিনিস আমি ইতিমধ্যে ভেবেছি:

কেন ভিএম সংকলন

  • হোস্টে সংকলন করা থাকলে, জাভা হ'ল ইনস্টল করার জন্য আরও একটি সফ্টওয়্যার
  • হোস্টে সংকলন করা থাকলে হোস্টের জাভা সংস্করণটি অবশ্যই ভিএম-এর সাথে ম্যানুয়ালি আপ টু ডেট রাখতে হবে
  • হোস্টের সম্পর্কিত জাভা সংস্করণটি অনুপলব্ধ হতে পারে (ম্যাকের উপর বলুন)

ভিএম-তে আইডিই কেন?

  • পরিবেশ এবং IDE এর মধ্যে শক্ত সংহতকরণ, অ্যাপ্লিকেশনটি চালানোর জন্য শর্টকাট ব্যবহার করতে পারে
  • দূরবর্তী ডিবাগিং ছাড়াই জাভা অ্যাপ্লিকেশনগুলির জন্য ডিবাগারকে সংযুক্ত করতে পারেন (এক ধাপে রান / ডিবাগ)

হোস্ট কেন সংকলন

  • দ্রুত বার সংকলন
  • যতটা সম্ভব প্রোডাকশন দেখতে ভিএমকে কাছে রাখতে চান

হোস্টে আইডিই কেন আছে

  • হোস্টের কোড সম্পাদনা করা এবং এটি ভিএম-তে চালানো অসচেতন কনভেনশন
  • আরও ভাল ইউআই পারফরম্যান্স (এক্স ফরোয়ার্ডিং এবং ভিএনসি ধীর গতিতে)

আপনার চিন্তাভাবনাগুলি কী: আমার ভিডিএম বা হোস্টের ভিতরে থেকে আমার আইডিই চালানো উচিত? আমার ভিএম বা হোস্টের ভিতরে থেকে সংকলন করা উচিত?

উত্তর:


61

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

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

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

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

আশা করি এটি জাভা বিকাশকারীদের যারা ভ্যাগ্রান্টে আগ্রহী তারা এটি কীভাবে ব্যবহার করবেন সে সম্পর্কে কিছু প্রসঙ্গ দেয়।


উইন্ডোজ ওএস হোস্ট এবং লিনাক্স ওএস ভিএম-এর জন্য, এক্স 11 এর মাধ্যমে হোস্টে (উইন্ডোজ) চলমান লিনাক্স ভিএম-তে ইন্টেলিজ চালানো সম্পর্কে আপনার কী ধারণা?
কেভিন মেরেডিথ

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

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

4
আমি কোনও অতিথির ভিএম এর অভ্যন্তরে ইন্টেলিজিকে পরীক্ষা করে দেখিনি (এবং অতিথির স্বাচ্ছন্দ্যের সাথে কোনও সহকর্মীর অভিজ্ঞতা নাও দিতে পারি)। যাইহোক, আমি 'ভ্যাগ্রান্ট - আপ এবং রানিং'-এ নিম্নলিখিতটি পড়েছি: Shared folders incur a heavy performance penalty within the virtual machine when there is heavy I/ O, so they should only be used for source files. Any compilation step, database files, and so on should be done outside the shared folder filesystem inside the guest filesystem itself.এই বইয়ের বিবৃতি (ভ্যাগ্র্যান্ট স্রষ্টা দ্বারা লিখিত) হোস্ট ভিএম-র সংকলনের বিরুদ্ধে তর্ক করছে বলে মনে হচ্ছে, না?
কেভিন মেরেডিথ

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

3

আমি গত বছরের এই বিষয়টিতে আগ্রহী ছিলাম :)

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

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

config.vm.provider "ভার্চুয়ালবক্স" করুন | ভিবি | vb.gui = সত্য শেষ

ভাগ করা ফোল্ডার পারফরম্যান্সগুলি গতি বাড়ানোর পরিবর্তে আমি আরএসসিএনসি ব্যবহার করতে পরামর্শ দিই: config.vm.synced_folder "./git", "/ home / vagrant / git", টাইপ করুন: "rsync", rsync__exclude: ".git /" এতে হোস্টে উত্স কোডটি সম্পাদিত হয় এবং তারপরে অতিথির কাছে আরএসসিএন-এড হয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.