scala语言优势会取代Java的吗?

酷勤网 C 程序员的那点事!
当前位置: >
浏览次数:次
近些年,基于JVM语言的发展风起云涌, 语言尤为抢眼。我们不妨从以下几个方面来介绍下Scala语言的发展前景:
Scala语言的起源
Scala语言源自瑞士洛桑联邦理工学院,由奥德斯基教授2001年带领小组致力于Scala语言、标准库和编译器的开发。这里透露一个小花絮,奥德斯基教授创建Scala语言的一个主要原因是不满Java语言相对复杂的语法。
Scala语言的发展现状
Scala语言最直接的好处是兼容Java,这就意味着可以无缝使用所有Java的类库和框架。Scala程序会被编译成JVM可执行的字节码。Scala虽然是静态语言,但Scala支持函数式编程和类型推断(Type Inference),它的哲学是结合面向对象和面向过程并保证代码的简洁。
Scala语言在生产环境和公司的普及度非常高:
Linkedin公司把高吞吐量的分布式发布订阅消息系统捐给Apache基金,该系统完全由Scala语言开发。
Twitter为了性能考虑,将部分现有用Ruby On Rails实现的系统,迁移到了Scala。
英国卫报为了提高开发效率,已经从Java切换到Scala,详情请见InfoQ相关。
使用Scala的公司非常多,详情见Scala in the Enterprise。
与此同时,Scala语言也有强大的社区作为后盾,Scala为不同的角色(初学者、有经验者、专家)提供了学习资源分享、邮件列表订阅、加入google groups、加入开放项目等方式,使得每个人都可以共享Scala的信息并将所学知识回馈到社区中去。
业界专家对Scala的评价
Java之父James Gosling在一个社区会议上,有人问James Gosling,除了Java,你还使用哪些构建在JVM上的语言?
James回答:Scala
Groovy创始人James Strachan于2009年James Strachan就在博客上写道,如果我早点看介绍Scala的那本书,就不会创立Groovy这门语言了(大家应该知道,Groovy也是门优秀的构建在JVM上的语言)
Scala语言的优雅和简洁,大家可以通过官方网站的一一体会。
其他JVM语言的发展现状
Groovy: 语法简单,开发者可以更快的学习该语言,并且非常适合开发DSL(领域特定语言)。运维Groovy的发展,让人对Groovy充满希望。
JRuby: JRuby是面向Ruby的解释程序,该程序可以实现对Java类的交互。由于Sun公司JRuby的开发人员因为不知道甲骨文是否支持JRuby而选择了跳槽,这让JRuby的发展非常的不确定。
Jython: Jython是纯Python语法的Java实现,Jython可以极大减少代码量。Jython的发展比较曲折,负责开发Jython的人员经常更换,甚至出现开发放缓的情况。后来终于得到Sun公司(已被Oracle收购)的支持,开发进度稳步增长,我们将拭目以待。
Scala语言学习&&展望
Scala开发工具非常成熟,初学者可以轻松学习Scala
Eclipse插件的形式:Scala IDE v2.0已经。
Scala官网推荐的工具
独立IDE:评价最高的Scala IDE,。
社区版已经可以集成Scala插件。
Scala语言的发展路线可以总结为两点:
第一,Scala语言旨在成为最为普及的JVM语言(这点已经做到),并不断完善语言特性加强语言的生产力。
第二,Scala语言会涉足其他非JVM平台,使得非Java程序员也可以体验Scala的优雅,比如Scala已经可以在.Net上运行。
相信Scala语言会在未来给我们不断的惊喜!
& 相关主题:
本文来源:赞助商链接
我们知道基于JVM的Scala是一种函数式语言,现在Java 8也推出了lambda等函数式功能,那么现在我们有了三种疑问:1. Scala会不会替代Java?2. Java会不会替代Scala3. Java程序员是否有必要学习Scala?对于这三个疑问,我的观点是:1. Java 自身也在演化发展,轻言Scala会替代Java恐怕为时过早。2. Scala和Java 8现在处于战略相持阶段,虽然Scala优势还比较明显,但是肯定不如Java 8出现之前了。3. 掌握了Java 8等函数编程特点,会帮助你更容易学习Scala。首先我们要对Scala进行精确定位,从某种程度上讲,Scala并不是一个纯粹的面向函数的编程语言,有人认为 ),更准确地说,Scala是面向函数与面向对象的混合,而Java 8以后的Java也可以算是一种面向对象+面向函数的混合了。Scala主要特点是比Java更丰富的类型推断,不需要像Java那样死板地声明类型,这主要归结于Scala强大智能的编译器。类型推断的好处其实因人而异,太玄了可能会影响代码的可理解性。所以,Scala有时会出现编译时间比较长,因为机器自己理解代码也需要一点时间啊。当然,Scala还有很多Java没有的功能:模式匹配 implicits、traits、macros 、currying等等,除了这些新特点不一定都是函数式编程核心功能以外,这些非常棒的语法对一般程序员可能还需要一个接受过程。既然Scala设计的初衷是面向函数FP,而Java起家是面向对象OO,现在两者都是OO和FP的混合语言,是否可以这么认为:Scala = FP + OO,而Java = OO+ FP。那么,Scala 与Java的PK就变成了“OO为主FP为辅”与“FP为主OO为辅”的PK了。由于面向对象OO和面向函数FP两种范式是类似横坐标和纵坐标的两者不同坐标方向的思考方式,类似数据库和对象之间的不匹配阻抗关系,两者如果结合得不好恐怕就不会产生1+1&2的效果。面向对象是最接近人类思维的方式,而面向函数是最接近计算机的思维方式。如果你想让计算机为人的业务建模服务,那么以OO为主;如果你希望让计算机能自己通过算法从大数据中自动建模,那么以FP为主。所以,Java可能还会在企业工程类软件中占主要市场,而Scala则会在科学计算大数据分析等领域抢占Java市场,比如Scala的大有替代Java的Hadoop之趋势。Scala另外还在Reactive Stream等异步流式编程中试图有所突破,总体来说,Scala面临Java 8及其后续版本的阻击,其函数编程的优势正在慢慢被蚕食,而Scala必须在一个新的领域能将Java一招致命,我个人比较看好以Scala的Akka框架为代表的方兴未艾的Reactive编程。[该贴被banq于 17:35修改过]
我之前说过,函数编程是让计算机更容易懂,而对于开发者则不易理解,函数编程在异步事件领域有其独特的效果,但是如何在非堵塞异步编程的可扩展性和代码可读性两个方面进行平衡,业界一直在不停探索。其中在reactive这个领域不能不看看鼻祖Node.js的发展,可见这个帖子:[该贴被banq于 10:08修改过]
赞助商链接
赞助商链接
最佳分辨率
OpenSource
Code & 2002-20大家觉得Scala有可能在数据处理领域取代Java吗? - 知乎136被浏览9996分享邀请回答4添加评论分享收藏感谢收起3添加评论分享收藏感谢收起查看更多回答2 个回答被折叠()2 方法定义
&& 2.1 scala采用def定义,
&&&&&&&&& java采用方法的修饰符,返回值。
3 scala支持元组,java需要采用类定义代替
4 对字符串的支持
&& 3.1 scala采用三个双引号&&&支持换行字符串, Java需要采用“+”进行字符串的连接。
5 方法返回值
&& scala的return是可选的,方法调用会自动返回最后求值的表达式。 如果scala使用了return则需要显示指定方法的返回值
&& Java需要显示的采用return进行值的返回。
6 类和方法修饰符的默认值
&& scala默认是public,java默认是protected.
&7& 默认导入的类
&& scala默认导入java.lang包、scala包、scala.Predef类。
&& java默认导入java.lang包
&& scala不支持接口interface,采用trait(类似于Java中的抽象类)。
&& java支持接口
9 类成员和单例对象
& scala语言机制上支持单例对象和伴生对象,伴生类。伴生类和伴生对象需要在一个类文件中使用,在使用伴生对象时,系统隐式地调用apply生成一个伴生实例的对象。
& java由类成员,单例对象需要自己实现。
10 方法参数
&&& scala支持以函数作为参数,格式为def error(msg: =&String) 表示msg是输入参数,输出参数为String的函数
&&& java不支持。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:79941次
积分:2552
积分:2552
排名:第14364名
原创:181篇
转载:19篇
(1)(1)(3)(7)(3)(6)(5)(2)(9)(3)(7)(19)(13)(3)(7)(5)(5)(2)(10)(1)(3)(4)(14)(8)(3)(2)(6)(7)(4)(2)(3)(6)(5)(4)(6)(6)(5)scala的发展前景?会不会像Java一样流行? - 知乎122被浏览34396分享邀请回答7添加评论分享收藏感谢收起

我要回帖

更多关于 scala取代java 的文章

 

随机推荐