Vavr Java: पूर्ण गाइड, उदाहरण और उपयोग के तरीके

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Vavr Java: फंक्शनल प्रोग्रामिंग की पूरी गाइड

1. Vavr क्या है और इसकी ज़रूरत क्यों है?

Vavr (पहले Javaslang के नाम से जाना जाता था) Java के लिए एक शक्तिशाली फंक्शनल प्रोग्रामिंग लाइब्रेरी है। यह इम्यूटेबल (अपरिवर्तनीय) कलेक्शन, फंक्शनल डेटा स्ट्रक्चर और हायर-ऑर्डर फंक्शन के लिए यूटिलिटीज़ प्रदान करती है। मानक Java Collections Framework के विपरीत, Vavr इम्यूटेबिलिटी और कोड की अभिव्यक्ति पर जोर देती है, जिससे आप अधिक अनुमानित, थ्रेड-सेफ और संक्षिप्त प्रोग्राम लिख सकते हैं।

Vavr की ज़रूरत क्यों है? आधुनिक Java (8 और उसके बाद) में लैम्ब्डा एक्सप्रेशन और Stream API आ गए हैं, लेकिन मानक कलेक्शन अभी भी म्यूटेबल (परिवर्तनीय) हैं। इससे साइड इफेक्ट, मल्टीथ्रेडिंग में जटिलताएं और बहुत सारा बॉयलरप्लेट कोड लिखने की ज़रूरत पड़ती है। Vavr इन समस्याओं को हल करती है:

  • इम्यूटेबल कलेक्शन (List, Set, Map) जिनका API Scala या Kotlin जैसा समृद्ध है।
  • Option, Try, Either, Validation टाइप्स जो try-catch ब्लॉक के बिना null, एक्सेप्शन और एरर को सुरक्षित रूप से हैंडल करते हैं।
  • टपल (Tuple) जो DTO बनाए बिना अलग-अलग टाइप के वैल्यू को ग्रुप करने में मदद करते हैं।
  • फंक्शनल इंटरफेस (FunctionN, CheckedFunction) जिनमें कम्पोज़ीशन, मेमोइज़ेशन और पार्शियल एप्लीकेशन की सुविधा है।
  • लेज़ी इवैल्यूएशन (Lazy) और पैटर्न मैचिंग (Pattern Matching)।

Vavr उन प्रोजेक्ट्स में विशेष रूप से उपयोगी है जहां उच्च विश्वसनीयता (जैसे फाइनेंशियल सिस्टम, डेटा प्रोसेसिंग), मल्टीथ्रेडिंग (इम्यूटेबिलिटी पैरेललिज़्म को आसान बनाती है) या बस अधिक डिक्लेरेटिव और साफ कोड लिखने की इच्छा हो। यह मानक Java को रिप्लेस नहीं करती, बल्कि इसे पूरक बनाती है, जिससे आप हर काम के लिए सही टूल चुन सकते हैं।

2. इंस्टॉलेशन

Vavr Maven Central के ज़रिए उपलब्ध है। इसे अपने प्रोजेक्ट में जोड़ने के लिए नीचे दी गई बिल्ड सिस्टम का उपयोग करें:

Maven

<dependency>
    <groupId>io.vavr</groupId>
    <artifactId>vavr</artifactId>
    <version>0.10.4</version>
</dependency>

Gradle

implementation 'io.vavr:vavr:0.10.4'

Gradle (Kotlin DSL)

implementation("io.vavr:vavr:0.10.4")

Java 9+ मॉड्यूलर सिस्टम के लिए, module-info.java में यह जोड़ें:

requires vavr;

इस लेख को लिखने के समय नवीनतम संस्करण 0.10.4 है (2019 में जारी, लेकिन स्थिर और व्यापक रूप से उपयोग किया जाता है)। नवीनतम संस्करण MVNRepository पर देखा जा सकता है।

3. त्वरित शुरुआत — एक न्यूनतम काम करने वाला उदाहरण

VavrDemo.java नामक एक क्लास बनाएं और इसे रन करें:

import io.vavr.collection.List;
import io.vavr.control.Option;

public class VavrDemo {
    public static void main(String[] args) {
        // एक इम्यूटेबल लिस्ट बनाएं
        List<Integer> numbers = List.of(1, 2, 3, 4, 5);

        // फंक्शनल ट्रांसफॉर्मेशन
        List<Integer> doubled = numbers
            .filter(n -> n % 2 == 0)   // सम संख्याएं
            .map(n -> n * 2);          // दोगुना करें

        System.out.println(doubled); // List(4, 8)

        // Optional के बजाय Option
        Option<String> maybeName = Option.of("Rahul");
        String greeting = maybeName
            .map(name -> "नमस्ते, " + name)
            .getOrElse("नमस्ते, अजनबी");

        System.out.println(greeting); // नमस्ते, Rahul
    }
}

यह उदाहरण दो मुख्य विशेषताओं को दिखाता है: मेथड चेनिंग के साथ इम्यूटेबल कलेक्शन और Option के ज़रिए null का सुरक्षित हैंडलिंग।

4. मुख्य तरीके, फंक्शन और क्लासेस

4.1. Option — Optional का सुरक्षित विकल्प

अनुशंसाएँ