আমার জাভা টাইম এবং টাইম ক্লাস ব্যবহার করা উচিত বা জোডা টাইমের মতো তৃতীয় পক্ষের লাইব্রেরির সাথে যেতে হবে?


147

আমি একটি ওয়েব ভিত্তিক সিস্টেম তৈরি করছি যা সারা বিশ্বের বিভিন্ন দেশে ব্যবহৃত হবে। এক ধরণের ডেটা যা সংরক্ষণ করতে হবে তা হ'ল তারিখ এবং সময়।

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


5
কিছু মন্তব্য স্পষ্ট করার জন্য… জোডা-টাইম চলতে থাকলে, এর উত্তরসূরি জেএসআর 310: তারিখ এবং সময় এপিআই অবশ্যই জাভা.টাইম প্যাকেজের আওতায় জাভা 8 এর অংশ হওয়ার কথা । ওরাকল একটি টিউটোরিয়াল খসড়া আছে । জেডিবিসি 4.2 নতুন ডেটা প্রকারগুলি পরিচালনা করবে
তুলসী বাউরক

উত্তর:


197

সম্পাদনা: এখন যে জাভা 8 প্রকাশিত হয়েছে, আপনি যদি এটি ব্যবহার করতে পারেন তবে তা করুন! java.timeআমার দৃষ্টিতে জোদা সময়ের চেয়েও পরিচ্ছন্ন। তবে আপনি যদি জাভা -৮ প্রাক আটকে থাকেন তবে পড়ুন ...

সর্বাধিক জোদা ব্যবহারের উপকারিতা এবং কনসগুলির জন্য জিজ্ঞাসা করেছে ...

পেশাদাররা:

  • এটা খুব ভাল কাজ করে। আমি দৃ strongly়ভাবে সন্দেহ করি যে জোড়ায় মানক জাভা গ্রন্থাগারগুলির তুলনায় অনেক কম বাগ রয়েছে। জাভা লাইব্রেরিতে কিছু বাগগুলি ডিজাইনের কারণে স্থির করা সত্যিই শক্ত (যদি অসম্ভব না হয়) are
  • এটি আপনাকে সঠিকভাবে তারিখ / সময় পরিচালনা সম্পর্কে চিন্তা করতে উত্সাহিত করার জন্য ডিজাইন করা হয়েছে - "স্থানীয় সময়" ধারণাটি পৃথক করে (যেমন "আমি যেখানেই থাকি সকাল সাতটায় আমাকে জাগিয়ে তুলি") এবং সময়ের সাথে সাথে ("আমি জেমসকে ফোন করছি) বেলা তিনটায় পিএসটি; তিনি যেখানে আছেন সেখানে বিকেল তিনটা নাও হতে পারে, তবে এটি একই তাত্ক্ষণিক ")
  • আমি বিশ্বাস করি এটা সহজ সময় অঞ্চল ডাটাবেস, যা আপডেট করে তোলে না পরিবর্তন অপেক্ষাকৃত ঘন ঘন
  • এটিতে একটি দুর্দান্ত অপরিবর্তনীয় গল্প রয়েছে যা জীবনকে অনেক সহজ আইএমই করে তোলে ।
  • অপরিবর্তনীয়তা থেকে শুরু করে, সমস্ত ফর্ম্যাটরগুলি থ্রেড-নিরাপদ, যা দুর্দান্ত কারণ আপনি প্রায়শই সবসময় অ্যাপ্লিকেশনটির মাধ্যমে একটি একক বিন্যাস পুনরায় ব্যবহার করতে চান
  • java.timeজাভা 8 এ শিখতে আপনার শুরু হবে , কারণ তারা অন্তত কিছুটা অনুরূপ

কনস:

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

আপনার নিজের ছোট্ট এপিআই কার্যকরভাবে তৈরির জন্য অক্সবো_লাকসের ধারণার প্রতিক্রিয়া জানাতে, কেন এটি খারাপ ধারণা তা সম্পর্কে আমার মতামত এখানে দেওয়া হল:

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

5
@ এডি: আপডেট হয়েছে - এটি এখনও বৈধ, তবে আশা করা যায় জেএসআর -310 জাভা 8 এর অংশ হবে, তবে এটি জাভা 7 এর অংশ ছিল না
জোন স্কিট

2
@ জোনস্কিটটি সম্ভবত জাভা -৮
সায়ননাচ 3৩৩

@ সিওনাচ 3৩৩: আমি এগুলি সব আপডেট করতে যাচ্ছি না, তবে শুরুতে কিছু যুক্ত করব।
জন স্কিটি

2
সেখানে একটি গুলো পুরনো হয় java.time.*: জাভা 6 এবং 7 এর জন্য threeten.org/threetenbp
দুর্বৃত্ত

24

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


সুবিধা - অসুবিধা? আমি জোদার সময়টি কখনও ব্যবহার করি নি - এটি সম্পর্কে লোকেরা কী পছন্দ করে তা শুনতে আকর্ষণীয় হবে।
ম্যাক্স স্টুয়ার্ট

15

উত্তরটি: এটি নির্ভর করে

জোডা (এবং জেএসআর -310) একাধিক ক্যালেন্ডার সিস্টেমের সাহায্যে সমর্থন সহ পুরোপুরি কার্যকরী তারিখ / সময় গ্রন্থাগার।

ব্যক্তিগতভাবে আমি জওডাকে আমার যা প্রয়োজন তার জটিলতার দিক থেকে অনেক দূরে এক ধাপ বলে মনে করেছি। স্ট্যান্ডার্ড জাভা Dateএবং Calendarক্লাসে 2 টি অধ্যক্ষের (আইএমএইচও) ভুলগুলি হ'ল :

  1. এগুলি পরিবর্তনযোগ্য
  2. তারা তাত্ক্ষণিকভাবে এক বছরের-মাস-দিবসের ধারণাটি মিশ্রিত করে

যদিও এই JODA দ্বারা সুরাহা করা হয়, আপনি এটি বেশ সহজ জন্য আপনার নিজের শ্রেণীর পাকানো পাবেন YearMonthDayএবং Instant, যা প্রকৃত "calendrical" গণনার জন্য উভয় ব্যবহার ফণা অধীন জাভা ক্লাস। তারপরে আপনাকে>> 100 ক্লাসের একটি এপিআই, একটি আলাদা ফর্ম্যাটিং / পার্সিং মেকানিজম ইত্যাদির সাথে নিজেকে পরিচিত করতে হবে না

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

জেএসআর -310 স্পট লিড হলেন স্টিফেন কুলবার্ন যিনি প্রথম স্থানে জোডা লিখেছিলেন, তাই যুক্তিযুক্তভাবে জোডাকে প্রতিস্থাপন করবে।


16
অ-বিশেষজ্ঞ, আইএমও দ্বারা পুনর্নবীকরণ করা উচিত নয়
জন স্কিটি

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

6
আমি তারিখ / সময় এপিআইতে আসার পরে সপ্তাহের যে কোনও দিন নিজের উপর বিশেষজ্ঞের উপর নির্ভর করি। এটি এমন নয় যে এটি কেউ কেউ ব্যবহার করে এলোমেলো তৃতীয় পক্ষের API। "> 100 শ্রেণি" যুক্তিটি খড়ের মানুষ, কারণ আপনাকে অবশ্যই এগুলি সমস্ত কিছু শেখার দরকার নেই।
জন স্কিটি

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

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

7

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


7

আপনার জোডা টাইম লাইব্রেরি ব্যবহার করা উচিত, কারণ:

  1. জোডা-টাইম আইএসও 8601 স্ট্যান্ডার্ডকে সমর্থন করে , যা
    তারিখের উপস্থাপনের একটি আদর্শ উপায় ।
  2. Java.util.date এর চেয়ে জোদা-টাইমে কোনও দিন / মাস / বছর যোগ করা এবং বিয়োগ করা সহজ।
  3. উপহারের তারিখের মাধ্যমে একটি সূচনা জোদা-সময়ে এত সহজ।
  4. জোডা-টাইম পাশাপাশি টাইমজোনকে সমর্থন করে।
  5. জোদা-টাইমের আরও ভাল বিল্ট-ইন পার্সিং রয়েছে। "2014-02-31" এর মতো একটি ভুল তারিখ ত্রুটি হিসাবে ছুঁড়ে দেওয়া হয়েছে:Exception in thread "main" org.joda.time.IllegalFieldValueException: Cannot parse "2014-02-31": Value 31 for dayOfMonth must be in the range [1,28].

আরও বিশদ জানতে আপনি এই পৃষ্ঠাটি পছন্দ করতে পারেন: http://swcodes.blogspot.com/

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