অ্যান্ড্রয়েড এন জাভা 8 বৈশিষ্ট্য (জ্যাক সংকলক) এবং কোটলিন ইন্টারপ


98

আপডেট ৩. কটলিন অ্যান্ড্রয়েড ডেভেলপমেন্টের জন্য এখন সরকারীভাবে সমর্থিত । গুগল দ্বারা ইয়াএএএএএএএএএসস!

আপডেট 2 : দেখে মনে হচ্ছে জেটব্রেইনস দীর্ঘকাল ধরে অ্যান্ড্রয়েডের জন্য কোটলিনকে সমর্থন করার জন্য সত্যই প্রতিশ্রুতিবদ্ধ । আমি একজন খুশি কোটলিন ব্যবহারকারী :)।

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


=== অগ্রাহ্য স্টুফ নেক্সট ===

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

বর্তমান টুলচেইন ব্যবহার javac বা kotlinc :
javac ( .java-> .class) -> DX ( .class-> .dex)
kotlinc ( .kt-> .class) -> DX ( .class-> .dex)

নতুন জ্যাক টুলচেন:
জ্যাক ( .java-> .jack-> .dex)

আমি ধরে নিচ্ছি গুগল অ্যান্ড্রয়েড বিকাশের জন্য জ্যাককে ডিফল্ট টুলচেন করার দিকে এগিয়ে চলেছে। আপডেট: জ্যাক এখন হ্রাস করা হয়েছে । ইয়াস

আমার প্রশ্ন হ'ল ভবিষ্যতে এই অ্যান্ড্রয়েড বিকাশের একজন কোটলিন ব্যবহারকারী হিসাবে এই নতুন সরঞ্জামচয়নটি আমাকে কীভাবে প্রভাবিত করবে ? আমি কি "অতীতে আটকে" যাব?


4
(Kotlin_library (একাধিক * .kt) => জার) তাহলে জিল (জার => Jayce) তাহলে জ্যাক (অন্যান্য (অ অ্যান্ড্রয়েড হিসাবে অনুরূপ) (প্লেইন জাভা) বয়াম) আমদানি
Selvin

দস্তাবেজগুলি পড়া: "জ্যাক ব্যবহার করতে আপনাকে আলাদাভাবে কিছু করতে হবে না - গাছ বা আপনার প্রকল্পটি সংকলন করতে কেবল আপনার স্ট্যান্ডার্ড মেকফিল কমান্ডগুলি ব্যবহার করুন M. এম। এর জন্য জ্যাক ডিফল্ট অ্যান্ড্রয়েড বিল্ড টুলচেন" " - উত্স: Source.android.com/source/jack.html অবশ্যই কোনও টাইপ চালায় এবং তাদের অর্থ 'এন' নয় 'এম' ?
মার্ক কেইন

জ্যাক মারা গেছে, আনন্দ করুন: পি
এপিকপান্ডাফোরস

উত্তর:


63

দাবি অস্বীকার: আমি জ্যাক নিয়ে কাজ করি

এটি আপনাকে প্রভাবিত করবে না। কোটলিনের সংকলক জাভা 6 বাইটকোড তৈরি করে, যা জ্যাক / জিল কেবল সূক্ষ্ম আমদানি করতে পারে।


7
আপনি কি কিছু বিবরণ ভাগ করতে পারেন? :)
টিউডর লুকা

কিন্তু কোটলিন কি জ্যাকের পারফরম্যান্স অপটিমাইজেশনটি উপকৃত করতে পারবে? (কমপক্ষে একদিন) কারণ জ্যাকটি বেশ দুর্দান্ত
লাগছে

আমি অগ্রগামী লেখকের একটি মানদণ্ডের একটি ভিডিও উপস্থাপনা দেখেছি, কিছুটা
গুগল

আমরা কোটলিন স্টাডলিব সংযুক্ত করে অ্যান্ড্রয়েড প্রকল্প তৈরিতে কিছু অসুবিধা ভোগ করছি। জিল / জ্যাক-এ বাগের মতো দেখাচ্ছে। আপনি কি দয়া করে এটি দেখতে পারেন? কোড.google.com/p/android/issues/detail?id=196084
ইয়েনেক্স

4
এর অর্থ কি জিল জাভা 8 বাইটকোড গ্রহণ করে না? লাইব্রেরি মডিউল সম্পর্কে কি? যদি তারা .আর-তে সংকলিত হয় এবং জিলের দ্বারা আমদানি করা কি তারা জাভা 8 ব্যবহার করতে অক্ষম? অর্থাৎ জাভা নতুন বৈশিষ্ট্যগুলি কেবল অভ্যন্তরীণ প্রকল্পের জন্যই উপলব্ধ are
far.be

15

@ পাভেল দুদকা

জ্যাক - একটি সংকলক। জাভাকের মতো, তবে এটি কিছুটা আলাদা কাজ করে:

এখানে চিত্র বর্ণনা লিখুন

আপনি দেখতে পাচ্ছেন, জ্যাক সোজা ডেক্স ফাইলে জাভা উত্স কোডটি সংকলন করে! আমাদের কাছে আর মাঝারি *। ক্লাস ফাইল নেই, তাই dx সরঞ্জামের প্রয়োজন নেই!

কিন্তু অপেক্ষা করো! আমি যদি আমার প্রকল্পে তৃতীয় পক্ষের লাইব্রেরি অন্তর্ভুক্ত করি (যা .class ফাইলের সংগ্রহ হিসাবে আসে)?

জিল যখন খেলতে আসে তখন:

এখানে চিত্র বর্ণনা লিখুন

জিল ক্লাস ফাইলগুলি প্রক্রিয়া করতে পারে এবং এগুলিকে বিশেষ জাইস ফর্ম্যাটে রূপান্তর করতে পারে যা জ্যাক সংকলক হিসাবে ইনপুট হিসাবে ব্যবহার করা যেতে পারে।

সুতরাং এখন আসুন এক সেকেন্ডের জন্য একপাশে এবং ভাবেন ... আমাদের এত আসক্ত প্লাগিনগুলির কী ঘটবে? তাদের সকলের .class ফাইলগুলি দরকার এবং জ্যাক সংকলকটির আর নেই ...

ভাগ্যক্রমে, জ্যাক আমাদের জন্য গুরুত্বপূর্ণ কিছু সরবরাহ করে যা বাক্সের বাইরে রয়েছে:

  • রেট্রোলাম্বদা - প্রয়োজন হবে না। জ্যাক ল্যাম্বডাসকে সঠিকভাবে পরিচালনা করতে পারে
  • প্রগার্ড - এটি এখন জ্যাকের মধ্যে বেকড হয়েছে, তাই আপনি এখনও অবসন্নতা এবং হ্রাস করতে পারেন

সুবিধাদি:

জ্যাক জাভা প্রোগ্রামিং ভাষা 1.7 সমর্থন করে এবং নীচে বর্ণিত অতিরিক্ত বৈশিষ্ট্যগুলিকে একীভূত করে।

  • প্রেডেক্সিং

    একটি জ্যাক লাইব্রেরি ফাইল তৈরি করার সময়, লাইব্রেরির .dex তৈরি করা হয় এবং প্রি-ডেক্স হিসাবে। জ্যাক লাইব্রেরি ফাইলের ভিতরে সংরক্ষণ করা হয়। সংকলন করার সময়, JACK প্রতিটি লাইব্রেরি থেকে প্রাক-ডেক্স পুনরায় ব্যবহার করে। সমস্ত গ্রন্থাগার প্রাক-ডেক্সড।

  • বর্ধিত সংকলন

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

  • পুনঃবীক্ষণ

    জ্যাক কে পুনরায় প্যাকেজিং করতে জারজার কনফিগারেশন ফাইলগুলি ব্যবহার করে।

  • মাল্টিডেক্স সমর্থন

    যেহেতু ডেক্স ফাইলগুলি 65 কে পদ্ধতিতে সীমাবদ্ধ, তাই 65 কেওর বেশি পদ্ধতির অ্যাপ্লিকেশনগুলি একাধিক ডেক্স ফাইলগুলিতে বিভক্ত করতে হবে। (মাল্টিডেক্স সম্পর্কে আরও তথ্যের জন্য '65 কেও বেশি পদ্ধতি সহ বিল্ডিং অ্যাপস' দেখুন))

অসুবিধাগুলি:

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

'এনটেশন প্রসেসিং বর্তমানে জ্যাক দ্বারা সমর্থিত নয়' এখনও সেপ্টেম্বর ২০১ per অনুসারে রয়েছে? দেখে মনে হচ্ছে এটি এখন সমর্থিত ...
টিকোফ্যাব

এটি সমর্থিত, তবে ত্রুটিগুলি রয়েছে: উদাহরণস্বরূপ ডেটা বাঁধাই এখনও কাজ করে না: অ্যান্ড্রয়েড দেখুন # 210615
টিএমট্রন

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

7

গুগল জ্যাকটিকে ডিফল্ট সরঞ্জাম হিসাবে ধাক্কা দিচ্ছে না, তবে Jack and Jill
জিলের সাথে ডেক্সে .class ফাইলগুলি সংকলন এখানে থাকার জন্য। অন্যথায়, আপনি জার / আয়ার লাইব্রেরিগুলিকে বিদায় জানাতে পারেন।

জ্যাক বা জিল ধীরে ধীরে হবে কিনা তা এখনও বিতর্কের অবতারণা। অ্যান্ড্রয়েড দল আশা করে যে জ্যাকটি বর্তমান বিল্ড প্রক্রিয়াটির চেয়ে দ্রুততর হবে, তবে এটি এখনকার ক্ষেত্রে নয়

তদ্ব্যতীত, জ্যাক এবং ডেক্স খোলা অবস্থায় পাওয়া যায়, কোটলিন সোর্সকোড থেকে। জ্যাক বা .dex ফাইলগুলি নির্গমন করে কোনও সরঞ্জাম লিখতে কোনও কিছুই কোটলিন দলকে বাধা দেয় না।


7

আপডেট (03/16/2017)

ভাগ্যক্রমে, জ্যাক মারা গেছে এবং তাই এটি কোটলিন বিকাশকারীদের উপর প্রভাব ফেলবে না।


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

আপনি নীচের চিত্রটিতে দেখতে পাচ্ছেন এমনকি জ্যাকটি স্পষ্টভাবে বন্ধ করা অসম্ভব হলেও আপনি জিলটি ব্যবহারের জন্য প্রকল্পটি একটি লাইব্রেরি প্রকল্পে রূপান্তর করতে সক্ষম হবেন। এবং অ্যাপ্লিকেশন প্রকল্পটি কেবল এই লাইব্রেরি প্রকল্পটি উল্লেখ করবে।

জ্যাক এবং জিল অ্যাপ্লিকেশন বিল্ড

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

তবে এই মুহুর্তে আমরা জানি না যে জ্যাকটি প্রকাশের সময় ঠিক কী সমর্থন করবে। সম্ভবত কিছু নাটকীয়ভাবে পরিবর্তিত হবে এবং জ্যাকের সাথে কোটলিন সমর্থন যুক্ত করা সম্ভব হবে।


7
আসলে কোটলিন দলের জ্যাক অ্যান্ড জিলকে সমর্থন করার পরিকল্পনা রয়েছে, আমি তাদের লাইভ ইভেন্টে এটি সম্পর্কে শুনেছিলাম, তবে আমি বরং এখানে জেটব্রেইনসের একটি অফিসিয়াল পদ পছন্দ করি, তাই আমি প্রশ্নের উত্তর দিলাম না।
হটকি

এটি দুর্দান্ত হবে তবে আমি একমাত্র সমর্থন শুনেছি জিলের মাধ্যমে। এবং আমি উত্তরে যেমন উল্লেখ করেছি সেখানে এই সমর্থনটি কীভাবে যুক্ত করা যায় তার অনেক উপায় নেই।
মাইকেল

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

মেমরি কোড জেনারেশন কীভাবে জ্যাকের একীকরণের সাথে সম্পর্কিত তা বুঝতে পারি না। এবং কোটলিন থেকে ডেক্স সংকলনটির অর্থ জেটব্রেইনসকে জ্যাকের মতো তাদের নিজস্ব সরঞ্জামচেনটি লেখার এবং সমর্থন করা দরকার।
মাইকেল

4
নিশ্চিত না যে কোটলিন দল ব্যতীত অন্য কারও উচিত তারা কী করতে পারে এবং কী করতে পারে না, বা তারা কী করতে পারে বা না পারে সে সম্পর্কে বলে। তারা এর আগে এ বিষয়ে কথা বলেছে এবং তাদের উপস্থাপনের পরিকল্পনা রয়েছে।
জেসন মিনার্ড

5

আজ প্রকাশিত ব্লগ পোস্টে ( কোটলিনের অ্যান্ড্রয়েড রোডম্যাপ ) বলা হয়েছে:

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

সুতরাং কোটলিন শেষ পর্যন্ত জ্যাক এবং জিলকে সমর্থন করবে এবং এর থেকে সুবিধা পাবে।


2

সর্বশেষ গুগল ঘোষণা অনুসারে -

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

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

সুতরাং অ্যান্ড্রয়েড বিকাশের জন্য জ্যাক টুলচেনটি ডিফল্ট টুলচেইন হয়ে উঠতে হবে তা নিয়ে আমাদের চিন্তা করার দরকার নেই। আপনি কোটলিন ব্যবহার চালিয়ে যেতে পারেন বা সাধারণ জাভ্যাক / ডিএক্স সরঞ্জামের সেট ব্যবহার করতে পারেন।

উত্স: অ্যান্ড্রয়েডে জাভা 8 ভাষা ফিচার সমর্থন F


1

আমি এই ব্লগ পোস্টটি ইতিমধ্যে অফিসিয়াল কোটলিনের ব্লগ থেকে পেয়েছি: কোটলিনের অ্যান্ড্রয়েড রোডম্যাপ

সেখানে আপনি একটি অংশ পাবেন যা বলবে যে:

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

সুতরাং @ লুকাস বার্গস্ট্রোম যেমন বলেছে, "অতীতে স্টকিং" নিয়ে কোনও সমস্যা হবে না ;-)

আপনি Redditএই বিষয়ের সাথে যুক্ত আলোচনাটিও পরীক্ষা করতে পারেন : জ্যাক এবং জিলের সাথে কোটলিনের অবস্থা কী?

শুভ কোডিং।


0

কোটলিন ব্লগ অনুসারে , 1.1-বিটা 2 নতুন বৈশিষ্ট্য বিভাগ প্রকাশ করুন:

জ্যাক টুলচেন সক্ষম থাকলে অ্যান্ড্রয়েড প্রকল্পগুলি নির্মাণের জন্য সহায়তা (জ্যাকঅপশনস tions সত্য});

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