Spark平台下,scala比java更有优势么? 举报 理由 举报 取消 之前为了用spark学过scala,但后来还是用java实现的。scala有哪些优势? 除了在spark平台之外还有哪些地方能用到?这货会取代java么? 2017年7月24日 4 条回复 730 次浏览 Scala,Spark,数据
回复 ( 4 )
1. 从Scala的集合操作移步到Spark的RDD操作很自然,而Java则是跨过去的,容易扯到蛋,这就是Spark平台下的优势
1.5 Scala的优势
优势非常多:
a. 静态强类型加类型推导,类型安全,打字还少
b. Scala是一门图灵完备的语言,Scala类型系统也是一门图灵完备的语言
c. 函数式编程和面向对象的有机结合,既可以装高冷,又可以做实事
d. 可以用任何的Java库,JVM一家亲
e. 编译速度慢,但是开发效率高啊 (呵呵)
f. 生态系统构建的不错,各种库都有
g. 等等等
2. 任何地方都可以用,任何Java能用的地方都可以用Scala (都是通用语言)
3. 会不会取代Java?
光从语言上看:肯定是能取代Java了,都可以看出是不同时代的产物了(求Java同僚放过)
然而我想说的是,不要只是观望啊!大家都只是观望而不去实际学一学,用一用的话,如何来得取代之说呢?
你不觉得用scala写spark比用Java写精简很多吗?这就是优势。而且spark的很多设计和scala是一致的,所以写惯了scala的人,写spark特别的简单。而Java就不一样了,虽然Java也能写,但是spark的风格和Java完全不同,写起来会比较怪。(主要是Java不是函数式语言)
至于其他应用,akka,play什么的也是用scala开发的。不过基本上所有scala开发的lib都有Java接口,谁让他们都是JVM上的语言呢~能兼容Java当然要兼容一下,方便推广。
至于会不会替代Java,我觉得难。你看c++这么些年有没有替代c?说实话Java比scala好学很多,而且函数式语言并不是全方面都比命令式语言强,只能是各有千秋。只不过在数据处理方面函数式用起来舒服些,但是比如GUI开发等方面函数式就恶心了。
scala语法丰富,不过也显得比较复杂,使用scala写spark程序最方便的就是函数式编程、链式编程已及类型自动推导,当然还有其他一堆特性!不过java 8也支持lambda了,不需要再像以前那样写一堆匿名类了,能够支持类型自动推导就更好了(c++11引入 auto关键字),这样能够大幅度减少java程序的臃肿问题。因为scala更像脚本语言,写起来更方便、更自然,效率更高,并且spark本身也是scala实现的,因此主流还是使用scala作为spark开发语言。
小公司自己喜欢哪个用哪个。
scala简洁是不假,替代java是想太多。不说别的领域web hadoop什么。仅说spark,一个弱类型语言你们怎么多人协作。题主你在没有详细注释的情况下是愿意维护别人用java写的spark app还是scala。
分割线
我愚蠢了,scala是强类型。只是我被它的隐式转换误导了。