জ্যাকএক্সবি কী এবং আমি কেন এটি ব্যবহার করব? [বন্ধ]


109

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


2
এই নিবন্ধটি পড়ুন (এক্সএমএল বাইন্ডিংয়ের জন্য জাভা আর্কিটেকচার (জ্যাকএক্সবি)) এটি সেরা। ইউআরএল: oracle.com/technetwork/articles/javase/index-140168.html#unmars

উত্তর:


99

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

এক্সএমএলের সাথে কাজ করা কঠিন। একটি এক্সএমএল ফাইল নেওয়ার জন্য একটি পদ্ধতির প্রয়োজন - যা মূলত একটি পাঠ্য ফাইল - এবং এটিকে কোনও ধরণের ডেটা স্ট্রাকচারে রূপান্তরিত করে, যা আপনার প্রোগ্রামটি পরে ম্যানিপুলেট করতে পারে।

জ্যাকএক্সবি একটি এক্সএমএল স্কিমা গ্রহণ করবে যা আপনি লিখেছেন এবং সেই স্কিমার সাথে সঙ্গতিপূর্ণ ক্লাসগুলির একটি সেট তৈরি করবেন। জ্যাকএক্সবি ইউটিলিটিগুলি সেই এক্সএমএলকে পরিচালনা করার জন্য ডেটা স্ট্রাকচারের শ্রেণিবিন্যাস তৈরি করবে।

জ্যাকএক্সবি এর পরে এক্সএমএল ফাইলটি পড়তে ব্যবহার করা যেতে পারে এবং তারপরে উত্পন্ন শ্রেণীর উদাহরণ তৈরি করতে পারে - আপনার এক্সএমএল থেকে ডেটা দিয়ে। জ্যাকএক্সবি বিপরীতটিও করে: জাভা ক্লাস নেয় এবং সংশ্লিষ্ট এক্সএমএল উত্পন্ন করে।

আমি JAXB পছন্দ করি কারণ এটি ব্যবহার করা সহজ, এবং জাভা ১. 1. নিয়ে আসে (আপনি যদি 1.5 ব্যবহার করেন তবে আপনি JAXB। জার্স ডাউনলোড করতে পারেন)) এটি শ্রেণীর স্তরক্রমটি তৈরি করার উপায়টি স্বজ্ঞাত, এবং আমার অভিজ্ঞতা অনুসারে একটি শালীন কাজ করে "এক্সএমএল" দূরে রেখে যাতে আমি "ডেটা" তে ফোকাস করতে পারি।

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

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


21
জ্যাকএক্সবি এক্সএসডি ছাড়াই করা যায়। আপনি টীকাগুলি ব্যবহার করতে পারেন: jaxb.dev.java.net/guide/
ম্যাপিং_আপনার_প্রেসিটি_ক্লাস

7
জ্যাকএক্সবি একটি অনুমান (যেমন জেপিএ বা জ্যাকএক্সপি), যার অর্থ একাধিক বাস্তবায়ন রয়েছে (মেট্রো, এক্লিপস লিঙ্ক, ইত্যাদি)। আপনার যদি সমস্যা হয় তবে আপনি অন্য প্রয়োগটিতে যেতে পারেন। আপনি বিভিন্ন বিক্রেতাদের দেওয়া অফারগুলির সুবিধাও নিতে পারেন।
বিডৌঘান

@ ব্লাইসডাউন, মেট্রো একটি জ্যাকএসবি বাস্তবায়ন ?! মেট্রো কি ডাব্লুএসআইটি বাস্তবায়ন নয়?
মুহাম্মদ জেলবানা

1
@ মুহাম্মাদগেলবানা - আমার ধারণা আমি একে প্রকল্প জ্যাকএক্সবি ( jaxb.java.net ) হিসাবে উল্লেখ করা উচিত, যা জ্যাকস-ডাব্লুএস বাস্তবায়নের ( মেট্রো.জভা.নেট ) অংশ।
বিডুঘান

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

23

এটি ব্যবহার না করার একটি কারণ এখানে: কর্মক্ষমতা ক্ষতিগ্রস্থ হয়। মার্শালিং এবং আনমারশালিংয়ের সময় ওভারহেডের একটি ভাল চুক্তি রয়েছে। আপনি এক্সএমএল-অবজেক্ট বাইন্ডিংয়ের জন্য অন্য একটি এপিআই বিবেচনা করতে পারেন - যেমন জিআইবিএক্স: http://jibx.sourceforge.net/


1
আপনি যদি বাইন্ডিংগুলির সাথে সমস্যা বোধ করেন তবে এক্সএসডি 2 জিবক্স টুলটি ব্যবহার করার বিষয়টি বিবেচনা করুন - এটি "আলফা" স্থিতিতে রয়েছে তবে এটি এক্সএসডি স্কিমার সাথে পছন্দসই ক্লাস এবং বেন্ডিংগুলি চিত্রিত করার পক্ষে সত্যিই সহায়ক ... এখন যদি কেবল এটি ডিফল্ট অনুসারে এসকিউএল তারিখ ব্যবহার বন্ধ করে দেয় , এবং এর পরিবর্তে জাভা ব্যবহারের তারিখ ব্যবহার করা হয়েছে ...
MetroidFan2002

3
বাজে কথা. ম্যাকুয়াল বাইন্ডিংয়ের তুলনায় আপনি সম্ভবত দ্রুত পার্সার (উডস্টক্সের মতো) ব্যবহার করেন না কেন, সম্ভবত 30-40% এর ওভারহেড জ্যাকএক্সবি খুব দ্রুত। জিবিএক্স ঠিক আছে, এটি নিয়ে কোনও সমস্যা নেই, তবে পারফরম্যান্সের পার্থক্য বিশাল নয়।
স্ট্যাক্সম্যান ২

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

19

এটি একটি "এক্সএমএলের জন্য ওআরএম"। ডাব্লুএস ডেথ স্টার সিস্টেমগুলির জন্য প্রায়শই জ্যাকএক্স-ডাব্লুএসের পাশাপাশি ব্যবহৃত হয় (এবং প্রকৃতপক্ষে সূর্যের প্রয়োগগুলি একসাথে বিকাশিত হয়)।


19

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

আমি ঘৃণা ঘৃণা করি কিন্তু আমি কেবল একটি ব্লগ শুরু করেছি এবং এটি আমি আক্ষরিকভাবে প্রথম পোস্ট করেছি!

এটি এখানে দেখুন:

http://arthur.gonigberg.com/2010/04/21/getting-started-with-jaxb/


4
আপনার ব্লগে উদাহরণ পরিষ্কার করুন। এটির জন্য উত্সাহিত। :-)
শন ডি

9

জ্যাকএক্সবি দিয়ে আপনি স্বয়ংক্রিয়ভাবে আপনার বস্তুর XML উপস্থাপনা (মার্শালিং) এবং এক্সএমএলের অবজেক্ট উপস্থাপনা (আনমারশেলিং) তৈরি করতে পারেন।

যতক্ষণ না এক্সএমএল স্কিমা সম্পর্কিত, আপনার দুটি পছন্দ আছে:

  • এক্সএসডি থেকে জাভা ক্লাস তৈরি করুন
  • আপনার জাভা ক্লাস থেকে একটি এক্সএসডি তৈরি করুন

এক্সস্ট্রিম , ডাইজেস্টার বা এক্সএমএলবিয়ানগুলির মতো কিছু সাধারণ এক্সএমএল সিরিয়ালাইজেশন লাইব্রেরি রয়েছে যা বিকল্প হতে পারে।


1
এগুলি বাধ্যতামূলক ফ্রেমওয়ার্ক নয়, সেগুলি সিরিয়ালাইজেশন লাইব্রেরি। একটি ভাল বাঁধাই কাঠামো কোনও এক্সএমএলকে আইসোমরফিক বস্তু গ্রাফ বা আবার ফিরে মানচিত্র করতে পারে। এই সাধারণ সিরিয়ালাইজেশন প্রক্রিয়াগুলি একটি স্থির, অ-মানক এক্সএমএল স্কিমা উত্পাদন এবং গ্রাস করে।
এরিকসন

ধন্যবাদ এরিকন, আমি কেবল জ্যাকএক্সবি-র সাথে কাজ করেছি এবং আমি বিকল্পগুলি উল্লেখ করেছি তা নিশ্চিত করতে চেয়েছিলাম। আমি আপনার ইনপুট উপর ভিত্তি করে আমার উত্তর সম্পাদনা করব।
ফ্যাবিয়ান স্টেগ

আসলে, এক্সস্ট্রিমটি ঠিক আছে, তবে এটি সত্যই সহজ নয়, যেহেতু উভয়ই খুব সহজ। এবং হজমকারী সহজ নয়, কেবল সরল।
স্টেক্সম্যান ২

2
কেউ দয়া করে টীকা ব্যবহার করে JAXB-2.0 উল্লেখ করুন। কয়েকটি কয়েকটি এক্সএমএলএডাপ্টার ক্লাসের মধ্যে আমি যে কোনও জাভা কাঠামোতে কোনও স্কিমা মানচিত্র করতে পারি।
মার্ক রেনুফ

8

জ্যাকএক্সবি দুর্দান্ত যদি আপনার এক্সএমএল স্কিমা ( xsd) হিসাবে সংজ্ঞায়িত কিছু বাহ্যিক এক্সএমএল নির্দিষ্ট কোডের কোড করতে হয় ।

উদাহরণস্বরূপ, আপনার একটি ট্রেডিং অ্যাপ্লিকেশন রয়েছে এবং আপনার অবশ্যই ট্রেডগুলি উবার ল্যাম ট্রেড রিপোর্টিং অ্যাপ্লিকেশনটিতে রিপোর্ট করতে হবে এবং তারা আপনাকে ultra.xsdতা চালিয়ে যাওয়ার জন্য দিয়েছে । $JAVA_HOME/bin/xjcএক্সএমএলটিকে জাভা ক্লাসের একগুচ্ছ (উদাঃ UltraTrade) এ পরিণত করতে সংকলকটি ব্যবহার করুন ।

তারপরে আপনি আপনার ট্রেড অবজেক্টগুলিতে রূপান্তর করতে এবং আল্ট্রা-কর্পের মাধ্যমে ডেটা মার্শাল করতে ব্যবহার করতে কেবল একটি সাধারণ অ্যাডাপ্টার স্তর লিখতে পারেন । আপনার ট্রেডগুলিকে তাদের এক্সএমএল ফর্ম্যাটে রূপান্তর করার বিষয়ে গণ্ডগোলের চেয়ে অনেক সহজ।UltraTradesJAXB

আল্ট্রা-কর্পস প্রকৃতপক্ষে তাদের নিজস্ব অনুকূলে মেনে চলেনি, এবং যে বাণিজ্যটি priceতারা নীচে নেমেছে xsd:floatতা আসলে একটি হিসাবে প্রকাশ করা উচিত double!


1
এছাড়াও খেয়াল করুন যে আপনি কোডটি প্রথম করতে পারেন: মটরশুটি দিয়ে শুরু করুন, আপনার যদি প্রয়োজন হয় তবে স্কিমা তৈরি করুন।
স্টেক্সম্যান ২৩

7

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

class Employee{
 String name;
 String dept;
 ....
}

এই Pojo কে XML নথিতে নিম্নলিখিত রূপে (মার্শাল) রূপান্তর করা উচিত:

<Employee>
  <Name>...</Name>
  <Department>...</Department>
</Employee>

এবং দূরবর্তী উপাদানটিতে, এক্সএমএল ডকুমেন্ট (আন-মার্শাল) থেকে জাভা অবজেক্টে ফিরে যান।

জ্যাকএক্সবি কী?

জ্যাকএক্সবি একটি গ্রন্থাগার বা মার্শালিং এবং আনমারশেলিংয়ের এই অপারেশনটি সম্পাদনের একটি সরঞ্জাম is এটি আপনাকে এই মাথা ব্যাথা থেকে রেহাই দেয়, যত সহজ।


4

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

http://jibx.sourceforge.net/index.html


0

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

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