0Pricing
Java Academy · درس

البدائل الحديثة: JSON وProtocol Buffers

استبدل تسلسل Java بـ Jackson JSON وProtocol Buffers لتحقيق تخزين دائم قابل للنقل وآمن

البدائل الحديثة: JSON وProtocol Buffers درس مجاني في Java Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Java Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Java Academy 4 دروس في المجموع.

لماذا نستبدل تسلسل Java؟

يعمل تسلسل Java على JVM فقط، كما أنه مطوّل وبطيء ويمثّل خطرًا أمنيًا. تفضّل التطبيقات الحديثة JSON، المقروء للبشر والمستقل عن اللغة، أو Protocol Buffers، المدمج والقائم على مخطط والسريع.

Jackson: مكتبة JSON الفعلية

يحوّل ObjectMapper في Jackson الكائنات إلى سلاسل JSON ويعيد تحويلها إلى كائنات. أضيفوا com.fasterxml.jackson.core:jackson-databind إلى مشروعكم.

ObjectMapper mapper = new ObjectMapper();
User user = new User("Alice", 30);
String json = mapper.writeValueAsString(user);
System.out.println(json); // {"name":"Alice","age":30}
User restored = mapper.readValue(json, User.class);

تخصيص Jackson باستخدام التعليقات التوضيحية

استخدموا @JsonProperty و@JsonIgnore و@JsonAlias و@JsonFormat للتحكم في التسلسل من دون تغيير أسماء الحقول في النموذج.

public class Product {
    @JsonProperty("product_name")
    private String name;
    @JsonIgnore
    private String internalCode;
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate releaseDate;
}

وحدات Jackson: دعم وقت Java

سجّلوا JavaTimeModule لتسلسل LocalDate وLocalDateTime وInstant بشكل صحيح، بدلًا من الحصول على كائن JSON مليء بالحقول.

ObjectMapper mapper = new ObjectMapper()
    .registerModule(new JavaTimeModule())
    .disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
String json = mapper.writeValueAsString(LocalDate.now());
System.out.println(json); // "2024-06-15"

GSON كبديل خفيف

يُعد GSON من Google أبسط من Jackson؛ فلا يحتاج إلى إعداد للأنواع الأساسية، لكنه يفتقر إلى ثراء التعليقات التوضيحية في Jackson وإلى أدائه عند التوسع.

Gson gson = new Gson();
String json = gson.toJson(new User("Bob", 25));
User user = gson.fromJson(json, User.class);

ما هي Protocol Buffers؟

تُعد Protocol Buffers (Protobuf) تنسيق Google الثنائي للتسلسل. تعرّفون مخططًا بامتداد .proto، ثم تترجمونه إلى فئات Java، وتحصلون على رسائل مدمجة مع دعم مضمّن للإصدارات.

// user.proto
syntax = "proto3";
message UserProto {
    string name = 1;
    int32  age  = 2;
}

ترميز رسالة Protobuf

تحتوي الفئات المُنشأة على واجهة برمجة تطبيقات للمنشئ. استدعوا toByteArray() للحصول على الحمولة الثنائية، وparseFrom(bytes) لفك ترميزها.

UserProto user = UserProto.newBuilder()
    .setName("Alice")
    .setAge(30)
    .build();
byte[] bytes = user.toByteArray();
UserProto restored = UserProto.parseFrom(bytes);
System.out.println(restored.getName());

المفاضلة بين JSON وProtobuf

JSON مقروء للبشر ولا يتطلب مخططًا، بينما Protobuf أصغر وأسرع بمقدار 3–10 مرات، لكنه يتطلب مخططًا وتوليدًا للشيفرة. اختاروا JSON لواجهات REST، وProtobuf للخدمات الداخلية ذات معدل النقل العالي.

تطور المخطط باستخدام Protobuf

تُرقّم حقول Protobuf ولا تُسمّى. يمكنكم إضافة حقول جديدة أو إهمال حقول قديمة بأمان من دون كسر العملاء الحاليين، ما دمتم لا تعيدون استخدام أرقام الحقول مطلقًا.

// v2 of user.proto — backwards compatible
message UserProto {
    string name  = 1;
    int32  age   = 2;
    string email = 3; // new in v2
}

الترحيل من تسلسل Java

استبدلوا مسارات الكتابة باستخدام ObjectOutputStream بـ ObjectMapper.writeValue() أو writeTo() في Protobuf. وأبقوا التسلسل القديم فقط لترحيل البيانات القديمة.

الأمان: لا توجد Gadgets لإلغاء التسلسل

لا يستدعي JSON وProtobuf مُنشئات أو دوال عشوائية أثناء إلغاء التسلسل، مما يزيل هجمات سلاسل الأدوات التي يعاني منها تسلسل Java.

اختبار سريع

ما إحدى المزايا الرئيسية لـ Protocol Buffers مقارنةً بـ JSON؟

مراجعة

استبدلوا تسلسل Java بـ Jackson JSON لواجهات REST وسهولة القراءة، أو بـ Protocol Buffers للخدمات الحساسة للأداء. فكلاهما متعدد اللغات، وقابل لتطوير المخطط، وآمن بطبيعته.

الأسئلة الشائعة

هل درس «البدائل الحديثة: JSON وProtocol Buffers» مجاني؟

نعم — نص درس «البدائل الحديثة: JSON وProtocol Buffers» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Java Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Java Academy 4 دروس في المجموع.

ماذا ستتعلم في «البدائل الحديثة: JSON وProtocol Buffers»؟

استبدل تسلسل Java بـ Jackson JSON وProtocol Buffers لتحقيق تخزين دائم قابل للنقل وآمن تتمرن على Java Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Java Academy؟

لا تُشترط خبرة سابقة. Java Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «البدائل الحديثة: JSON وProtocol Buffers»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Java Academy هذا؟

نعم. كل درس في Java Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أساسيات تسلسل Java
  2. الحقول transient وserialVersionUID
  3. التسلسل المخصص: writeObject وreadObject
  4. البدائل الحديثة: JSON وProtocol Buffers
← العودة إلى Java Academy