CALM/arwiki huggingface dataset:
وكانت هذه الرؤية قد قدمت بإقناع من قبل المدافعين عن وحدة جافا للأعمال مثل آي بي إم وصن مايكروسيستمز، وتم تبني وحدة جافا للأعمال سريعا من قبل عدد من الشركات الكبيرة. بأي حال فإن المشكلات سرعان ما طفت على السطح وبدأت سمعة وحدة جافا للأعمال في المعاناة نتيجة لذلك. وقد شعر بعض المطورين بأن واجهات برمجة التطبيق لمقياس وحدة جافا للأعمال كانت أكثر تعقيدا من تلك التي اعتاد على استخدامها المطورون. وكانت وفرة الاستثناءات المختبرة، والواجهات المطلوبة، وتطبيق فئة بين bean class كفئة مجردة أمرا غير معتاد ومناقضة للحدس بالنسبة للعديد من المبرمجين. ومما هو معروف فإن المشكلات التي كان مقياس وحدة جافا للأعمال يحاول تناولها، مثل كائن رسم الخرائط العلائقية والتكامل التبادلي، كانت معقدة. بأي حال فإن العديد من المبرمجين وجدوا واجهات برمجة التطبيقات على أنها صعبة بأقل تقدير، مما أدى إلى تصور واسع النطاق عن أن وحدة جافا للأعمال قد أدخلت تعقيدات دون تقديم مكاسب حقيقية.
إضافة إلى ذلك فقد وجدت الشركات أن استخدام وحدة جافا للأعمال لتغليف منطق الأعمال قد ألحق عقوبة بالأداء. وذلك نظرا لأن الخاصية الأصلية لا تكون متاحة إلا لإحلال طريقة بعيدة من خلال كوربا CORBA (وبروتوكولات أخرى اختيارية)، بالرغم من أن القدر الأكبر من تطبيقات الأعمال لا تتطلب فعليا وظيفية حوسبة التوزيع هذه. وتتناول خاصة وحدة جافا للأعمال هذه المسألة من خلال إضافة مفهوم الواجهات المحلية التي يمكن استدعاءها مباشرة دون أداء العقوبات من خلال التطبيقات التي لم يتم توزيعها على خوادم متعددة. وقد تم إدخالها بصورة أساسية لتناول مشكلات الأداء الموجودة في وحدة جافا للأعمال 1.0.
بأي حال فإن قضية التعقيد استمرت في إعاقة قبول وحدة جافا للأعمال. وبالرغم من أن أدوات المطور المتفوق قد سهلت من تكوين واستخدامات وحدة جافا للأعمال من خلال ميكنة المهام المتكررة، فإن هذه الأدوات لا تسهل بأي حال من الأحوال تعلم كيفية استخدام التكنولوجيا. علاوة على ذلك فإن الحركة المضادة قد نمت بقوة على مستوى القاعدة بين المبرمجين. وكانت المنتجات الرئيسية لهذه الحركة يطلق عليها التكنولوجيات "ذات الوزن الخفيف" (أي مقارنة بوحدة جافا للأعمال) لهايبرنيت Hibernate (للتوكيد وكائن رسم الخرائط العلائقية) وسبرنج فريموورك Spring Framework (والتي قدمت طريقة أقل إطنابا لتشفير منطق الأعمال). وبالرغم من الافتقاد لدعم الشركات الكبيرة، فإن هذه التكنولوجيات نمت جماهيريا وتم تبنيها بشكل أكبر من قبل الشركات التي كانت قد أصيبت بخيبة أمل إزاء وحدة جافا للأعمال.
وكان وحدة جافا للأعمال مدعوما من قبل البرنامج التجريبي جافا بلو برنتز الذي أصدرته جافا بيت ستور التابع لصن. إن استخدام وحدة جافا للأعمال كان مثار جدل وأن مبرمجين نافذين في جافا أي أي مثل رود جونسون قد تبنوا مواقف استجابة إلى جافا بيت ستور التي عملت على إضعاف التوكيد على وحدة جافا للأعمال. وقد أنتجت صن نفسها بديلا يسمى كائنات بيانات جافا. وفيما بعد فإن وحدات جافا للأعمال وأشكال بيانات جافا والعديد من الأفكار الكامنة في هايبرنيت اشتركت في تشكيل وحدة جافا للأعمال 3.0 التي تضمنت في واجهة برمجة تطبيق توكيد جافا وكائنات جافا القديمة المسطحة Plain Old Java Objects (POJOs). وكان وحدة جافا للأعمال 3.0 أقل وزنا مقارنة بوحدة جافا للأعمال 2.0 وقدم اختيارات أكبر للمطورين.
إعادة صياغة وحدة جافا للأعمال.
وتدريجيا فإن صناعة متماسكة أدت إلى ظهور الخاصية المميزة لوحدة جافا للأعمال الأصلي- مما مكن من تكامل متبادل على التطبيقات الموزعة- كانت ذات استخدام محدود بالنسبة لغالبية تطبيقات الأعمال، والوظيفية المقدمة من خلال هياكل أبسط مثل سبرنج وهايبرنيت كانت أكثر فائدة. ووفقا لذلك، فإن خاصية وحدة جافا للأعمال 3.0 (معالجة تجمع الجافا 220) كانت افتراقا راديكاليا من سابقيها عقب هذا المثال الجديد. ويظهر ذلك تأثيرا واضحا من سبرنج في استخدامها لكائنات جافا القديمة المسطحة، ودعمها للضخ المعتمد من أجل تبسيط التكوين وتكامل النظم غير المتجانسة. وكان جافين كينج، صانع هايبرنيت، قد شارك في معالجة وحدة جافا للأعمال 3.0 وكان محاميا صريحا عن التكنولوجيا. وكانت العديد من الخصائص الأصيلة في هايبرنيت داخلة في واجهة برمجة التطبيق لتوكيد جافا، وكانت إحلال هيئة وحدات جافا للأعمال في وحدة جافا للأعمال 3.0. وتعتمد خاصية وحدة جافا للأعمال بقوة على استخدام الشروح، وهي خاصية مضافة إلى لغة جافا بإصدارها رقم 5.0 لتمكين قدر أقل من أسلوب التشفير المطنب.
ووفقا لذلك، وبناء على شروط عملية فإن وحدة جافا للأعمال 3.0 يعتبر تقريبا واجهة برمجة تطبيق جديدة تماما يحمل القليل من التشابه مع المواصفات السابقة لوحدة جافا للأعمال.
يظهر ما يلي مثالا أساسيا لما يبدو عليه تشفير وحدة جافا للأعمال
@Local
public interface CustomerServiceLocal {
void addCustomer(Customer customer);
public class CustomerService implements CustomerServiceLocal {
@PersistenceContext
private EntityManager entityManager;
public void addCustomer(Customer customer) {
entityManager.persist(customer);
ويحدد ما سبق واجهة محلية وتطبيق فئة الخدمة لتوكيد كائن العميل (من خلال كائن رسم الخرائط العلائقية). ويعتني وحدة جافا للأعمال بإدارة المحيط المؤكد، وتكون طريقة العميل المضاف تبادلية وآمنة التشعب من الأساس. وكما ظهر جليا، فإن وحدة جافا للأعمال لا يركز إلا على منطق الأعمال والتوكيد ولا يعرف شيئا عن أي تمثيل خاص.
ويمكن استخدام مثل وحدة جافا للأعمال من قبل فئة ما في شريحة الويب على سبيل المثال كما يلي:
@Named
public class CustomerBacking {
@EJB
private CustomerServiceLocal customerService;
public String addCustomer() {
customerService.addCustomer(customer);
context.addMessage(...); // abbreviated for brevity
return "customer_overview";
ويحدد ما سبق أوجه خادم جافا JavaServer Faces (JSF) التي تدعم بين والتي يتم ضخ وحدة جافا للأعمال فيها من خلال وسيلة شرح @EJB. إن طريقة العملاء المضافين addCostumer مرتبطة نمطيا ببعض مكونات واجهة المستخدم UI،مثل الأزرار. وعلى العكس من وحدة جافا للأعمال، فإن دعم بين لا يحتوي على أي منطق أعمال أو كود توكيد، لكنه يرسل مثل هذه الاهتمامات لوحدة جافا للأعمال. ويعرف دعم بين تمثيلا خاصا لا يكون لوحدة جافا للأعمال أية معرفة بها.
ويملك وحدة جافا للأعمال نوعين رئيسيين من الوحدات beans:
وحدات الجلسات.
وحدات الجلسات الكبيرة.
إن وحدات الجلسات الكبيرة هي كائنات أعمال تتمتع بوجود حالة: أي أنها تحتفظ بتتبع ما يستدعيه العميل الذي يتعامل معها من خلال الجلسة ثم يلج إلى مثال الوحدة ويكون قاصرا على عميل واحد في المرة الواحدة. إن حالة وحدات الجلسات الكبيرة يمكن أن تستمر تلقائيا من خلال الحاوية لتحرير الذاكرة بعد توقف ولوج العميل إلى الوحدة لوقت ما. وتمد خاصية JPA سياقا مستمرا يدعم بشكل مميز من قبل وحدات الجلسات الكبيرة.
وحدات الجلسات المفردة.
إن وحدات الجلسات المفردة هي كائنات أعمال لها حالة مشاركة عالميا. إن الولوج المتواتر إلى الوحدة الواحدة والمثال الوحيد يمكن التحكم فيه من قبل الحاوية (تواتر إدارة الحاوية CMC) أو من خلال الوحدة ذاتها (تواتر إدارة الوحدة BMC). ويمكن لتواتر إدارة الحاوية أن تستخدم شرح @Lock، وهو الذي يصمم ما إذا كان قفل القراءة أو قفل الكتابة سيستخدم كطريقة استدعاء. إضافة إلى ذلك فإن وحدات الجلسات المفردة يمكنها ان تطلب بصورة متميزة أن تكون مماثلة عند تشغيل حاولة وحدة جافا للأعمال، باستخدام شرح @Startup.
الوحدات القائمة على الرسائل.
إن الوحدات القائمة على الرسائل هي كائنات أعمال يكون تنفيذها مرتبطا بالرسائل بدلا من طريقة الاستدعاءات. وتستخدم الوحدات القائمة على الرسائل بين نظم أخرى لتقديم تجريد عالي المستوى وسهل الاستخدام للمستوى الأدنى من خاصية خدمات رسائل الجافا JMS. ويمكنها أنم تلتحق بصفوف أو الرسائل النصية لخدمات رسائل الجافا، والتي يتم ضخها آليا في الوحدة. وتتم إضافتها في وحدة جافا للأعمال للسماح بالمعالجة القائمة على الحدث. وعلى غير شاكلة وحدات الجلسات، فإن MDB ليس بها عرض للعميل (محلي/ بعيد/ بدون واجهة)، أي أنه لا يمكن للعملاء أن الإطلاع على مثال MDB. إنها تستمتع فحسب للرسائل الواردة حول، على سبيل المثال، صف خدمات رسائل جافا أو موضوع أو عمليات معالجتها آليا. ولا يكون دعم خدمات رسائل جافا مطلوبا إلا من قبل خاصية EE،, لكن الوحدات القائمة على الرسائل يمكنها دعم بروتوكولات الإرسال الأخرى. ويمكن أن تكون مثل هذه البروتوكولات غير متزامنة لكنها يمكن أن تكون أيضا متزامنة. ولأن وحدات الجلسات يمكنها أيضا أن تكون متزامنة أو غير متزامنة، فغن الاختلاف الرئيسي بين وحدات الجلسات والوحدات القائمة على الرسائل ليس اختلافا متعلقا بالتزامن، لكنه اختلاف بين طريقة الاستدعاء والإرسال (القائمتين على الكائن)
الوحدات الموروثة (قليلة الشأن).
كما استخدمت الإصدارات السابقة من وحدة جافا للأعمال نوعا من الوحدات معروف باسم وحدة الكيان Entity Bean. وكانت كائنات موزعة ذات حالة مستمرة. وهي الوحدات التي تكون في حاويتها مدارة لحالة الاستمرار Container-Managed Persistence (CMP)حيث تستخدم الحاوية المدارة باستمرار bean-Managed Persistence (BMP). وقد حلت وحدات الكيان بواجهة برمجة التطبيق لاستمرارية جافا في وحدة جافا للأعمال رقم 3.0، وكذلك في وحدة جافا للأعمال 3.1، إن أسلوب وحدات الكيان في CMP x2 لا تزال متاحة للتوافق بأثر رجعي. وتماما كما هو الحال في وحدة جافا للأعمال 3.1 فإن خاصية JPA كانت منفصلة تماما بخاصيتها نفسها وسوف لا يركز وحدة جافا للأعمال إلا على "وحدة الجلسة الجوهرية ونماذج مكونات الوحدة القائمة على الرسائل وواجهات برمجة التطبيق لعملاءها").
وقد أقترحت أنواعا أخرى من وحدات الأعمال. على سبيل المثال وحدات أعمال الإعلام (JSR 86) التي تتناول تكامل كائنات الوسائط الإعلامية في تطبيقات Java EE.
تم نشر وحدات جافا للأعمال في حاوية وحدة جافا للأعمال داخل خادم التطبيق. وتصف هذه الخاصية كيف تتفاعل وحدة جافا للأعمال مع حاويتها وكيف يتفاعل كود العميل مع حاويتها/وحدة جافا للأعمال معا. إن فئات وحدة جافا للأعمال المستخدمة من قبل التطبيقات متضمنة في حزمة javax.ejb. (إن حزمة javax.ejb هي واجهة تقديم خدمة لا تستخدم إلا من قبل تطبيقات حاوية وحدة جافا للأعمال)
ولا يستعجل عملاء وحدات وحدة جافا للأعمال هذه الوحدات مباشرة من خلال مشغل جافا الجديد، لكنهم بدلا من ذلك عليهم الحصول على إحالة عبر حاوية وحدة جافا للأعمال لتطبيق الوحدة نفسها، ولكن إلى شبكات اتصال المخدم الفرعي الذي يطبق ديناميكيا واجهة أعمال منزلية أو بعيدة يطلبها العميل، أو يطبق ديناميكيا نوعا فرعيا من الوحدة الفعلية. ومن ثم يمكن لشبكات اتصال المخدم الفرعي أن تلقي مباشرة للواجهة أو الوحدة. ومن المعروف أن العميل يجب أن ياخذ "نظرة" على وحدة جافا للأعمال، والواجهة المحلية، والواجهة البعيدة ونوع الوحدة نفسه على التوالي فيما يتعلق بالعرض المحلي والعرض عن بعد والعرض بدون واجهة.
وتعتبر شبكات اتصال المخدم الفرعي هذه مطلوبة من أجل منح حاوية وحدة جافا للأعمال فرصة أن تقدم بشفافية خدمات متقاطعة (مثل AOP) لوحدة ما مثل التبادلات، الأمن، الإدخالات، التصورات المشتركة، والابتعاد، الخ.
على سبيل المثال فإنه يمكن لعميل أن يطرح طريقة ما عبر شبكات اتصال المخدم الفرعي، والتي سوف تبدأ فيما بعد تعاملا بمساعدة حاوية وحدة جافا للأعمال ثم يستدعي طريقة الوحدة الفعلية. وعندما تعود الوحدة الفعلية فإن شبكات اتصال المخدم الفرعي تنهي التبادل (أي من خلال إلزامها أو القيام برد) ويعيد السيطرة مرة أخرى إلى العميل.
التعاملات.
يجب أن تدعم حاوية وحدة جافا للأعمال كل من تعاملات ACID المدارة بالحاوية والتعاملات المدارة بالوحدة.
إن التعاملات المدارة بالحاوية CMT نشطة من الأساس بالنسبة لاستدعاء وحدات الجلسات. وهكذا فإنه ليست هناك حاجة لتشكيل مميز. ويمكن تحويل هذا السلوك من خلال الوحدة عبر الشروح وإذا اقتضت الحاجة فإن مثل هذا التشكيل يمكن أن يصبح لاحقا مسيطرا في واصفات الانتشار. ويتضمن ذلك وقف التعاملات للوحدة ككل أو للطرق المحددة، أو طلب استراتيجيات بديلة لنشر التعامل وبدء أو الانضمام لعملية. وتتعامل مثل هذه الاستراتيجيات أساسا مع ما سوف يحدث إذا لم تتقدم العملية أو تطورت بالفعل في وقت استدعاء الوحدة:
وبدلا من ذلك فإنه يمكن للوحدة أيضا أن تعلن من خلال شرح ما أنها تريد القيام بعمليات بطريقة برمجية من خلال واجهة برمجة تطبيق تابعة لـ JTA. إن نمط التشغيل هذا يطلق عليه المعاملات المدارة بالوحدة BMT، لأن الوحدة نفسها تتناول المعاملات بدلا من الحاوية.
خدمات رسائل جافا مستخدمة لإرسال الرسائل من الوحدات beans إلى كائنات العميل، ومن أجل تمكين العملاء من استقبال رسائل غير متزامنة من هذه الوحدات. ويمكن استخدام MDB لاستقبال الرسائل من تطبيقات العميل بصورة غير متزامنة باستخدام إما صف أو موضوع خدمات رسائل جافا
خدمات التسمية والدليل.
وكبديل للإدخال، فإن عملاء وحدة جافا للأعمال يمكنهم الحصول على إحالة لكائن وسيط لوحدة الجلسات (بذرة وحدة جافا للأعمال) باستخدام JNDI، ويمكن استخدام هذا البديل في الحالات التي يكون فيها الإدخال غير متاح، مثل الوحدات غير المدارة أو عملاء جافا SE البعيدون، أو عندما يكون ضروريا التحديد من الناحية البرمجية أية وحدة يجب الحصول عليها.
أسماء واجهة جافا للتسمية والدليل Java Naming and Directory Interface JNDI لوحدات جلسات وحدة جافا للأعمال تم تحديدها من قبل حاوية وحدة جافا للأعمال من خلال الآلية التالية:
"(المداخل في الأقواس المربعة تشير لأجزاء اختيارية)"
يمكن لوحدة واحدة أن يحصل عليها من أي اسم متصل بالأنماط السابقة، واعتمادا على "موقع" العميل. إن العملاء في نفس الوحدة Module كالوحدة Bean المطلوبة يمكن أن تستخدم نطاقا أكبر من الوحدات، إن العملاء في نفس التطبيق كالوحدة المطلوبة التي تستخدم نطاقا تطبيقيا وما هو أعلى منه، الخ.
على سبيل المثال فإن كود التشغيل في نفس الوحدة مثل وحدة خدمة العملاء (كما هو مقدم من قبل المثال الظاهر سابقا في هذا المقال) سوف يستخدم الكود التالي للحصول على إحالة (محلية) له:
CustomerServiceLocal customerService =
(CustomerServiceLocal) new InitialContext().lookup("java:module/CustomerService");
تعتبر حاوية وحدة جافا للأعمال مسئولة عن ضمان أن كود العميل له حقوق ولوج كافية لوحدة جافا للأعمال.
الواجهات المنزلية وواجهات الأعمال المطلوبة.
بصدور وحدة جافا للأعمال 2.1 وما سبقه، فإنه كان على كل وحدة جافا للأعمال أن يقدم فئة تطبيق للجافا وواجهتي جافا. وقد كونت حاوية وحدة جافا للأعمال أمثلة لفئة تطبيق الجافا لتقديم تطبيق وحدة جافا للأعمال. وكانت واجهات جافا مستخدمة من قبل كود العميل لوحدة جافا للأعمال.
وتتم الإشارة إلى الواجهتين باعتبارهما واجهتين منزلية وبعيدة، ومحددة التوقيعات للطرق البعيدة لوحدة جافا للأعمال. وتنقسم الطرق إلى مجموعتين:
واصفات الانتشار المطلوبة.
بصدور وحدة جافا للأعمال 2.1 وما سبقه، فإن خاصية وحدة جافا للأعمال تطلبت وجود واصفات انتشار. وكانت هناك حاجة إلى ذلك من أجل تطبيق آلية تسمح لوحدات جافا للأعمال بالانتشار بطريقة مستمرة بغض النظر عن المنصة الخاصة بوحدة جافا للأعمال التي كان قد تم اختيارها. إن المعلومات عن كيفية البدء في نشر الوحدة bean(مثل اسم الواجهات المنزلية أو الواجهات البعيدة، ومسألة تخزين أو كيفية تخزين الوحدة في قاعدة البيانات، الخ) كان من الواجب تحديدها في واصفات الانتشار.
إن واصفات الانتشار وثيقة بتنسيق XMLيمكنها الدخول على كل وحدات جافا للأعمال التي سيتم نشرها. وتحدد وثيق XML هذه المعلومات لاتالية لكل وحدة جافا للأعمال:
إن حاويات وحدات أعمال جافا القديمة المقدمة من العديد من الموردين تطلبت نشرا مزيدا للمعلومات مقارنة بما هو قائم في خاصية وحدة جافا للأعمال. وكانت تستلزم المعلومات الإضافية مثل ملفات XMLالمنفصلة، أو بعض تنسيقات ملفات التشكيل الأخرى. وقد قدمت منصة وحدة جافا للأعمال بصورة عامة أدواتها الخاصة التي سوف تقرأ واصفات الانتشار هذه، ويمكن أن تولد مجموعة من الفئات التي سوف تطبق الواجهات المنزلية والبعيدة لاتي أصبحت الآن غير ذات أهمية.
منذ إصدار وحدة جافا للأعمال 3.0 (JSR 220) فإن واصف XML تم استبداله بمجموعة شروح جافا في تطبيق وحدة الأعمال (على لامستوى المصدري)، بالرغم من أنه لا يزال ممكنا استخدام واصف XML بدلا من (إضافة إلى) الشروح. وإذا تم تطبيق كل من واصف XML شروحه لنفس السبب داخل وحدة الأعمال، فإن تعريف XML سيهيمن على الشرح ذو المستوى المصدري المتصل بها.
الإصدار النهائي لوحدة جافا للأعمال 3.1 (10 ديسمبر 2009).
JSR 318 إن غرض خاصية وحدة جافا للأعمال 3.1 هو مزيد من التبسيط لبينة وحدة جافا للأعمال من خلال تقليل تعقيده من وجهة نظر المطور، بينما يحاول هذا الإصدار أيضا إضافة وظيفية جديدة استجابة لاحتياجات الجماعة:
الإصدار النهائي لوحدة جافا للأعمال 3.0 (11 مايو 2006).
JSR 220 التغيرات الرئيسية: سهل هذا الإصدار من كتابة وحدات جافا للأعمال، من خلال استخدام الشروح بدلا من "واصفات الانتشار" المعقدة المستخدمة في النسخة 2.x. إن استخدام الواجهات المنزلية والواجهات البعيدة وملف ejb-jar.xml كان أيضا غير مطلوب في هذا الإصدار، وقد حل محله واجهة أعمال ووحدة تطبق الواجهة.
الإصدار النهائي لوحدة جافا للأعمال 2.1 (24 نوفمبر 2003).
JSR 153 التغيرات الرئيسية
الإصدار النهائي لوحدة جافا للأعمال 1.1 (17 ديسمبر 1999).
التغيرات الرئيسية:
أهداف الإصدار 1.1:
إن كود التبادل الموسع للترميز العشري الثنائي (أو مختصراً ابسدك من الإنجليزية) هو كود ذو سبعة حروف (صفحة الكود) المستخدم في نظم التشغيل الحاسبات الآلية الكبيرة في آي بي إم مثل نظام OS/ Z و نظام التشغيل OS/ والآلة الافتراضية 390 و موسع التخزين الظاهري وكذلك نظم تشغيل حاسب آي بي ام الآلي ذو القيمة المتوسطة مثل OS / 400 وآي 5 / OS (انظر كذلك إلى الترميز العشري الثنائي). وقد وظفت على عدة أرصفة لا تتبع آي بي ام مثل بي اس 2000 / أوه اس فوجيستو سيمنز و ام بي إي آي اكس اتش بي وفني مايكروسوفت معتمد من شركة يونيسس. وقد انحدر كود التبادل الموسعة للترميز العشري الثنائي من الكود المستخدم مع البطاقات المخرمة و كود الترميز العشري الثنائي المناظر ذو الستة أحرف والمُستخدم مع معظم معدات حواسب آي بي ام المحيطة في أواخر الخمسينات وأواخر الستينات.
ابتُكرت آي بي ام كود التبادل الموسعة للترميز العشري الثنائي في عامي63 19 و 1964 وأُعلن عنه مع ظهور خط إنتاج نظام آي بي ام / 360 للحواسب الكبيرة. وهو ترميز ذو ثماني أحرف، ومناقضاً ل وطور بشكل منفصل من برنامج ترميز الكود الأمريكي القياسي لتبادل المعلومات. وقد ابتُكرت لتوسع الترميز العشري الثنائي والذي كان موجوداً في ذلك الوقت، والذي ظهر هو نفسه كوسيلة تتسم بالكفاءة لترميز مثقابي الأرقام والمناطق على بطاقات التثقيب إلى ستة أحرف.
فبينما كانت آي بي إم المقترح الرئيسي للجنة التوحيد القياسي لبرنامج ترميز الكود الأمريكي القياسي لتبادل المعلومات فلم يكن لديهم وقت لتحضير الأجهزة المحيطة ببرنامج ترميز الكود الأمريكي القياسي لتبادل المعلومات( مثل آلات تثقيب البطاقات) لشحنها مع حواسيبها ذات النظم 360 وبالتالي استقرت الشركة على كود التبادل الموسعة للترميز العشري الثنائي في ذلك الوقت. ونجح نظام 360 على نطاق واسع وكذلك نجح برنامج كود التبادل الموسعة للترميز العشري الثنائي.
وتستخدم كل ملحقات أجهزة الحاسب الآلي آي بي ام الكبيرة ونظم التشغيل كود التبادل الموسعة للترميز العشري الثنائي كترميزهم الطبيعي عدا نظام لينوكس على زد سيريس أو آي سيريس, ولكن بإمكان البرامج الترجمة من وإلى الترميزات الأخرى. وتوفر العديد من الأجهزة المحيطة الترجمة وكذلك الحواسب الكبيرة الحديثة (مثل آي بي ام زد سيريس ) ومن ضمنها تعليمات المعالج على مستوى الأجهزة لتسرع الترجمة بين مجموعات الأحرف.
وليس لكود التبادل الموسعة للترميز العشري الثنائي ميزة تقنية حديثة أفضل من صفحات الكود على أساس برنامج ترميز الكود الأمريكي القياسي لتبادل المعلومات مثل سلسلة أيزو8859 أو الشفرة الموحدة. فهناك بعض الجماليات الفنية في كل منها مثل أن لكل من ترميز الكود الأمريكي القياسي لتبادل المعلومات و كود التبادل الموسعة للترميز العشري الثنائي بيت واحد حيث تحدد الحالة العليا أو السفلى. ولكن هناك بعضاً من جوانب كود التبادل الموسعة للترميز العشري الثنائي التي تجعل منه أقل إرضاء بكثير للعمل مع ترميز الكود الأمريكي القياسي لتبادل المعلومات لترميز الكود الأمريكي في حين أنه باستخدام صفحات الكود الموسعة ذات البايت الفردي لقياسي لتبادل المعلومات مثل أبجدية غير متجاورة. فمعظم صفحات أكواد كود التبادل الموسعة للترميز العشري الثنائي تسمح فقط بلغتان( وهما الإنجليزية ولغة واحدة أخرى) لتستخدما في قاعدة البيانات أو ملف النص.
وحيث أنه يفضل الدعم الحقيقي للنص متعدد اللغات فهناك حاجة إلى نظام يُدعم أحرف أكثر بكثير. وبوجه عام يمكن تنفيذ ذلك بشكل من أشكال دعم الشفرة الموحدة. وهناك شكل لتحويل الشفرة الموحدة الخاصة بكود التبادل الموسعة للترميز العشري الثنائي تُسمى UTF-EBCDIC وقد اقترحتها جمعية الشفرة الموحدة، ولكنها لا تستخدم في البيئات التبادلية المفتوحة، وحتى في النظم المبنية على أساس كود التبادل الموسعة للترميز العشري الثنائي فهي لا تستخدم أبداً تقريباً. وتدعم حواسب آي بي ام الكبيرة يو تي اف 16 ولكنها لا تدعم يو تي اف EBCDIC الأصلية. وتعرض النسخ العربية من كود التبادل الموسعة للترميز العشري الثنائي في شكل عرض من اليسار إلى اليمين كما يعرضها حاسب آلي كبير أقدم أو طابعة بدلاً من الترتيب المنطقي الذي تستخدمه الترميزات الحديثة مثل اليونيكود.
إطار صفحة الكود.
الجدول التالي مبني على أساس معرف مجموعة الأحرف المرمزة 500 وهي إحدى صفحات الكود المختلفة لكود التبادل الموسعة للترميز العشري الثنائي. وهي توضح فقط الأحرف الإنجليزية لكود التبادل الموسعة للترميز العشري الثنائي. وتمثل الأحرف 00- 3 اف أزرار التحكم ويمثل 40 المسافة(المسطرة) ويمثل 41 لا يوجد مسافة وتعني آر اس بي : مطلوب مسافة و إي 1 هي المسافات الرقمية وتعني سي ايه الخط الصغير الذي يفصل بين كلمتين وقد بينت الأحرف مع أكواد الشفرة الموحدة المساوية لها. وتشترك الأبجدية الثابتة وعلامات الترقيم وأحرف التحكم في مع كل صفحات الأكواد لكود التبادل الموسعة للترميز العشري الثنائي المبينة في خط سميك. وبشكل نموذجي فإن الأكواد غير المعينة تملأ بأحرف عالمية أو أحرف محددة على المستوى الإقليمي في صفحة الكود المختلفة لكود التبادل الموسعة للترميز العشري الثنائي.
كتب إريك اس رايموند المتسلل ومؤيد البرمجيات مفتوحة المصدر كتب في مفرداته الخاصة بالمتسللين أن المتسللين الأولين والمبرمجين قد رغبوا عن كود التبادل الموسعة للترميز العشري الثنائي تقريباً بسبب تعدد نسخه المختلفة، والتي لا تماثل النسخ الأخرى، وقد أنتجته آي بي ام بغرض المنافسة المباشرة مع ترميز الكود الأمريكي القياسي لتبادل المعلومات والذي قد أكان أنشئ بالفعل.
ويحدد ملف مصطلحات الحرفة رقم 4.4.7 التعريف التالي:
واليوم، تطالب آي بي ام بأن تصبح شركة نظم مفتوحة ولكن وصف آي بي ام نفسها لكود التبادل الموسعة للترميز العشري الثنائي المتنوع وكيفية التبديل بينهم لا تزال تصنف بأنها سرية للغاية وتحرق قبل القراءة. ويشحب المتسللون حينما يُذكر اسم كود التبادل الموسعة للترميز العشري الثنائي ويعدونها مظهراً من مظاهر الشر الخالص.
وتتمثل إحدى العلل الرائجة الأخرى في أن أحرف أبجدية كود التبادل الموسعة للترميز العشري الثنائي تتبع ترميز البطاقات المثقبة المهملة بدلاً من الترتيب الخطي مثل ترميز الكود الأمريكي القياسي لتبادل المعلومات. ومن نتائجها المتزايدة أن كود الحرف I لا ينتج مثلما ينتج الحرفJ وكذلك فهناك فجوة بين الحرفين R وS .وبالتالي فإن برمجة شريط قيادة الطباعة البسيط ليدور من خلال أحرف الأبجدية فقط تعد مشكلة.
ولقد كانت تلك الاختلافات مصدراً للعديد من النكات. وتقول واحدة من أشهر النكات:
ويعد محرك البحث إنفو كوم مرجعاً لمجموعة أحرف كود التبادل الموسعة للترميز العشري الثنائي. ويوجد مجموعة من الحواسب العتيقة والماكينات الأخرى في غرفة الماكينات دون غرض.
وفيما يلي وصف للغرفة، مع استخدام كود التبادل الموسعة للترميز العشري الثنائي للتعبير عن لغة غير مفهومة:
جنو أرك في مجال الحوسبة هو نظام للتحكم الموزع في تعديل البرمجيات وجزء من مشروع جنو ويخضع لرخصة جنو العمومية. يستخدم النظام في تتبع التعديلات التي تضاف لشجرة الكود source tree ومساعدة المبرمجين على دمج أو التعامل مع التعديلات التي يقوم بها العديد من الأشخاص في أوقات مختلفة.
منذ عام 2009 توقفت عملية تطوير نظام جنو أرك فيما عدا إصلاح الثغرات الأمنية ولا يُنصح باستخدامه.
بما أن النظام موزع وغير مركزي فكل نسخة معدلة باستخدام أرك تحصل على تعريف ID لا يتكرر على مستوى العالم، يمكن استخدام هذا التعريف في بيئة العمل الموزعة لدمج التعديلات بسهولة أو انتقاء تعديلات معينة من مصادر مختلفة تماما.
غير مركزي يعني أنه لا داعي لوجود خادم مركزي يحتاج المطورون لتصريح بالدخول عليه حتى يشاركوا في البرنامج المراد تعديله. كما هو الحال في الأنظمة الأخرى يتم تخزين نسخة كاملة من المشروع للقراءة فقط على مستودع رسمي سواء باستخدام HTTP أو FTP أو SFTP ثم يسمح للمطورين بإضافة تعديلاتهم ونشرها في أرشيف (مستودع) عام خاص بهم حتى يتمكن كبير المطورين من دمج مجموعات التعديلات changesets يدويا في المستودع الرسمي.
لمحاكاة أسلوب عمل نظام التحكم المركزي بإمكان كبير المطورين إتاحة الوصول إلى شل shell الخادم (SSH) أو التصريح بالتعديل (FTP، SFTP، WebDAV) على الخادم مما يسمح للمستخدمين المصرح لهم بالقيام بالتعديلات على الخادم المركزي، ولكن في الغالب هناك ديكتاتور يتولى عملية دمج تعديلات المشاركين في المشاريع التي تدار بواسطة جنو أرك.
يحتوي جنو أرك على العديد من الخصائص الأخرى:
إما أن تنفذ عملية التعديل بالكامل أو لا تنفذ على الإطلاق. يجب أن تكون شجرة الكود سليمة قبل بدء أي عملية تعديل ولا ترى التعديلات إلا بعد اكتمالها، إن حدثت مقاطعة لهذه العملية تبقى التعديلات خفية ثم يتم التراجع عن عملية التعديل بأكملها قبل بدء أي عملية جديدة، تحول هذه الطريقة دون فساد أرشيف الكود والنسخ السليمة للمستخدمين الآخرين.
يتتبع نظام أرك مجموعات التعديلات – المشابهة للباتشات patches - بدلا من تتبع الملفات بشكل منفصل (كما يفعل CVS). كل مجموعة تعديلات تصف الفرق بين شجرة كود source tree وأخرى، لذا يمكن استخدام مجموعة التعديلات للوصول من نسخة إلى أخرى. يُنصح المطورون بإجراء عملية تعديل واحدة لكل خاصية أو إصلاح عيب bugfix.
عملية التفرع branching تتسم بالكفاءة ويمكن أن يدخل فيها عدد من الأرشيفات المختلفة. ببساطة يعلن الفرع (أو "تاج" tag) عن النسخة الذي جاء منها وتستمر عملية التطوير من هنا.
نظرا لاحتفاظ النظام بسجلات دائمة لكل النسخ الأصلية والنسخ المدمجة تستطيع عملية الدمج معرفة أي فرع يحتوى أي باتش تعديلات وبإمكانها القيام بعملية دمج من ثلاثة مصادر مختلفة مبنية على نسخة أصلية واحدة.
تحفظ مجموعة التعديلات بمصاحبة هاش لمنع اي فساد محتمل للملفات. باستخدام برنامج خارجي لتوقيع الملفات (مثل جنو بي جي أو أي برنامج مماثل لبي جي بي) يمكن توقيع ملفات الهاش أيضا لمنع أي تعديل غير مسموح به إذا تعرض الأرشيف للاختراق.
يمكن إعادة تسمية كل الملفات والمجلدات بسهولة، ويستخدم معهم تعريفات فريدة بدلا من الأسامي، بالتالي يمكن الاحتفاظ بتاريخ كل العمليات ودمج التعديلات بدون أي مشاكل حتى لو اختلفت أسامي الملفات في الأفرع.
يتم تتبع تصاريح الملفات. ويدعم النظام الوصلات الرمزية symbolic links ويتتبعها كما يتتبع الملفات والمجلدات.
خلفية المشروع والمسئولين عنه.
جنو أرك الإصدار 1 وتلا tla.
توماس لورد هو أول من بدأ في بناء نظام جنو أرك والمسئول الأول عنه وبدأ في هذا المشروع عام 2001. الأمر المستخدم لتعديل مستودعات أرك كان tla اختصارا لتوماس لورد أرك. بدأ لورد المشروع كمجموعة من برامج الشل كبديل عن نظام CVS،. وأصبح أرك جزءً من مشروع جنو في 2003.
إنشق عن مشروع جنو أرك أكثر من مشروع مما أدى إلى تخلي شركة كانونيكال المحدودة عن مشروع باز Bazوتخلي والتر لاندري عن مشروع أركس ArX المنشقين كلاهما عن مشروع أرك. كلا المشروعين أثارا رد فعل عنيف: مشروع أركس نشأ نتيجة لخلاف حول أسلوب الإدارة وانتقد لورد بشدة أسلوب إعلان كانونيكال عن مشروع باز.