Skip to content

1. مقدمة

ملف PDF الخاص بالوثيقة متاح |HERE|.

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

1.1. Contexte

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

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

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

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. أكواد الأمثلة

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

 

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

يتم تكوين المشروع [exemples] بواسطة الملف [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]: