Skip to content

1. مقدمة

ملف PDF للوثيقة متاح |هنا|.

الأمثلة الواردة في المستند متاحة |هنا|.

1.1. السياق

هذه الوثيقة ليست مخصصة للمبتدئين، بل للمستخدمين ذوي الخبرة القوية في لغة Java. وهي تستخدم المصادر التالية:

  1. وثائق [Reactive Programming]؛
  1. دوال لامدا في Java 8؛
  2. تعلم البرمجة التفاعلية باستخدام Java 8؛
  3. Java 8 في العمل؛

على عكس الوثائق الأخرى التي كتبتها، تعتمد هذه الوثيقة بشكل أساسي على الأمثلة ولا تتطرق إلى النظرية إلا بشكل موجز. ومع ذلك، يرافق كل مثال شرح، وهناك تسلسل منطقي في جميع أنحاء الوثيقة.

ReactiveX هي مجموعة من المكتبات التي تسهل البرمجة غير المتزامنة ومعالجة البيانات الناتجة:

 
 
 

تم تنفيذ مكتبة Rx في العديد من اللغات:

 

هنا، نركز على المكتبات التالية:

  • RxJava لعالم Java؛
  • RxAndroid، وهي نسخة مخصصة من RxJava لبيئة Android؛
  • RxSwing، وهو نسخة مخصصة من RxJava لبيئة Swing؛

تبدو مفاهيم البرمجة التفاعلية معقدة للوهلة الأولى. ولهذا السبب، لا يستهدف هذا المستند المبتدئين في المقام الأول. ومع ذلك، فقد بذلت جهدًا كبيرًا لشرح الكود المستخدم، ويمكن للمبتدئين التعرف على البرمجة التفاعلية باستخدام هذا المستند.

1.2. الأدوات المستخدمة

تم اختبار الأمثلة التالية في البيئة التالية:

  • جهاز يعمل بنظام Windows 10 Pro 64 بت؛
  • JDK 1.8 (القسم 1
  • IntelliJ IDEA Community Edition (القسم 10.4

1.3. كود المثال

يمكن العثور على كود الأمثلة التالية |هنا| في مجلد [dvp/examples].

 

المجلد [dvp/examples] [2] هو مشروع Gradle يحتوي على معظم الأمثلة الواردة في هذا المستند. يمكن فتحه بواسطة أي بيئة تطوير متكاملة (IDE) تدعم مدير مشاريع Gradle [http://gradle.org/]. يدعمه IntelliJ IDEA بشكل أصلي. بالنسبة لـ Eclipse أو NetBeans، يلزم وجود مكون إضافي. باستخدام IntelliJ IDEA Community Edition، يمكنك المتابعة على النحو التالي:

يتم تكوين مشروع [examples] بواسطة ملف [build.gradle] [4] التالي:


buildscript {
    repositories {
        mavenCentral()
    }
}
 
apply plugin: 'java'
 
jar {
    baseName = 'exemples-01'
    version = '0.0.1-SNAPSHOT'
}
 
repositories {
    mavenCentral()
}
 
dependencies {
    compile('io.reactivex:rxswing:0.25.0')
    compile('io.reactivex:rxjava:1.1.3')
    compile('com.fasterxml.jackson.core:jackson-databind:2.7.3')
}
 
task wrapper(type: Wrapper) {
    gradleVersion = '2.9'
}
  • الأسطر 18–22: تبعيات Gradle للمشروع (المكتبات المطلوب تنزيلها)؛
  • السطر 19: المكتبة المطلوبة لمثال Swing الذي تمت مناقشته في القسم 2؛
  • السطر 20: مكتبة RxJava؛
  • السطر 21: مكتبة JSON؛
  • الأسطر 9–12: خصائص أرشيف JAR الناتج عن ترجمة المشروع؛

لتنزيل التبعيات المطلوبة للمشروع، اتبع الخطوات التالية [1-4]: