该文章来自阿里巴巴技术协会(ATA)
【心得体会】
- 不知道是被Larry Ellison的个人魅力吸引,还是被Oracle强大的技术营销所折服,个人觉得,能够保持竞争优势,并能不断进步的IT公司,都有一个灵魂式的领导者,目前看来,这个领导者基本是公司的Founder。Jack Ma, Larry Page, Larry Ellison,Steve Jobs及所在的公司提供了很好的证明。反观IBM,已经是百年老店,没有了Founder和灵魂人物,目前已经逐渐跟不上时代,市值已经被Oracle远远超过。
- 非常佩服Oracle的整合能力,Oracle能够将其所收购的公司与整个公司目标很好的整合,形成闭环和生态。Sun公司凭借其Java在工程师界非常有影响力,甚至很多人会抱怨Oracle是恶意收购,对Java的整合是非常难的。而从以下几点看,它整合得不错:Java近些年不断的发展;Java所有产品线(GlassFish, NetBeans等)都还活着;Java是整个Oracle Story强大的一部分,整个JavaOne从另一个视角看,就是Oracle通过讲Java的故事,很好的推广了他的技术平台和云平台;Java发展了,WebLogic会更好卖。当然,我没有数据来证明这个理解是正确的。
- 用户至上是王道,我觉得Oracle从IBM的一篇论文做出了IBM DB2无法超越的关系数据库,更多的是因为Oracle做出来的数据库更"懂客户",体验上面远超DB2。至于这技术是学来的,买来的,抄来的,其实并不那么重要。Sun公司的慢节奏,技术至上,有很多的技术创造,但是不懂市场,不懂用户,最后被Oracle收购。从更宏观、更客观的角度说,这样的优胜劣汰,相互并购是有意义的,有利于创造出更能满足用户的产品。
- JavaOne大会就像我们的云栖大会一样,其实从公司的目的说其实是一种营销活动,让整个生态系统朝着自己的商业方向进步,个人觉得Oracle做得很成功,我自己觉得参加完大会我对Java更有兴趣了,也想研究JavaEE,还想看看NetBeans现在是否更好用了。而这个成功,是源于对技术的理解能力,以及市场(生态)营销能力。
- 之前一直好奇,Oracle为什么会一直会持续投入GlassFish,NetBeans,这些并没有形成直接的商业价值,这次想通了,GlassFish,NetBeans其实是教学目的,第一时间实现标准,让业内可以第一时间进行学习,这也许也是这两个产品商业不成功的原因,他对标准支持太好了,响应太快了,在性能、稳定性等方面就无法兼顾了。
- 技术团队还是要追随业内的新技术的,并且尽可能的尝试和实施新技术,因为新技术的客观出发点是效率,短期内跟不上牺牲的是自己的效率,长期跟不上就会对自身的竞争力有影响。这方面我们阿里还是需要更进一步,我们对新技术的响应还是不够快。
- "弱弱联合"有的时候有挺有意思的,Intel错失了移动市场,Oracle也没有及时进入云计算市场,两家公司的合作可以激起相互的热情,合作更真诚,他们一起讲的故障就是IOT(物联网),Intel推出IOT Development Kit,接入到Oracle Cloud Service中,一家负责端,一家负责云,实现马总说的云端的精彩。
- 美国大龄程序员很多,国内几乎看不见,作为程序员,有时还挺羡慕他们可以一直开开心心写代码,有没有?
- 我大阿里巴巴的技术可以拿出来讲的数不胜数,但可能由于语言的原因,我们出去讲的人还太少,建议我们技术发展部可以组织专门的语言和演讲技巧的培训,甚至有相关的认证,比如过了语言认证的同学可以申请TOPIC出去讲。好处显而易见,提升我们人才的能力,让我们的技术与全世界接轨,更加有利于提升阿里巴巴的影响力和形象,可能其效果相当于很多的营销推广费用的投入才能买得来。
- 也发现了在Oracle的很多企业用户中,他们专注的不是技术,对自身技术储备方面投入也不大,但并不差钱,可以投入很多的钱来买商业软件或产品。我觉得抓住这些用户的核心就是产品易用性和稳定性,我觉得咱们的阿里云可以在这方面多投入一些精力。
【会议主要内容】
一组关键词:Java 8, Lambada, J8 Stream, DevOps, Docker, Micro Services, HTTP2.0, JavaEE, IOT。以上内容是会议的主要几个热点。
大会Slides:https://events.rainfocus.com/oow15/catalog/oracle.jsp?event=javaone&search.event=javaoneEvent
1. Java8介绍
Java8几大在新特性瞒有吸引力的,与许晓彬(Velocity),雷卷(Spring One),李伟杰(Open World)几位交流参会心得体会的时候,觉得有必要立即推进Java8。
一个大会还不足以让我成为Java8的专家,这里讲下我对几个重要特性的收获和理解,欢迎指正
重要特性1: Lambda
一般来说一个函数的计算行为不变,通过变量不同,来让程序服务于不同的分支流程;除此之外还有一个很重要的功能,就是不仅基于不同参数值来实现分支流程,还可以传递一个函数,让计算行为也是可以变化的,这就是我所理解的Lambda。
然而Lambda其实在Java8以前就有,只不过受限于Java语法的严格性,需要传递一个匿名类,使得编写较为复杂,从而使得这一重要的思想很少在Java实践从看到,大家宁可写更长的代码来实现,比如通过方法调用。
而Java8通过两种方式来实现Lambda,一个是Function Interface,另一个是方法引用,大大简化了Lambda的编写,大家可以用起来,可能对于像我这样的比较守旧的Java程序员来说,需要加强学习,扭转编程思路,用好Lambda,提升编码和工程效率。
另外,而Lambda与map, reduce等编程,J8 Stream等编程模型天然的结合,更让我们没有理由拒绝Lambda。
重要特性2: J8 Stream
J8 Stream其实是顺应了流式计算的潮流,但其实也并非是新发明,它本质上就是在Iterator加上Filter,Map,Reduce,Sort,Findfirst,ifPresent等等功能,在这些功能再结合强大的Lambda。
它的意义有两个,一个是提出了"新"的编程模型,让大家可以用Map,Reduce等处理一个集合;另一个意义就在于规范。个人觉得Storm提出的编程模型让人更多的关注物理结构,如果Storm采用J8 Stream的编程模型会更易于理解,因为它让编程者真正关注数据处理。这里纯YY下,我们的JStorm能否支持J8 Stream的计算模型,最终放弃掉Spout/Bolt这些Storm的编程模型,这里欢迎讨论。
重要特性3: Default Methods
不知道是进步还是退步,对这个特性总感觉慌慌的,甚至颠覆了Java的"严谨性"。但对于阿里这样大的技术体系下,尤其是中间件产品或底层服务的升级,这个特性非常有用。
所谓Default Methods,就是在interface中提供方法的默认实现,这样做可以有两个好处:1)新增接口方法时原因实现类可以不用改造,这在基础服务升级时非常有用,在新增特性时,不需要升级所有的上层依赖系统;2)类似于抽象类,把默认实现定义在父类中,子类无特别情况不需要重载
2. DevOps
这里面听了Netflix的一个分享,讲的没太多的技术,更多的是讲文化,里面感触最深的是他们对DevOps的理解是:Freedom and Responsibility。个人非常支持DevOps,可以提升整体的工程和运维效率,提升程序员的自由感和幸福感,减轻程序员的压力。
3. Microservices & Docker
这方面我暂时持观望态度,理解得也不深入,同行的另一位同学听得很多,理解更多深入,期待他的分享。
4. HTTP2.0
对于做性能优化的同学来说,HTTP2.0是一件非常值得开心的事情,因为基于HTTP2.0可以有更多的性能优化手段,让性能有非常大的突破。
除了协议本身的性能友好外;通过Server Push机制,可以实现HTML文档和静态资源的并行输出,最大化并行加载,这个特性其实很重要,而实现这个特性需要我们在JAVA WEB端在内容输出时基于不同的场景做不同的差异化输出,如何在简单、可复用、性能收益间做出平衡,挑战很大,目前还没有人走过这条路。
AE想要基于HTTP2.0做深度的性能优化,相信收获很多。
5. IOT
基本上没有去听这方面的Session,这里我要说明的是Intel与Oracle在合作物联网,Intel实现了Development Kit,将数据传输到Oracle Cloud Service中。
其它我还听了一些JVM性能优化的Session,几乎没太新的东西,如Memory Model,JVM G1 GC,GC Tuning等等方面。