|
H****S 发帖数: 1359 | 2 不光是这个。rxjava所带动的reactive stream programming可以帮助你做到很多事情,
1。preemptive control:如果你的stream crash了,如何能让它clean up all the
unclosed resources and start again from a reasonable checkpoint _by itself_
2。stream和stream之间的操作:zip和merge是最常用的两种操作。鉴于stream本身是
纯异步的,如果要自己写这些操作绝对是nontrivial amount of work。
3。stream ordering:你可以选择让stream的items come strictly in order,或者是
fully parallell。
4。back pressure。看上去简单,但是rxjava一开始的支持是基本算没有的,直到后来
加了producer interface。我自己的感觉即便使用producer interface,在rxjava里面
实现backpressure contr... 阅读全帖 |
|
n*w 发帖数: 3393 | 3 用rx framework,rxjava的人多吗?都有哪些use case?
rx framework出来很多年了,几年前准备用来做异步,结果c# async加上了。做ui可能
多些用处。但自己UI写的不多。并行等别的方面c#本身就支持的不错。
被port成rxjava后,应该在java上用处大些?不过在java 8以下没lambda,没linq,靠
匿名类有
些不适,毕竟能解决问题。大家有哪些use case? |
|
n*w 发帖数: 3393 | 4 没错是netflix做的rxjava。netflix也有很多非软黑。
最原始rx framework在微软的msdn上。Windows开发时代码从nuget拿。
open source后源代码不是在codeplex就是github。
"Just yesterday, we told you about improvements we’ve made to two Microsoft
Open Technologies, Inc., releases: Rx and ActorFx, and mentioned that
Netflix was already reaping the benefits of Rx.
To top it off, on the same day, Netflix announced a Java implementation of
Rx, RxJava, was now available in the Netflix Github repository. That’s
great news to hear, especially given how Be... 阅读全帖 |
|
c*********e 发帖数: 16335 | 5 你们公司不就是用rxjava吗?rxjava看来要火。 |
|
z****e 发帖数: 54598 | 6 我看了下,貌似是一个比较不错的reactive programming的框架
给说说,你们内部用了么?效果如何?
我看到网络上已经有vert.x+rxjava的module
貌似前景比较光明的样子,我用了一段javafx,很喜欢javafx的binding
这个估计有些类似? |
|
|
n*w 发帖数: 3393 | 8 你说说你的use case?
作为资深软黑,你还对源于微软的东西赞口不绝,同意你是专业的rxjava用户。
而且经过你的点出大家也知道了loganfreeman揶揄人。 |
|
l**********n 发帖数: 8443 | 9 rxjava和The Reactive Extensions什么关系?RxJS是按照The Reactive Extensions
API写的。
Microsoft
the |
|
t**r 发帖数: 3428 | 10 rxJava很火么?除了n家 别人家用的多么?
推荐个学习资料 @goodbug
btw 股票太给力了,一周从470飙到570 |
|
|
|
S*********t 发帖数: 78 | 13 初学 rxjava, 这个东西真费脑细胞。
我有一个 List, 需要对每一个整数做一个 async 操作。操作完了callback
后,再把所有的结果组成一个新的 Observable.
怎么实现呢?
thx |
|
s*i 发帖数: 5025 | 14 RxJava 跟其他 functional languages 的写法比较,ugly 到吐! |
|
p*****2 发帖数: 21240 | 15 有这个就不错了
java还能指望啥
:RxJava 跟其他 functional languages 的写法比较,ugly 到吐! |
|
c*********e 发帖数: 16335 | 16 RxJava是有明确目的和用途的,functional languages算个鸟。 |
|
n*****3 发帖数: 1584 | 17 does RxJava use java 8, if not,
switch to use java 8 's FP will require some extra work for them. |
|
c*********e 发帖数: 16335 | 18 如果concurrency的java code是你自己写的,又何必要rxjava呢?直接在原来的代码里
加不就完了? |
|
d******e 发帖数: 2265 | 19 concurrency 是上一代的事情了吧。
rxjava,这个我没搞过啊,类似的东西是面向event stream driven app.
比如说,你有一个计步器,不听的想server发送event.
这样就可以看作一个stream。后台处理直接用stream.map.andthen.onsucess..
..
搞定了。
这里的backpressure process, 异步用刀的threadpool什么的,都给你搞定了。
你自己安心写处理的code就好了。 |
|
c*********e 发帖数: 16335 | 20 rxjava是one thread, async. 但是,它的async,是用的epoll吗?
.. |
|
|
c*********e 发帖数: 16335 | 22 rxjava其实不是他做的,github上有作者名字和图像。 |
|
s********k 发帖数: 6180 | 23 rxjava不是square那帮大神做的吗?就像luke wharton什么的? |
|
c*********e 发帖数: 16335 | 24 rxjava要用到future.get(),就是个大忽悠。 |
|
|
z****e 发帖数: 54598 | 26 说这些都扯蛋
就从你们两个自身说起
coltzhao你除了scala你还接触过什么?
rxjava,clj你写过么?应该是没有吧
hci,你除了clj你还写过什么?
rxjava,scala你写过么?应该也是没有写过吧?
我现在的vert.x里面几个mod里面有clj,有scala,还有rxjava
我好歹还是写过,然后把这些东西放到同一个环境中对比后观察后的结果
你们两个除了自己那个语言以外,接触过其他两个?
整个thread说下来就逐步沦为扯蛋一类了
也就是hobocs说的rxjava的那几个贴值得看看
至少他还跑去看源码,说这里可能会有问题,我以后再看看hoho
剩下的没做过,也就是凭空想象,变成扯蛋的一种
洋洋洒洒好像很多,但其实很多都是胡扯
变成传教,号召群众入教做教徒 |
|
z****e 发帖数: 54598 | 27 1)你没有用rxjava,which在vert.x里面很强调使用的东西,不用rxjava,你是很难写
出优雅代码的,这个是用vert.x的常识,甚至可以说是java程序员的常识,这种东西压
根不值得拿来做例子
2)这个是匿名类,which是java8以前的东西,写swing的话,这种东西到处都是,这就
是为啥我讨厌callback hell的主因,后来发现js居然把这种垃圾给捡过去了,我都快
吐了
3)异步要谨慎使用,除了会导致callback hell以外,还会让原本同步的操作变成
callback hell,邯郸学步
4)java本身没有办法阻止你写出callback hell,因为你在用fp的方式用oop,而且还
是比较旧版的java,如果你真的要用fp,就别用java好了,因为java根本不让你用fp,
好吧,部分可以,这个其实是fp的问题,不是java的问题,java已经把你往oop上去引
导了,你却非要迕逆java的引导,我能说啥?
5)你可以自己动手解决这个问题,看看rxjava怎么做的,其实原理不难,只要理解了
reflection,publish/subscribe模... 阅读全帖 |
|
z****e 发帖数: 54598 | 28
rxjava主要是用来弥补java在fp上的不足的
主要应用是streaming部分
你做flink应该清楚,set和stream是两种不同的类型
前者一开始就知道大小,后者对于结束边界搞不清楚
所以涉及streaming的部分,用rxjava比较多
而且streaming部分主要是fp的应用,map(func,a)
如果是fp语言的话,比如clojure,就不怎么需要这个东西
但是java是纯粹的oop语言,所以需要弥补fp上的不足
这个不足就由rxjava来填,当然你换clojure或者scala也可以
这两者的fp部分比java要强不少
vert.x则是一个什么都做的东东
我感觉vert.x是java的延伸,java的特征就是尽一切可能封装各种接口之类的
jvm封装了os的差异,jdbc封装了db connection,hibernate封装了sql的差异
vert.x则封装了file system的差异,还有web protocol的差异,以及各种jvm上脚本的
差异
尽可能提供一个统一的接口,对于所有不同的软件产品
然后还做了其他很多东西,其中reactive和stream... 阅读全帖 |
|
z****e 发帖数: 54598 | 29 楼主把leetcode继续刷,我觉得遇到lc原题的几率还是很大的
其次spring, hibernate是一个好的开始
然后cassandra, hdfs, spark, rxjava弄一弄
spark很大,那就先弄rxjava
我说的这些都不是一样的,原理都不一样,学会举一反三
你会一个,以后遇到类似的,比如你遇到storm,懂rxjava的话
storm不难,当然反过来也一样
java工作,这些frameworks/products,应该肯定会用到其中至少一个
面试时候跟人家说你会这些,肯定有优势,资本家计算的就是投入和产出
你会的东西多,他培训成本就低,很快就能上手干活
为什么不要你?阿三比老中强就强在态度上,丫一天到晚未必干活
但是至少装得很积极,一天到晚问boss,有什么我能干的?
就算他狗屁不通,但是他也装得很投入的样子在搞 |
|
z****e 发帖数: 54598 | 30 jvm的人才不好找啊
community没啥问题啊
我之前一直在等rxjava成熟
因为没有rxjava,金字塔结构实在是很让人恶心
现在vert.x+rxjava配合得非常好呀
npm也很快就有支持,这个主要看对jvm的熟悉程度
一般没用过的搞不定,你应该没啥问题 |
|
|
z****e 发帖数: 54598 | 32 那要看多顺着人思维了
小学二年级我们就学会了列方程解应用题
列方程显然更靠近人的思维,变量当然应该保留
我超喜欢列方程的,哪怕最简单的1+x=2我都会列出来
因为简单
虽然我也承认oop有些地方不足
但是你说要把oop整个枪毙掉,从头来过
那这也有些问题吧?正常人应该都能看出这种做法有些问题
所以我觉得rxjava才是发展方向,至于什么immutable
水至清则无鱼,scala又太混乱,什么都来,也不行
rxjava作为扩展,跟java8搭配得很好呀
vert.x什么马上就能顶上,哦也
用了再说,没用过,没实践过,都是只说好的,不说坏的
说node的时候,有人注意到30层的callback hell吗?
现在说fp其实也是一样,层层嵌套是个大问题
我用rxjava的经验看,效果良好,既没有丢掉以前的经验
又做了效率提升以及适当的思维训练,大家都happy啊 |
|
z****e 发帖数: 54598 | 33 我很清楚滴知道fp怎么用,包括clj怎么用
但是你显然不知道rxjava解决了fp的什么问题
你对付那些问题的方式要么否认,要么就转进
比如“我从来不debug”,“不能再简单了”
我看了rxjava,我觉得比fp做得更简单
可以说rxjava本身就是fp的一种借用
另外对比不是要尽量公平嘛?
vert.x是多好的一个公平竞技的平台啊
你不懂的话,先了解了解再说 |
|
|
z*******3 发帖数: 13709 | 35 spark的streaming的对比看这个slides
http://www.slideshare.net/ptgoetz/apache-storm-vs-spark-streami
flink还没推出,但是从设计上看,应该不会有类似的问题
我感觉最近streaming的需求越来越强烈
需要一个针对前后端都能够搞streaming的东东
vert.x是一个很不错的选择,但是vert.x对付c*之类的nosql,还显得工具偏少
另外mllib这些lib目前只能host在spark,flink这些上面,vert.x还缺少类似的libs
vert.x毕竟更为general一些,但其实你自己琢磨琢磨也没啥难的
无非那么一回事了,mapreduce那些api,跟rxjava有很大重叠
可以用rxjava实现一遍,主要是算法,mllib部分,clustering,svm etc.
api的话,什么flatmap,streaming之类的rx都有了,vert.x成熟之后大有可为
vert.x, rxjava, flink这些逐步走向成熟,过程值得学习和参考
当然spark之类已经取得巨大成功的更值得... 阅读全帖 |
|
z****e 发帖数: 54598 | 36
streaming就是适合那种结束边界不确定但是传入的data又比较同质化的datasource
像netflix搞的视频就很像这个东东,还有message
streaming应该在将来一段时间内会逐步流行开来
以前是storm在搞,再早一点是jms,不过jms主要是无状态的dataset
fp部分用来搞streaming会比较容易
常见的map,可以直接apply func到每一个elements上去
这样你就不用for loop了,因为for loop需要知道确切的结束边界
对于streaming,没有fp那么好用,listener+fp可以比较快速地开发出东西来
那rxjava就是为了adopt这种趋势而生的东东
vert.x的reactive部分,就是直接用了rxjava
rxjava不仅仅是java,其实所有jvm上的reactive都可以用
包括rxscala, rxclojure,当然scala clojure这种天生就是fp,不需要这个一样搞
但是api标准化总是好的,还有rxgroovy
作为游戏,我觉得每一局pvp的话,其实广播的部分可以搞成streaming
用... 阅读全帖 |
|
z****e 发帖数: 54598 | 37 所以我个人认为,技术革新已经逐步转移到了netflix这家公司上去
rxjava这种神奇的东西,不是google之类的做出来的
反而是netflix在搞,而且netflix很喜欢优化aws
做各种傻瓜化折腾aws的工具,我相信用不了多久
netflix的这些傻瓜化的工具会逐步流行开来
rxjava的接口什么比较标准,scala的很多东西就不那么标准
就这个差别,本质上原理是一样的
vert.x在rxjava的基础之上做了pump那些,不过我还没怎么用过
不确定这个到底怎么搞,只是听以前做scala的人提起,说大并发时候需要这个东西 |
|
z****e 发帖数: 54598 | 38 用了vert.x你可以接触到几乎所有的新生事物,比如reactive,比如async,比如nosql
,比如file system,比如rxjava,比如streaming,好好玩啊,怎么能不喜欢这个东西
,这个版面上讨论的一切,都有一个小部分在搞,除非你做非常底层的东西,比如go那
些,那这个没办法,毕竟jvm封装到了这个level,不可能再回头去搞这些底层的东东,
其他应用层面的新生事物,vert.x的人都跟进得很快,实际上rxjava那个本杰明也对
vert.x有感觉,文档中写到过不少,当然java就这样,你单独用rxjava也是完全可以的
,就像spring跟hibernate没有必要捆绑到一块去一样 |
|
c*********e 发帖数: 16335 | 39 今天又看了一下rxjava, netty. 发现rxjava是synchronized,一个thread.
如果java programmer自己能写concurrency的代码,又何必用这个rxjava来处理结果呢?
RxNetty就更不理解了,本来netty就是async的,有自己的callback,何必要用RxNetty
来处理呢? |
|
z****e 发帖数: 54598 | 40 牛肉姐,如果是跨机的,用rxjava等streaming framework
一般跨机要看网络协议,纯java的可以用序列化,跨语言用json这些
真要做其实不难,不过现在主要是用rxjava
java |
|
|
|
z****e 发帖数: 54598 | 43 clj的问题很明显,金字塔,非常讨厌
rxjava的flat很讨喜
rxjava更新很频繁,很活跃,我很喜欢
vert.x 3的milestone 2已经出来大概一个月了
很快3就会下线,到时候跟着升级就是了
据说一般的脚本也可以打成jar了
没试过 |
|
|
s*********b 发帖数: 815 | 45 RxJava还是有关系的。RxJava根据Erik Meijer的Rx移植的,实现的手法也差不多,大
量用到的恰恰是王垠非常熟悉的函数编程技术,大量CPS风格的代码。当然他老能不能
出活以及同人合作多半像您老说的那样。他老好像也批评了Knuth的。他老的博客中不
仅批评了导师,同学,各式语言及它们的创始人,“甚至还怒喷了10年前推崇Linux的
自己”。当然这也没啥,不就是看不惯很多东西嘛。作为局外人,我老觉得这个不是品
德问题。
的。 |
|
z****e 发帖数: 54598 | 46 rxjava的wiki上说针对akka的actor future做了改进
所以目前看,用rxjava应该会更爽一点 |
|
z*******3 发帖数: 13709 | 47 vert.x什么都能做
node单线程非常蛋疼,性能并不理想
而且将来streaming弄上去的话,我不认为单线程会有什么前途
因为streaming天生就是blocking的东东,你一定会需要多线程
而一旦涉及worker,node就不是那么好用
如果那帮人已经提出要弄jvm的话,多半是他们自己的考虑
就像你之前说的,主要做http web service,这个就不是web
多半不只需要倒腾html那些东东,等到时候绕了一大圈,最后发现
你还是不得不倒腾jvm的话,那就很不划算了
node有自己的engine,jvm是另外一个平台
要同时维持两套班底,就显得很亏
vert.x的主要竞争对手就是所有的东西
包括node, akka, ejb这些,其实都被某些媒体拿来对比过
就spring的di目前没怎么说,因为暂时先不做di,这个在community讨论过
主要是其他语言的开发者反对,因为无法实现,只有java的用户要求比较强烈
因为spring是de facto企业王者,所以建议多抄袭spring
最后tim说,暂时先不搞
但是你自己对spring熟悉的话,把spring结合到ver... 阅读全帖 |
|
z****e 发帖数: 54598 | 48 但是fp会带来callback陷阱
为了解决callback陷阱而引入了reactivex
也就是subscribe或者说是observer模式
用了reactivex之后,感觉fp其实也没啥必需的
除了lambda以外,如果不怕麻烦加多一层其实也没啥
lambda就省去了外面那一层class
wdong不是在问下一个big thing吗?
rxjava咯,rxjava发布1.0的时候可是thx了一堆人
并触发了一堆新项目,什么rxjdbc之类的
这是里程碑式的存在,这里一堆开源的项目大有可为
炮灰们可以上了 |
|
z****e 发帖数: 54598 | 49 legacy code
db本身就是一个非常大的legacy system
要改起来需要时间
现在绝大多数db操作都不是异步的
要改成异步的
目前做得比较靠谱的就是rxjava-jdbc
这个做出来之后,应该大多数db访问都会变成异步的
所以rxjava出来之后进一步打击了mongodb
本来mongodb被spark什么折磨得就很够呛了
twitter怎么做还是老话,twitter不涉及money
发错一个twit不会有太大问题,不值得参考
看看电商还比较靠谱点,至少应该看看twitter的财务组是怎么做的 |
|
z****e 发帖数: 54598 | 50 rxjava里面用起来很方便呀
我对fp也是一知半解,但是lambda加入很多人有意见
但是我觉得rxjava推广之后,应该反对声音会少不少
本来lambda用来替代以前用的匿名类还是不错的
匿名类太恶心了,写过app的都很讨厌匿名类hoho |
|