জাভা 6 থেকে জাভা 7 এ স্থানান্তরকে কীভাবে ন্যায়সঙ্গত করা যায়?


28

আমরা জাভা 6 থেকে জাভা 7 এ স্থানান্তরিত হয়েছিলাম । প্রকল্পটি সময়সূচির পিছনে রয়েছে এবং ঝুঁকিগুলি বাদ দেওয়া হচ্ছে, এক্ষেত্রে এটি জাভা 6 ব্যবহার করা চালিয়ে যাবে।

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

[আমি ওরাকল অ্যাডোপেশন গাইড , বাগের ডাটাবেস, স্ট্যাক ওভারফ্লোতে প্রশ্নগুলির মতো অনেকগুলি সাইট দিয়ে যাচ্ছি ।

আপডেট: উত্তরের জন্য ধন্যবাদ। আমরা পরবর্তী প্রকাশে আপডেটটি পুনরায় নির্ধারণ করেছি। আমাদের কাছে সবচেয়ে বেশি সুরক্ষা ছিল। সর্বাধিক ভোট দেওয়া উত্তর গ্রহণ করা।


5
তুমি ভাগ্যবান. স্ট্যাক ওভারফ্লোতে নিয়মিত পপ আপ হওয়া প্রশ্নগুলি বিচার করে কিছু লোক এখনও জাভা 1.4 (11 বছরের পুরানো প্ল্যাটফর্ম!) এর সাথে আটকে আছে।
জোচিম সৌর

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

1
এটা কি আমি নাকি শিরোনাম পিছনে?
রাদু মুর্জিয়া

1
আরও বড় প্রশ্ন হ'ল আপগ্রেড করার জন্য আপনি এত কঠিন সময় কেন কাটাচ্ছেন? আমি এক সপ্তাহে জাভা to এ একটি মিলিয়ন লোক প্রকল্প আপগ্রেড করতে সক্ষম হয়েছি think আমি মনে করি যে আপনার সমস্যার উত্তরটি আপনাকে কেন এমন কঠোরতর আপগ্রেড করছে কেন তা বিশ্লেষণ করছে।
অ্যান্ড্রু টি ফিনেল

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

উত্তর:


44

জাভা 6 এই বছরের ফেব্রুয়ারিতে ইওএল পৌঁছেছে এবং আপনি খুব ব্যয়বহুল এন্টারপ্রাইজ সমর্থন না কিনে পাবলিক আপডেটগুলি (সুরক্ষা সহ) আর পাবেন না।

এটি প্রয়োজনীয় সমস্ত কারণ হওয়া উচিত।

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


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

1
মূলত এটিই বেশিরভাগ সংস্থাগুলি আপগ্রেড করবে।
জেভেন্টিং

মাইকেল, আপনার উত্তরে আমি যে নোটগুলি উল্লেখ করেছি ( সামঞ্জস্যতা এবং ধূমপান পরীক্ষার বিষয়ে স্পষ্টতা ) যুক্ত করব তা কি বোধগম্য হবে ? সম্পূর্ণতার স্বার্থে তাই কথা বলতে
মশা

1
@ গ্যাनेट: সম্পন্ন হয়েছে, তবে আমি সন্দেহ করি যে অভিবাসনের বিরুদ্ধে থাকা লোকদেরও কেবল ধূমপান পরীক্ষার চেয়ে পরীক্ষার প্রয়োজন এবং তার চেয়ে বেশি কিছু বলা দরকার। সেখানে সবচেয়ে স্পষ্টভাবে হয় কখনও কখনও জটিল অমিলের।
মাইকেল বর্গওয়ার্ট

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

29

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

ভাষার বৈশিষ্ট্যগুলির মধ্যে রয়েছে:

  • জেনারিক্সে কম বয়লারপ্লেট। কোডটি Map<String, String> myMap = new HashMap<String, String>();কমিয়ে আনা যায় Map<String, String> myMap = new HashMap<>()। সংকলকটি বাম থেকে ডানদিকে প্রয়োজনীয় জেনেরিক প্রকারগুলি নির্ধারণ করতে পারে, তাই আপনার কোডটি আরও ছোট এবং দ্রুত পড়তে পারে।
  • স্ট্রিংগুলি.equals() পরিবর্তিত পদ্ধতির শব্দার্থক ব্যবহার করে এখন স্যুইচ স্টেটমেন্টে কাজ করে ==
  • চেষ্টা-সহ-সংস্থানগুলি ব্যবহার করে স্বয়ংক্রিয় সংস্থান পরিচালনা। এটি কোড ক্লিনার করে তোলে, তবে পুরানো শৈলীর চেষ্টা / শেষ অবধি-ভিত্তিক কোডেরও সুবিধা রয়েছে। যদি চেষ্টা ব্যতীত কোনও ব্যতিক্রম ছুঁড়ে দেওয়া হয়, এবং বন্ধ করার সময় অন্যটি নিক্ষেপ করা হয়, codeতিহ্যগত চেষ্টা / শেষ অবধি বিবৃতিগুলি ব্যবহার করে এমন কোড সম্পূর্ণরূপে আসল ব্যতিক্রমটি হারাবে, এবং কেবল শেষ অবধিটিতে ফেলে দেওয়া একটিটিকেই পাস করবে। একটি রিসোর্স-উইথ রিসোর্স বিবৃতিতে, রানটাইমটি ব্যতিক্রমটিকে দমন করবে যে বন্ধ () কলগুলি ছুড়েছিল এবং মূল ব্যতিক্রমটিকে স্ট্যাকের উপর দিয়ে বুদবুদ করবে, এই ধারণার অধীনে যে এই আসল ব্যতিক্রমই প্রথমটিতে সমস্ত সমস্যা সৃষ্টি করেছিল জায়গা। উপরন্তু, পরিবর্তে আবর্জনা সংগ্রাহক অন্যান্য ব্যতিক্রম পরিত্যাগ, এই দমন ক্লোজ-নিক্ষিপ্ত ব্যতিক্রম ব্যবহার উদ্ধার করা সম্ভব হবে Throwable.getSuppressed
  • সংখ্যাগত আক্ষরিক পড়তে সহজ করা যেতে পারে। সমস্ত সংখ্যার লিখিত অক্ষরগুলি আন্ডারস্কোরগুলিকে অনুমতি দেয় , সুতরাং এর মতো জিনিসগুলি int n = 1000000000আরও বেশি পাঠযোগ্য হিসাবে তৈরি করা যায় int n = 1_000_000_000, যা এক বিলিয়ন হিসাবে পার্স করা আরও সহজ এবং লক্ষ্য না করে ভুলভাবে টাইপ করা আরও শক্ত। এছাড়াও, বাইনারি আক্ষরিক আকারে অনুমতি দেওয়া হয়েছে 0b10110101, এমন কোড তৈরি করে যা বিট-ফিল্ডগুলির সাথে পড়তে একটু ভাল লাগে।
  • একাধিক ব্যতিক্রম প্রকারের হ্যান্ডলিং একই ক্যাপ স্টেটমেন্টটি সম্পন্ন করা যায়, সদৃশ কোড হ্রাস করা এবং সম্ভাব্যত পরে এটিকে চুল্লী করা সহজ করে তোলে।

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

এপিআই সাইডে, বেশ কয়েকটি এপিআই আপডেটও এসেছে:

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

1
নীট বাছাই: বাস্তবে স্ট্রিং স্যুইচটি "এটি ব্যবহার করে যেন String.equalsপদ্ধতিটি ব্যবহার করে " পরিচালনা করে (আপনি যে দস্তাবেজের সাথে লিঙ্ক করেছেন) থেকে। বাস্তবে, সংকলকটি অপ্টিমাইজ করতে নিখরচায় যাতে এটি String.equalsব্যবহৃত হয় না ... তবে শর্ত থাকে যে নেট প্রভাবটি একই। (এবং, আমি প্রত্যাশা করব যে এটি String.hashcodeনির্দিষ্ট সংখ্যক সুইচ কেসগুলির উপরে ব্যবহার করবে ।)
স্টিফেন সি

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

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

পূর্ণসংখ্যার ধাপের পরিবর্তে একটি স্যুইচ বিবৃতিতে স্ট্রিংগুলি ব্যবহার করার সুবিধা কী কী?
জর্জিও

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

8

রিসোর্স-এ-রিসোর্স এমন একটি বৈশিষ্ট্য যা জাভা to এ আপগ্রেড করার মতো, এটি সমস্ত নিজস্ব। রিসোর্স লিক / মেমরি ফাঁস জাভা বিকাশের একটি বড় ঝুঁকি এবং টিডব্লিউআর সেই ঝুঁকিটিকে উল্লেখযোগ্যভাবে হ্রাস করে।

আমি সেই নতুন NIO.2 ফাইল অ্যাবস্ট্রাকশন যুক্ত করব এবং আপনার অ্যাপ্লিকেশনটিতে ফাইল / নেটওয়ার্কিং I / O বৈশিষ্ট্যগুলি রয়েছে তবে অ্যাসিঙ্ক্রোনাস ক্ষমতাগুলিও সরিয়ে নেওয়া উপযুক্ত।


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

সংস্থান-সহ-সংস্থানগুলি কি চেষ্টা-শেষের মতো নয় তবে কম বয়লারপ্লেট সহ?
জেলেট

1
আমি মনে করি ধারণাটি হ'ল কম বয়লারপ্লেট মানে সঠিক হওয়া সহজ easier
ম্যাট্রিক্সফ্রোগ

1
কম বয়লার-প্লেট এবং সঠিক সমাপনী গন্ধযুক্ত। তারা আবিষ্কার করেছেন যে ওপেনজেডিকে ভিতরে তারা 2/3 সময় সম্পর্কে এটি ম্যানুয়ালি ভুল করছিল .... আমি কোডের অন্যান্য সংস্থায় এটির অন্যান্য উচ্চ শতাংশের সন্দেহ করি।
মার্টিজ ভার্বার্গ

6

আপনার জাভা to-এ স্যুইচ না করার কারণ থাকতে পারে : যদি আপনাকে ওরাকল এর ভিএম ব্যবহার করতে হয় এবং আপনার সফ্টওয়্যার হয় এম্বেডড হার্ডওয়ারের সাথে চালিত হয় বা আপনি এটি এম্বেডড হার্ডওয়্যার দিয়ে বিতরণ করবেন: ওরাকল জেআরই এর লাইসেন্স পরিবর্তন করেছে যাতে উপরেরটি যদি লাইসেন্স না হয় তবে শর্ত পূরণ হয়; আপনার একটি জাভা এসই এম্বেডেড লাইসেন্স কিনতে হবে । দেখুন জাভা SE জন্য গড় এমবেডেড চাপলে কি হবে "সাধারণ কাজের সিস্টেম"?

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