কেন প্যাকেজ এবং মডিউলগুলি জাভা 9-এ পৃথক ধারণা?


21

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

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

কেন বিদ্যমান ধারণাটি বাড়ানোর পরিবর্তে নতুন ধারণা চালু করবেন?


জেএসআর 376 : প্রজেক্ট জিগসের মধ্যে "জাভা প্ল্যাটফর্ম মডিউল সিস্টেম" প্রয়োগ করা হয়েছে

এসওটিএমএস অনুসারে

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

জেএলএস সাবধানে কোনও প্যাকেজ কী তা নির্ধারণ করতে এড়িয়ে চলে । উইকিপিডিয়া থেকে :

একটি জাভা প্যাকেজ হল জাভাতে মডিউলার প্রোগ্রামিং সরবরাহ করার জন্য, মডুলার মডিউলগুলির মতো নেমস্পেসে জাভা ক্লাসগুলি সংগঠিত করার একটি কৌশল।

আমি জানি যে উইকিপিডিয়া উদ্ধৃত করা একটি খারাপ অভ্যাস, তবে এটি সাধারণ বোঝার প্রতিফলন ঘটায়। মডুলার প্রোগ্রামিং এন্ট্রি থেকে :

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


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

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

1
আমি প্রশ্ন আরও স্পষ্ট করতে চাই। তবে এটির কোন অংশটি আপনি অযোগ্য পরিবর্তনযোগ্য বলে মনে করেন তা আমার বুঝতে হবে। যখন আমি মনে করি একটি অংশ আছে।
ব্যবহারকারী 2418306

আহ, আমি বিভ্রান্তি বুঝতে পেরেছি। আমার মনে প্রশ্ন # 1 হয় জবাবদিহি (যে উত্তর হচ্ছে "হ্যাঁ, কিন্তু কোন" - যা যেখানে # 3 আসে)। আমি # 3 এর সাথে সম্মত, স্পষ্টতই জাভা কোনও ভাষার কীওয়ার্ডের package/ কী / মানে কী তা পরিবর্তন করতে পারে না বা তারা জেআরই তে (আসুন এটির মুখোমুখি, বেশ ভয়ঙ্কর) ক্লাসপাথ সিস্টেম (গুলি) তে পরিবর্তন করতে যাচ্ছেন না। প্রশ্ন # 2 আমার মনে হয় মূলত মতামত-ভিত্তিক (এটি জবাবদিহিযোগ্য তবে আমার উত্তর এবং অন্য কারওর মধ্যে পৃথক হতে পারে এবং আমাদের উভয়ই অগত্যা ভুল হবে না)।
টেরোসোরাসগুলি

1
সামনে একটি পরিষ্কার প্রশ্ন জিজ্ঞাসা করার চেষ্টা করুন, তারপরে সমর্থনকারী উপাদান সরবরাহ করুন।
জে এলস্টন

উত্তর:


22

ধারণা একটি মডিউল যে ধারণার ইনস্ট্যান্স থেকে আলাদা।

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

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

ওএসজিআই 1998 সালে "বান্ডিল" ধারণার মাধ্যমে মোতায়েনযোগ্য মডিউলগুলির অভাবকে মোকাবেলা করেছিলেন। এগুলি শারীরিকভাবে জেআর ফাইলগুলি এবং সেগুলিতে প্যাকেজ রয়েছে তবে ওএসজিআই সেই স্তরে এনক্যাপসুলেশন এবং চুক্তিগুলি সমর্থন করার জন্য একটি রানটাইম সিস্টেমের সাথে অতিরিক্ত মেটাডেটা সংজ্ঞায়িত করে।

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

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

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


প্যাকেজ আপনার মডিউলটির সংজ্ঞা পূরণ করতে পারে না। দুর্বল এনক্যাপসুলেশন এবং অন্যান্য প্যাকেজগুলিকে একত্রিত করার এবং তাদের দৃশ্যমানতা সংশোধন করার উপায়ের অভাবের কারণে। ক্লাসে নেস্টেড ক্লাস বা ক্ষেত্র থাকতে পারে। পদ্ধতিগুলি ক্লোজারগুলি ধারণ করতে পারে বা অন্য পদ্ধতিগুলিতে কল করতে পারে। প্যাকেজগুলি অন্যান্য প্যাকেজগুলির সাথে "যোগাযোগ" করতে পারে না।
ব্যবহারকারী 2418306

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

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

আমি অস্বীকার করব না যে প্যাকেজগুলিতে তথ্য গোপন রয়েছে । আমি বললাম যে এটি যথেষ্ট নয়। importকয়েক প্যাকেজ করতে পারেন। তবে প্রথম শ্রেণির নাগরিক হিসাবে প্যাকেজ গঠনের কোনও উপায় নেই। এই ত্রুটিগুলি (এবং
ওএসজির

জাভা 9 মডিউলগুলি মডিউল নয় কেন আপনি বিশদভাবে বলতে পারেন ?
ব্যবহারকারী 2418306

10

একটি উত্তরে আমাকে বিপত্তি দেওয়া যাক, যদিও এর বেশিরভাগটি অনুমান / বিভাজন কেশ / রেটিং ইত্যাদি হতে পারে though

তারা একই জিনিস? ভাল, হ্যাঁ এবং না

"জাভা 9 তে মডুলারিটি" সম্পর্কে এই জাভাওয়ার্ল্ড নিবন্ধ থেকে :

একটি মডুলার সমাধান হিসাবে প্যাকেজগুলি

প্যাকেজগুলি জাভা প্রোগ্রামিং ল্যান্ডস্কেপে বিমূর্ততার একটি স্তর যুক্ত করার চেষ্টা করে। তারা অনন্য কোডিং নেমস্পেস এবং কনফিগারেশন প্রসঙ্গের সুবিধাদি সরবরাহ করে। তবে দুঃখের বিষয়, প্যাকেজ কনভেনশনগুলি সহজেই সংঘবদ্ধ হয় এবং ঘন ঘন বিপজ্জনক সংকলন-যুগলগুলির পরিবেশের দিকে নিয়ে যায়।

হিসাবে @ user2418306 (ওপি) hinted, " মডিউল প্যাকেজ অধিকার সম্পন্ন করা হয় " । মডিউল এবং জাভা প্যাকেজ (জাভা 9, স্পষ্টত হিসাবে) হয় (যেমন ওপি জিজ্ঞেস) শব্দার্থগতভাবে একই জিনিস। এটি হ'ল, তারা অন্যান্য মেটাডেটা সহ প্রি-সংকলিত জেভিএম বাইটকোডের সংগ্রহ - মূলত তারা গ্রন্থাগার

আচ্ছা পার্থক্য কি?

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

জার ফাইলগুলি কি যথেষ্ট পরিমাণে মডুলার নয়?

জেআর ফাইলগুলি এবং মোতায়েনের পরিবেশ যেখানে তারা পরিচালনা করে তা অন্যথায় উপলভ্য বহু লিগ্যাসি মোতায়েন কনভেনশনগুলিতে ব্যাপক উন্নতি করে। তবে জেআর ফাইলগুলির একটি খুব কম ব্যবহৃত সংস্করণ নম্বর বাদে কোন অন্তর্গত স্বাতন্ত্র্য নেই, যা .jar ম্যানিফেস্টে লুকানো থাকে। JAR ফাইল এবং alচ্ছিক ম্যানিফেস্ট জাভা রানটাইম পরিবেশের মধ্যে মডুলারিটি কনভেনশন হিসাবে ব্যবহৃত হয় না। সুতরাং ফাইলের ক্লাসগুলির প্যাকেজের নাম এবং শ্রেণিপথে তাদের অংশগ্রহণ হ'ল জেআর কাঠামোর একমাত্র অংশ যা রানটাইম পরিবেশকে মডিউলারিটি ধার দেয়।


অন্যান্য ভাষা / পরিবেশ ইত্যাদির সম্পর্কে একটি ছদ্মবেশ

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

নির্ভরতা ব্যবস্থাপনা:

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

এখন ভবিষ্যতের বিষয়ে কথা বলার মতো যেন আমি সেখানে এসেছি

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


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


1
নিবন্ধটি কেবলমাত্র 1 বছরের পুরানো এবং ইতিমধ্যে অপ্রচলিত। এটি ভার্সন কীভাবে মডিউলটির মৌলিক বৈশিষ্ট্য তা তা উপস্থাপন করে। জিগস মডিউলগুলির সংস্করণ তথ্য থাকবে না। নির্ভরতা পরিচালনার ক্ষেত্রের কোনও কিছুই শেষ ব্যবহারকারীর জন্য পরিবর্তিত হবে না। বিল্ড সরঞ্জামগুলির জন্য জিনিসগুলি আসলে আরও শক্ত হয়ে উঠবে। যেহেতু তাদের সমান্তরাল বাস্তবতার সাপোর্ট করা দরকার classpathএবং modulepath। এবং ইউনিট পরীক্ষার সমর্থনে হুপসের মধ্য দিয়ে ঝাঁপ দাও। দুটি ধারণাগুলি সমান বলে মনে হয় কারণ তারা জিনিস সংগ্রহের প্রতিনিধিত্ব করে প্লাস মেটাডেটা আমার পক্ষে গ্রহণের পক্ষে খুব সাহসী। প্লাস মিডওয়েতে আপনি হঠাৎ প্যাকেজের জন্য জারটি প্রতিস্থাপন করেছেন।
ব্যবহারকারী 2418306

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

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

প্রশ্নের উত্তর হ্যাঁ এবং না হতে পারে না। দুটি ধারণাগুলি শব্দার্থগতভাবে সমতুল্য বা না হয়। দয়া করে আমার মন্তব্যগুলি লবোটমাইজ করবেন না এবং আসল প্রশ্নে ফিরে আসবেন না। কোনও ভাষার কি উভয় ধারণা দরকার বা এটি জাভা উত্তরাধিকার নির্দিষ্ট সমস্যা? আপনার যদি স্পষ্টির প্রয়োজন হয় তবে আমি সাহায্য করে খুশি।
ব্যবহারকারী 2418306
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.