प्रतिक्रियाशील धाराएँ: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 15: Line 15:


== उत्पत्ति ==
== उत्पत्ति ==
प्रतिक्रियाशील धाराएँ की शुरुआत 2013 के अंत में नेटफ्लिक्स, पिवोटल और लाइटबेंड के अभियन्ताओ के बीच एक प्रेरणा के रूप में हुई। कुछ शुरुआती चर्चाएं 2013 में लाइटबेंड में प्ले और अक्का टीमों के बीच प्रारंभ हुईं। [3][4] लाइटबेंड प्रतिक्रियाशील धाराएँ के मुख्य योगदानकर्ताओं में से एक है। [5] अन्य योगदानकर्ताओं में रेड हैट, ओरेकल, ट्विटर और स्प्रे.आईओ सम्मलित हैं।[6]
प्रतिक्रियाशील धाराएँ की शुरुआत 2013 के अंत में नेटफ्लिक्स, पिवोटल और लाइटबेंड के अभियन्ताओ के बीच एक प्रेरणा के रूप में हुई। कुछ शुरुआती चर्चाएं 2013 में लाइटबेंड में प्ले और अक्का टीमों के बीच प्रारंभ हुईं। [3][4] लाइटबेंड प्रतिक्रियाशील धाराएँ के मुख्य योगदानकर्ताओं में से है। [5] अन्य योगदानकर्ताओं में रेड हैट, ओरेकल, ट्विटर और स्प्रे.आईओ सम्मलित हैं।[6]
== लक्ष्य ==
== लक्ष्य ==
प्रतिक्रियाशील धाराएँ का मुख्य लक्ष्य एक अतुल्यकालिक सीमा के पार स्ट्रीम डेटा के आदान-प्रदान को नियंत्रित करना है - जैसे तत्वों को दूसरे थ्रेड या थ्रेड-पूल पर भेजना - जबकि यह सुनिश्चित करना कि प्राप्त करने वाला पक्ष डेटा की मनमानी मात्रा को बफर करने के लिए विवश नहीं है। दूसरे शब्दों में, धागों के बीच मध्यस्थता करने वाली कतारों को सीमित करने की अनुमति देने के लिए बैक प्रेशर इस मॉडल का एक अभिन्न अंग है।
प्रतिक्रियाशील धाराएँ का मुख्य लक्ष्य एक अतुल्यकालिक सीमा के पार स्ट्रीम डेटा के आदान-प्रदान को नियंत्रित करना है - जैसे तत्वों को दूसरे थ्रेड या थ्रेड-पूल पर भेजना - जबकि यह सुनिश्चित करना कि प्राप्त करने वाला पक्ष डेटा की मनमानी मात्रा को बफर करने के लिए विवश नहीं है। दूसरे शब्दों में, धागों के बीच मध्यस्थता करने वाली कतारों को सीमित करने की अनुमति देने के लिए बैक प्रेशर इस मॉडल का एक अभिन्न अंग है।
Line 21: Line 21:
विनिर्देश का अभिप्राय कई अनुरूप [[कार्यान्वयन]] के निर्माण की अनुमति देना है, जो नियमों का पालन करने के आधार पर एक स्ट्रीम अनुप्रयोग के संपूर्ण प्रसंस्करण ग्राफ में उल्लिखित लाभों और विशेषताओं को संरक्षित करते हुए, सुचारू रूप से [[ इंटरोऑपरेबिलिटी ]] करने में सक्षम होंगे। निःशुल्क उपलब्ध [[प्रौद्योगिकी अनुकूलता किट]] <ref name="rs-tck">{{cite web|url=https://github.com/reactive-streams/reactive-streams-jvm/tree/master/tck|title=प्रतिक्रियाशील धाराएँ टीसीके|website=[[GitHub]] }}</ref> विनिर्देश के साथ विकसित किया गया था जो विनिर्देश के कार्यान्वयनकर्ताओं को यह सत्यापित करने की अनुमति देता है कि क्या वे संभावित संतति स्थितियों की जांच सहित सभी नियमों और आवश्यकताओं का आवरण करते हैं।
विनिर्देश का अभिप्राय कई अनुरूप [[कार्यान्वयन]] के निर्माण की अनुमति देना है, जो नियमों का पालन करने के आधार पर एक स्ट्रीम अनुप्रयोग के संपूर्ण प्रसंस्करण ग्राफ में उल्लिखित लाभों और विशेषताओं को संरक्षित करते हुए, सुचारू रूप से [[ इंटरोऑपरेबिलिटी ]] करने में सक्षम होंगे। निःशुल्क उपलब्ध [[प्रौद्योगिकी अनुकूलता किट]] <ref name="rs-tck">{{cite web|url=https://github.com/reactive-streams/reactive-streams-jvm/tree/master/tck|title=प्रतिक्रियाशील धाराएँ टीसीके|website=[[GitHub]] }}</ref> विनिर्देश के साथ विकसित किया गया था जो विनिर्देश के कार्यान्वयनकर्ताओं को यह सत्यापित करने की अनुमति देता है कि क्या वे संभावित संतति स्थितियों की जांच सहित सभी नियमों और आवश्यकताओं का आवरण करते हैं।


प्रतिक्रियाशील धाराएँ का दायरा [[अप्लिकेशन प्रोग्रामिंग अंतरफलक]], विधियों और प्रोटोकॉल का एक न्यूनतम सेट है जो गैर-अवरुद्ध बैक प्रेशर के साथ डेटा की अतुल्यकालिक धाराओं को प्राप्त करने के लिए आवश्यक संचालन और इकाइयों का वर्णन करता है।{{sfn|Walls|2019|loc=§10.1.1 Defining Reactive Streams|pp=243-245}} [[अंतिम उपयोगकर्ता]]|अंत-उपयोगकर्ता [[डोमेन-विशिष्ट भाषा]] या प्रोटोकॉल बाइंडिंग [[एपीआई]] को जानबूझकर अलग-अलग कार्यान्वयन को प्रोत्साहित करने और सक्षम करने के दायरे से बाहर रखा गया है जो संभावित रूप से अपने प्लेटफ़ॉर्म के मुहावरों के लिए यथासंभव सही रहने के लिए विभिन्न [[प्रोग्रामिंग भाषा]]ओं का उपयोग करते हैं।
प्रतिक्रियाशील धाराएँ का दायरा [[अप्लिकेशन प्रोग्रामिंग अंतरफलक]], विधियों और प्रोटोकॉल का एक न्यूनतम सेट है जो गैर-अवरुद्ध बैक प्रेशर के साथ डेटा की अतुल्यकालिक धाराओं को प्राप्त करने के लिए आवश्यक संचालन और इकाइयों का वर्णन करता है। {{sfn|Walls|2019|loc=§10.1.1 Defining Reactive Streams|pp=243-245}} [[अंतिम उपयोगकर्ता]]|अंत-उपयोगकर्ता [[डोमेन-विशिष्ट भाषा]] या प्रोटोकॉल बाइंडिंग [[एपीआई]] को अभिप्रायपूर्वक अलग-अलग कार्यान्वयन को प्रोत्साहित करने और सक्षम करने के चक्र से बाहर रखा गया है जो संभावित रूप से अपने प्लेटफ़ॉर्म के मुहावरों के लिए यथासंभव सही रहने के लिए विभिन्न [[प्रोग्रामिंग भाषा]]ओं का उपयोग करते हैं।


== जावा मानक में समावेश ==
== जावा मानक में समावेश ==
सफल साबित होने और पर्याप्त पुस्तकालयों और विक्रेताओं द्वारा अपनाए जाने पर, आधिकारिक जावा मानक पुस्तकालय में भविष्य में शामिल करने के इरादे से विनिर्देश विकसित किया गया।
सफल सिद्ध  होने और पर्याप्त पुस्तकालयों और विक्रेताओं द्वारा अपनाए जाने पर, आधिकारिक जावा मानक पुस्तकालय में भविष्य में सम्मलित करने के इरादे से विनिर्देश विकसित किया गया।


[[जेएसआर 166]] के नेता [[डौग ली]] द्वारा प्रतिक्रियाशील धाराएँ को [[ जावा (सॉफ़्टवेयर प्लेटफ़ॉर्म) ]] 9 का हिस्सा बनने का प्रस्ताव दिया गया था।<ref>{{Cite web |url=http://cs.oswego.edu/pipermail/concurrency-interest/2015-January/013641.html |title=jdk9 Candidate classes Flow and SubmissionPublisher |access-date=2015-12-23 |archive-date=2015-01-20 |archive-url=https://web.archive.org/web/20150120055013/http://cs.oswego.edu/pipermail/concurrency-interest/2015-January/013641.html |url-status=dead }}</ref> एक नए प्रवाह वर्ग के रूप में<ref>{{Cite web |url=http://gee.cs.oswego.edu/dl/jsr166/dist/docs/java/util/concurrent/Flow.html |title=java.util.concurrent.Flow|access-date=2015-12-23 |archive-date=2016-02-03 |archive-url=https://web.archive.org/web/20160203191314/http://gee.cs.oswego.edu/dl/jsr166/dist/docs/java/util/concurrent/Flow.html |url-status=dead }}</ref> इसमें वर्तमान में प्रतिक्रियाशील धाराएँ द्वारा प्रदान किए गए इंटरफेस शामिल होंगे।<ref name="infoq"/><ref name="jep266">[http://openjdk.java.net/jeps/266 JEP 266: More Concurrency Updates]</ref> प्रतिक्रियाशील धाराएँ की सफल 1.0 रिलीज और बढ़ती स्वीकार्यता के बाद, प्रस्ताव को स्वीकार कर लिया गया और [[ जेडीके संवर्धन प्रस्ताव ]]-266 के माध्यम से प्रतिक्रियाशील धाराएँ को जावा (सॉफ्टवेयर प्लेटफॉर्म) में शामिल किया गया।<ref name="jep266"/>
[[जेएसआर 166]] के नेता [[डौग ली]] द्वारा प्रतिक्रियाशील धाराएँ को [[ जावा (सॉफ़्टवेयर प्लेटफ़ॉर्म) ]] 9 का खंड बनने का प्रस्ताव दिया गया था। <ref>{{Cite web |url=http://cs.oswego.edu/pipermail/concurrency-interest/2015-January/013641.html |title=jdk9 Candidate classes Flow and SubmissionPublisher |access-date=2015-12-23 |archive-date=2015-01-20 |archive-url=https://web.archive.org/web/20150120055013/http://cs.oswego.edu/pipermail/concurrency-interest/2015-January/013641.html |url-status=dead }}</ref> एक नए प्रवाह वर्ग के रूप में<ref>{{Cite web |url=http://gee.cs.oswego.edu/dl/jsr166/dist/docs/java/util/concurrent/Flow.html |title=java.util.concurrent.Flow|access-date=2015-12-23 |archive-date=2016-02-03 |archive-url=https://web.archive.org/web/20160203191314/http://gee.cs.oswego.edu/dl/jsr166/dist/docs/java/util/concurrent/Flow.html |url-status=dead }}</ref> इसमें वर्तमान में प्रतिक्रियाशील धाराएँ द्वारा प्रदान किए गए इंटरफेस सम्मलित होंगे। <ref name="infoq"/><ref name="jep266">[http://openjdk.java.net/jeps/266 JEP 266: More Concurrency Updates]</ref> प्रतिक्रियाशील धाराएँ की सफल 1.0 रिलीज और बढ़ती स्वीकार्यता के बाद, प्रस्ताव को स्वीकार कर लिया गया और [[ जेडीके संवर्धन प्रस्ताव ]]-266 के माध्यम से प्रतिक्रियाशील धाराएँ को जावा (सॉफ्टवेयर प्लेटफॉर्म) में सम्मलित किया गया।<ref name="jep266"/>




Line 32: Line 32:
30 अप्रैल, 2015 को [[जेवीएम]] के लिए प्रतिक्रियाशील धाराएँ का संस्करण 1.0.0 जारी किया गया था,<ref name="infoq">[http://www.infoq.com/news/2015/06/Reactive-Streams-JVM-Version Reactive Streams Releases First Stable Version for JVM]</ref><ref name="jaxenter">[https://jaxenter.com/reactive-streams-1-0-0-a-new-standard-in-reactive-data-processing-117123.html Reactive Streams 1.0.0 – a new standard in reactive data processing]</ref><ref name="announce-1.0">[http://www.reactive-streams.org/announce-1.0.0 Reactive Streams 1.0.0 is here!]</ref> [[ जाने दो ]] सहित,<ref>[http://www.reactive-streams.org/reactive-streams-1.0.0-javadoc/ Java API]</ref> एक पाठ्य विशिष्टता,<ref>[https://github.com/reactive-streams/reactive-streams-jvm/blob/v1.0.0/README.md#specification Reactive Streams for the JVM specification]</ref> एक प्रौद्योगिकी अनुकूलता किट और कार्यान्वयन उदाहरण। यह 1.0.0 के लिए TCK द्वारा सत्यापित अनेक अनुरूप कार्यान्वयनों के साथ आता है, जो वर्णानुक्रम में सूचीबद्ध हैं:<ref name="announce-1.0"/>
30 अप्रैल, 2015 को [[जेवीएम]] के लिए प्रतिक्रियाशील धाराएँ का संस्करण 1.0.0 जारी किया गया था,<ref name="infoq">[http://www.infoq.com/news/2015/06/Reactive-Streams-JVM-Version Reactive Streams Releases First Stable Version for JVM]</ref><ref name="jaxenter">[https://jaxenter.com/reactive-streams-1-0-0-a-new-standard-in-reactive-data-processing-117123.html Reactive Streams 1.0.0 – a new standard in reactive data processing]</ref><ref name="announce-1.0">[http://www.reactive-streams.org/announce-1.0.0 Reactive Streams 1.0.0 is here!]</ref> [[ जाने दो ]] सहित,<ref>[http://www.reactive-streams.org/reactive-streams-1.0.0-javadoc/ Java API]</ref> एक पाठ्य विशिष्टता,<ref>[https://github.com/reactive-streams/reactive-streams-jvm/blob/v1.0.0/README.md#specification Reactive Streams for the JVM specification]</ref> एक प्रौद्योगिकी अनुकूलता किट और कार्यान्वयन उदाहरण। यह 1.0.0 के लिए TCK द्वारा सत्यापित अनेक अनुरूप कार्यान्वयनों के साथ आता है, जो वर्णानुक्रम में सूचीबद्ध हैं:<ref name="announce-1.0"/>


* अक्का (टूलकिट) स्ट्रीम<ref>[http://www.infoq.com/news/2014/04/reactive-streams-akka-streams InfoQ: Reactive Streams with Akka Streams]</ref><ref>{{Cite web |url=http://doc.akka.io/docs/akka-stream-and-http-experimental/2.0.1/stream-design.html |title=अक्का स्ट्रीम के पीछे डिज़ाइन सिद्धांत|access-date=2015-12-23 |archive-date=2016-01-12 |archive-url=https://web.archive.org/web/20160112054130/http://doc.akka.io/docs/akka-stream-and-http-experimental/2.0.1/stream-design.html |url-status=dead }}</ref>
* अक्का (टूलकिट) स्ट्रीम <ref>[http://www.infoq.com/news/2014/04/reactive-streams-akka-streams InfoQ: Reactive Streams with Akka Streams]</ref><ref>{{Cite web |url=http://doc.akka.io/docs/akka-stream-and-http-experimental/2.0.1/stream-design.html |title=अक्का स्ट्रीम के पीछे डिज़ाइन सिद्धांत|access-date=2015-12-23 |archive-date=2016-01-12 |archive-url=https://web.archive.org/web/20160112054130/http://doc.akka.io/docs/akka-stream-and-http-experimental/2.0.1/stream-design.html |url-status=dead }}</ref>
* [[MongoDB]]<ref>[https://mongodb.github.io/mongo-java-driver-reactivestreams/ MongoDB Reactive Streams Java Driver]</ref>
* [[MongoDB]] <ref>[https://mongodb.github.io/mongo-java-driver-reactivestreams/ MongoDB Reactive Streams Java Driver]</ref>
* चूहा पैक<ref>[https://ratpack.io/manual/current/streams.html#the_reactive_streams_api Ratpack: The Reactive Streams API]</ref>
* Ratpack <ref>[https://ratpack.io/manual/current/streams.html#the_reactive_streams_api Ratpack: The Reactive Streams API]</ref>
* प्रतिक्रियाशील खरगोश{{snd}} [[RabbitMQ]]/[[AMQP]] के लिए ड्राइवर
* प्रतिक्रियाशील Rabbit{{snd}} [[RabbitMQ]]/[[AMQP]] के लिए ड्राइवर
* [[स्प्रिंग फ्रेमवर्क]]{{sfn|Walls|2019|loc=§10.1.1 Defining Reactive Streams|pp=243-245}} और पिवोटल सॉफ्टवेयर प्रोजेक्ट रिएक्टर<ref>[https://spring.io/blog/2015/02/18/reactor-2-0-0-rc1-with-native-reactive-streams-support-now-available Reactor 2.0.0.RC1 with native Reactive Streams support now available!]</ref>
* [[स्प्रिंग फ्रेमवर्क]] {{sfn|Walls|2019|loc=§10.1.1 Defining Reactive Streams|pp=243-245}} और पिवोटल सॉफ्टवेयर परियोजना रिएक्टर <ref>[https://spring.io/blog/2015/02/18/reactor-2-0-0-rc1-with-native-reactive-streams-support-now-available Reactor 2.0.0.RC1 with native Reactive Streams support now available!]</ref>
* नेटफ्लिक्स आरएक्सजावा<ref>[http://akarnokd.blogspot.com/2015/06/the-reactive-streams-api-part-1.html Advanced RxJava: The Reactive-Streams API (part 1)]</ref>
* नेटफ्लिक्स आरएक्सजावा <ref>[http://akarnokd.blogspot.com/2015/06/the-reactive-streams-api-part-1.html Advanced RxJava: The Reactive-Streams API (part 1)]</ref>
* [[ चालाक (लाइब्रेरी) ]] 3.0<ref>[http://www.infoq.com/news/2015/05/slick3 Slick 3: Reactive Streams for Asynchronous Database Access in Scala]</ref><ref>[http://slick.typesafe.com/news/2015/04/29/slick-3.0.0-released.html Slick 3.0.0]</ref>
* [[ चालाक (लाइब्रेरी) ]] 3.0 <ref>[http://www.infoq.com/news/2015/05/slick3 Slick 3: Reactive Streams for Asynchronous Database Access in Scala]</ref><ref>[http://slick.typesafe.com/news/2015/04/29/slick-3.0.0-released.html Slick 3.0.0]</ref>
* Vert.x 3.0<ref>[http://vertx.io/docs/vertx-reactive-streams/java/ Vert.x Reactive Streams Integration]</ref>
* Vert''.x'' 3.0<ref>[http://vertx.io/docs/vertx-reactive-streams/java/ Vert.x Reactive Streams Integration]</ref>
*[https://smallrye.io/smallrye-mutiny/index.html विद्रोह]
*[https://smallrye.io/smallrye-mutiny/index.html विद्रोह]
*[https://helidon.io/docs/v2/#/se/reactivestreams/01_overview हेलिडॉन]
*[https://helidon.io/docs/v2/#/se/reactivestreams/01_overview हेलिडॉन]
अन्य कार्यान्वयनों में [[अपाचे कैसेंड्रा]],<ref>[http://www.planetcassandra.org/blog/accessing-cassandra-in-a-reactive-way/ Accessing Cassandra in a Reactive Way]</ref> लोचदार खोज,<ref>[https://github.com/sksamuel/elastic4s elastic4s — Non blocking, type safe DSL and Scala client for Elasticsearch]</ref> [[अपाचे काफ्का]],<ref>[https://softwaremill.com/reactive-kafka/ Reactive Streams for Apache Kafka]</ref> समानांतर ब्रह्मांड क्वासर,<ref>{{Cite web |url=http://blog.paralleluniverse.co/2015/06/25/reactive-streams/ |title=क्वासर और प्रतिक्रियाशील धाराएँ|access-date=2015-12-24 |archive-date=2015-10-04 |archive-url=https://web.archive.org/web/20151004213200/http://blog.paralleluniverse.co/2015/06/25/reactive-streams/ |url-status=dead }}</ref> प्ले फ्रेमवर्क,<ref>[https://www.playframework.com/documentation/2.4.x/ReactiveStreamsIntegration Play Framework — Reactive Streams integration (experimental)]</ref> शस्त्रागार.<ref>[https://line.github.io/armeria/index.html#completely-asynchronous-and-reactive Armeria - Completely asynchronous and reactive]</ref>
अन्य कार्यान्वयनों में [[अपाचे कैसेंड्रा]],<ref>[http://www.planetcassandra.org/blog/accessing-cassandra-in-a-reactive-way/ Accessing Cassandra in a Reactive Way]</ref> लोचदार खोज,<ref>[https://github.com/sksamuel/elastic4s elastic4s — Non blocking, type safe DSL and Scala client for Elasticsearch]</ref> [[अपाचे काफ्का]],<ref>[https://softwaremill.com/reactive-kafka/ Reactive Streams for Apache Kafka]</ref> समानांतर ब्रह्मांड क्वासर,<ref>{{Cite web |url=http://blog.paralleluniverse.co/2015/06/25/reactive-streams/ |title=क्वासर और प्रतिक्रियाशील धाराएँ|access-date=2015-12-24 |archive-date=2015-10-04 |archive-url=https://web.archive.org/web/20151004213200/http://blog.paralleluniverse.co/2015/06/25/reactive-streams/ |url-status=dead }}</ref> प्ले फ्रेमवर्क,<ref>[https://www.playframework.com/documentation/2.4.x/ReactiveStreamsIntegration Play Framework — Reactive Streams integration (experimental)]</ref> शस्त्रागार.<ref>[https://line.github.io/armeria/index.html#completely-asynchronous-and-reactive Armeria - Completely asynchronous and reactive]</ref>


स्प्रिंग फ्रेमवर्क को प्रतिक्रियाशील धाराएँ संगत रिएक्टर कोर पर बनाने की घोषणा की गई है।<ref>[http://spring.io/blog/2016/02/09/reactive-spring Reactive Spring]</ref>
स्प्रिंग 5 को प्रतिक्रियाशील धाराएँ संगत प्रतिक्रिया आन्तरक पर बनाने की घोषणा की गई है


अमेज़ॅन (कंपनी) ने घोषणा की कि उसकी [[अमेज़न वेब सेवाएँ]] [[ सॉफ़्टवेयर विकास किट | सॉफ़्टवेयर विकास किट]] संस्करण 2.0 में अपने क्लाइंट लाइब्रेरी में स्ट्रीमिंग क्षमताएं प्रदान करने के लिए प्रतिक्रियाशील धाराएँ का समर्थन करेगी।<ref name="aws">{{cite web|url=https://aws.amazon.com/blogs/developer/aws-sdk-for-java-2-0-developer-preview/|title=AWS SDK for Java 2.0 developer preview announcement}}</ref>
अमेज़ॅन (कंपनी) ने घोषणा की कि उसकी [[अमेज़न वेब सेवाएँ]] [[ सॉफ़्टवेयर विकास किट | सॉफ़्टवेयर विकास किट]] संस्करण 2.0 में अपने क्लाइंट लाइब्रेरी में स्ट्रीमिंग क्षमताएं प्रदान करने के लिए प्रतिक्रियाशील धाराएँ का समर्थन करेगी। <ref name="aws">{{cite web|url=https://aws.amazon.com/blogs/developer/aws-sdk-for-java-2-0-developer-preview/|title=AWS SDK for Java 2.0 developer preview announcement}}</ref>


प्रतिक्रियाशील धाराएँ 1.0.1 9 अगस्त, 2017 को जारी किया गया है, जिसमें विनिर्देशन सटीकता, टीसीके सुधार और अन्य स्पष्टीकरण में विभिन्न सुधार शामिल हैं। विनिर्देश और इंटरफ़ेस 1.0.0 संस्करण के साथ पूरी तरह से पीछे की ओर संगत रहे, हालांकि इसका उद्देश्य भविष्य के कार्यान्वयनकर्ताओं के लिए अपनाने को सुव्यवस्थित करना और साथ ही [[ओपनजेडीके]] द्वारा निर्धारित कुछ अतिरिक्त आवश्यकताओं के साथ संरेखित करना था।<ref>{{cite web|url=http://www.reactive-streams.org/announce-1.0.1|title=Reactive Streams 1.0.1 Release Announcement}}</ref>
प्रतिक्रियाशील धाराएँ 1.0.1 9 अगस्त, 2017 को जारी किया गया है, जिसमें विनिर्देशन सटीकता, टीसीके सुधार और अन्य स्पष्टीकरण में विभिन्न सुधार सम्मलित हैं। विनिर्देश और इंटरफ़ेस 1.0.0 संस्करण के साथ पूरी तरह से पीछे की ओर संगत रहे, चूंकि इसका उद्देश्य भविष्य के कार्यान्वयनकर्ताओं के लिए अपनाने को सुव्यवस्थित करना और साथ ही [[ओपनजेडीके]] द्वारा निर्धारित कुछ अतिरिक्त आवश्यकताओं के साथ संरेखित करना था।<ref>{{cite web|url=http://www.reactive-streams.org/announce-1.0.1|title=Reactive Streams 1.0.1 Release Announcement}}</ref>






== बंदरगाह और प्रभाव ==
== बंदरगाह और प्रभाव ==
* .NET फ्रेमवर्क|.NET प्लेटफॉर्म के लिए एक ही कार्य समूह के तहत विनिर्देश, इंटरफेस और टीसीके का एक सीधा पोर्ट उपलब्ध कराया गया था।<ref>{{cite web|url=https://github.com/reactive-streams/reactive-streams-dotnet|title=रिएक्टिव स्ट्रीम .NET|website=[[GitHub]] }}</ref>
* .NET प्लेटफॉर्म के लिए एक ही कार्य समूह के तहत विनिर्देश, इंटरफेस और टीसीके का एक सीधा पोर्ट उपलब्ध कराया गया था।<ref>{{cite web|url=https://github.com/reactive-streams/reactive-streams-dotnet|title=रिएक्टिव स्ट्रीम .NET|website=[[GitHub]] }}</ref>
* जब एलिक्सिर (प्रोग्रामिंग भाषा) भाषा ने जेनस्टेज नामक अपनी स्ट्रीमिंग एपीआई पेश की, तो लेखकों ने अक्का-स्ट्रीम और प्रतिक्रियाशील धाराएँ परियोजनाओं को धन्यवाद दिया, जिन्होंने हमें चरणों के बीच मांग-संचालित विनिमय को लागू करने में मार्गदर्शन प्रदान किया।<ref>{{cite web|url=https://elixir-lang.org/blog/2016/07/14/announcing-genstage/|title=Elixir blog: Announcing GenStage}}</ref>
* जब एलिक्सिर (प्रोग्रामिंग भाषा) भाषा ने जेनस्टेज नामक अपनी द्रवीभूत एपीआई पेश की, तो लेखकों ने अक्का-स्ट्रीम और प्रतिक्रियाशील धाराएँ परियोजनाओं को धन्यवाद दिया, जिन्होंने हमें चरणों के बीच मांग-संचालित विनिमय को प्रयुक्त करने में मार्गदर्शन प्रदान किया।<ref>{{cite web|url=https://elixir-lang.org/blog/2016/07/14/announcing-genstage/|title=Elixir blog: Announcing GenStage}}</ref>





Revision as of 12:58, 19 July 2023

Reactive Streams
Initial release15 May 2015; 9 years ago (2015-05-15)
Stable release
1.0.3 / 23 August 2019; 5 years ago (2019-08-23)
Repositorygithub.com/reactive-streams/reactive-streams-jvm
Written inJava (Scala, Groovy, Kotlin), .NET
Websitereactive-streams.org

प्रतिक्रियाशील धाराएँ नॉन-ब्लॉकिंग बैक प्रेशर के साथ अतुल्यकालिक धारा प्रसंस्करण के लिए एक मानक प्रदान करने की एक प्रेरणा है। [1][2]

उत्पत्ति

प्रतिक्रियाशील धाराएँ की शुरुआत 2013 के अंत में नेटफ्लिक्स, पिवोटल और लाइटबेंड के अभियन्ताओ के बीच एक प्रेरणा के रूप में हुई। कुछ शुरुआती चर्चाएं 2013 में लाइटबेंड में प्ले और अक्का टीमों के बीच प्रारंभ हुईं। [3][4] लाइटबेंड प्रतिक्रियाशील धाराएँ के मुख्य योगदानकर्ताओं में से है। [5] अन्य योगदानकर्ताओं में रेड हैट, ओरेकल, ट्विटर और स्प्रे.आईओ सम्मलित हैं।[6]

लक्ष्य

प्रतिक्रियाशील धाराएँ का मुख्य लक्ष्य एक अतुल्यकालिक सीमा के पार स्ट्रीम डेटा के आदान-प्रदान को नियंत्रित करना है - जैसे तत्वों को दूसरे थ्रेड या थ्रेड-पूल पर भेजना - जबकि यह सुनिश्चित करना कि प्राप्त करने वाला पक्ष डेटा की मनमानी मात्रा को बफर करने के लिए विवश नहीं है। दूसरे शब्दों में, धागों के बीच मध्यस्थता करने वाली कतारों को सीमित करने की अनुमति देने के लिए बैक प्रेशर इस मॉडल का एक अभिन्न अंग है।

विनिर्देश का अभिप्राय कई अनुरूप कार्यान्वयन के निर्माण की अनुमति देना है, जो नियमों का पालन करने के आधार पर एक स्ट्रीम अनुप्रयोग के संपूर्ण प्रसंस्करण ग्राफ में उल्लिखित लाभों और विशेषताओं को संरक्षित करते हुए, सुचारू रूप से इंटरोऑपरेबिलिटी करने में सक्षम होंगे। निःशुल्क उपलब्ध प्रौद्योगिकी अनुकूलता किट [1] विनिर्देश के साथ विकसित किया गया था जो विनिर्देश के कार्यान्वयनकर्ताओं को यह सत्यापित करने की अनुमति देता है कि क्या वे संभावित संतति स्थितियों की जांच सहित सभी नियमों और आवश्यकताओं का आवरण करते हैं।

प्रतिक्रियाशील धाराएँ का दायरा अप्लिकेशन प्रोग्रामिंग अंतरफलक, विधियों और प्रोटोकॉल का एक न्यूनतम सेट है जो गैर-अवरुद्ध बैक प्रेशर के साथ डेटा की अतुल्यकालिक धाराओं को प्राप्त करने के लिए आवश्यक संचालन और इकाइयों का वर्णन करता है। [2] अंतिम उपयोगकर्ता|अंत-उपयोगकर्ता डोमेन-विशिष्ट भाषा या प्रोटोकॉल बाइंडिंग एपीआई को अभिप्रायपूर्वक अलग-अलग कार्यान्वयन को प्रोत्साहित करने और सक्षम करने के चक्र से बाहर रखा गया है जो संभावित रूप से अपने प्लेटफ़ॉर्म के मुहावरों के लिए यथासंभव सही रहने के लिए विभिन्न प्रोग्रामिंग भाषाओं का उपयोग करते हैं।

जावा मानक में समावेश

सफल सिद्ध होने और पर्याप्त पुस्तकालयों और विक्रेताओं द्वारा अपनाए जाने पर, आधिकारिक जावा मानक पुस्तकालय में भविष्य में सम्मलित करने के इरादे से विनिर्देश विकसित किया गया।

जेएसआर 166 के नेता डौग ली द्वारा प्रतिक्रियाशील धाराएँ को जावा (सॉफ़्टवेयर प्लेटफ़ॉर्म) 9 का खंड बनने का प्रस्ताव दिया गया था। [3] एक नए प्रवाह वर्ग के रूप में[4] इसमें वर्तमान में प्रतिक्रियाशील धाराएँ द्वारा प्रदान किए गए इंटरफेस सम्मलित होंगे। [5][6] प्रतिक्रियाशील धाराएँ की सफल 1.0 रिलीज और बढ़ती स्वीकार्यता के बाद, प्रस्ताव को स्वीकार कर लिया गया और जेडीके संवर्धन प्रस्ताव -266 के माध्यम से प्रतिक्रियाशील धाराएँ को जावा (सॉफ्टवेयर प्लेटफॉर्म) में सम्मलित किया गया।[6]


गोद लेना

30 अप्रैल, 2015 को जेवीएम के लिए प्रतिक्रियाशील धाराएँ का संस्करण 1.0.0 जारी किया गया था,[5][7][8] जाने दो सहित,[9] एक पाठ्य विशिष्टता,[10] एक प्रौद्योगिकी अनुकूलता किट और कार्यान्वयन उदाहरण। यह 1.0.0 के लिए TCK द्वारा सत्यापित अनेक अनुरूप कार्यान्वयनों के साथ आता है, जो वर्णानुक्रम में सूचीबद्ध हैं:[8]

अन्य कार्यान्वयनों में अपाचे कैसेंड्रा,[20] लोचदार खोज,[21] अपाचे काफ्का,[22] समानांतर ब्रह्मांड क्वासर,[23] प्ले फ्रेमवर्क,[24] शस्त्रागार.[25]

स्प्रिंग 5 को प्रतिक्रियाशील धाराएँ संगत प्रतिक्रिया आन्तरक पर बनाने की घोषणा की गई है

अमेज़ॅन (कंपनी) ने घोषणा की कि उसकी अमेज़न वेब सेवाएँ सॉफ़्टवेयर विकास किट संस्करण 2.0 में अपने क्लाइंट लाइब्रेरी में स्ट्रीमिंग क्षमताएं प्रदान करने के लिए प्रतिक्रियाशील धाराएँ का समर्थन करेगी। [26]

प्रतिक्रियाशील धाराएँ 1.0.1 9 अगस्त, 2017 को जारी किया गया है, जिसमें विनिर्देशन सटीकता, टीसीके सुधार और अन्य स्पष्टीकरण में विभिन्न सुधार सम्मलित हैं। विनिर्देश और इंटरफ़ेस 1.0.0 संस्करण के साथ पूरी तरह से पीछे की ओर संगत रहे, चूंकि इसका उद्देश्य भविष्य के कार्यान्वयनकर्ताओं के लिए अपनाने को सुव्यवस्थित करना और साथ ही ओपनजेडीके द्वारा निर्धारित कुछ अतिरिक्त आवश्यकताओं के साथ संरेखित करना था।[27]


बंदरगाह और प्रभाव

  • .NET प्लेटफॉर्म के लिए एक ही कार्य समूह के तहत विनिर्देश, इंटरफेस और टीसीके का एक सीधा पोर्ट उपलब्ध कराया गया था।[28]
  • जब एलिक्सिर (प्रोग्रामिंग भाषा) भाषा ने जेनस्टेज नामक अपनी द्रवीभूत एपीआई पेश की, तो लेखकों ने अक्का-स्ट्रीम और प्रतिक्रियाशील धाराएँ परियोजनाओं को धन्यवाद दिया, जिन्होंने हमें चरणों के बीच मांग-संचालित विनिमय को प्रयुक्त करने में मार्गदर्शन प्रदान किया।[29]


उद्धरण

  1. "प्रतिक्रियाशील धाराएँ टीसीके". GitHub.
  2. 2.0 2.1 Walls 2019, pp. 243–245, §10.1.1 Defining Reactive Streams.
  3. "jdk9 Candidate classes Flow and SubmissionPublisher". Archived from the original on 2015-01-20. Retrieved 2015-12-23.
  4. "java.util.concurrent.Flow". Archived from the original on 2016-02-03. Retrieved 2015-12-23.
  5. 5.0 5.1 Reactive Streams Releases First Stable Version for JVM
  6. 6.0 6.1 JEP 266: More Concurrency Updates
  7. Reactive Streams 1.0.0 – a new standard in reactive data processing
  8. 8.0 8.1 Reactive Streams 1.0.0 is here!
  9. Java API
  10. Reactive Streams for the JVM specification
  11. InfoQ: Reactive Streams with Akka Streams
  12. "अक्का स्ट्रीम के पीछे डिज़ाइन सिद्धांत". Archived from the original on 2016-01-12. Retrieved 2015-12-23.
  13. MongoDB Reactive Streams Java Driver
  14. Ratpack: The Reactive Streams API
  15. Reactor 2.0.0.RC1 with native Reactive Streams support now available!
  16. Advanced RxJava: The Reactive-Streams API (part 1)
  17. Slick 3: Reactive Streams for Asynchronous Database Access in Scala
  18. Slick 3.0.0
  19. Vert.x Reactive Streams Integration
  20. Accessing Cassandra in a Reactive Way
  21. elastic4s — Non blocking, type safe DSL and Scala client for Elasticsearch
  22. Reactive Streams for Apache Kafka
  23. "क्वासर और प्रतिक्रियाशील धाराएँ". Archived from the original on 2015-10-04. Retrieved 2015-12-24.
  24. Play Framework — Reactive Streams integration (experimental)
  25. Armeria - Completely asynchronous and reactive
  26. "AWS SDK for Java 2.0 developer preview announcement".
  27. "Reactive Streams 1.0.1 Release Announcement".
  28. "रिएक्टिव स्ट्रीम .NET". GitHub.
  29. "Elixir blog: Announcing GenStage".


संदर्भ

  •  This article incorporates text from www.reactive-streams.org, which is released under a CC0 1.0 Universal (CC0 1.0) Public Domain Dedication.