本贴是我摘抄自国外网站,用作备忘,也作为分享!

Similarities between Scala and Java

Following are some of the major similarities between Scala and Java programming language :

1) Both are JVM based language, Scala produce same byte code as Java and runs on Java Virtual Machine. Similar to Java compiler javac, Scala has a compiler scalac, which compiles Scala code into byte code. At this level, all JVM language like Groovy, JRuby, Scala becomes equals to Java, because they use same memory space, type system and run inside same JVM.

2) You can call Scala from Java and Java from Scala, it offers seems
less integration. Moreover, you can reuse existing application code and
open source Java libraries in Scala.

3) Major Java programming IDE like Eclipse, Netbeans and InetelliJ supports Scala.

4) One more similarity between Scala and Java is that both are Object Oriented, Scala goes one steps further and also supports functional programming paradigm, which is one of it's core strength.

Differences between Scala and Java

1) First and Major difference you will notice between Scala and Java is succinct and concise code. Scala drastically reduce number of lines from a Java application by making clever use of type inference, treating everything as object, function passing and several other features.

2) Scala is designed to express common programming patterns in elegant,
concise and type-safe way. Language itself encourage you to write code
in immutable style, which makes applying concurrency and parallelism
easily.

3) One difference, which some might not notice is learning curve. Scala
has steep learning curve as compared to Java, my opinion may be slightly
biased because I am from Java background, but with so much happening
with little code, Scala can be really tricky to predict. Syntax of Scala
looks confusing and repulsive as compared to Java, but I am sure that
is just the starting hurdle. One way to overcome this hurdle is
following a good Scala book like  Programming in Scala or Scala in Action, both are excellent books for a Java developer, who wants to learn Scala

4) One of Scala's cool feature is built-in lazy evaluation, which allows
to defer time consuming computation, until absolutely needed and you
can do this by using a keyword called "lazy" as shown in below code :

// loading of
image is really slow, so only do it if need to show image
lazy val images =
getImages()  //lazy
keyword is used for lazy computation
 
if(viewProfile){
    showImages(images)
}
else(editProfile){
    showImages(images)
    showEditor()
}
else{
    // Do something
without loading images.
}

If you love to learn by following examples, then I guess Scala CookBook
is a another good buy, contains tons of examples on different features
of Scala.

5) Some one can argue that Java is more readable than Scala, because of
really nested code in Scala. Since you can define functions inside
function, inside another functions, inside of an object inside of a
class. Code can be very nested. Though some time it may improve clarity,
but if written poorly it can be really tricky to understand.

6) One more difference between Scala and Java is that Scala supports Operator overloading. You can overload nay operator in Java and you can also create new operators for any type, but as you already know, Java doesn't support Operator Overloading.

7) Another major difference between Java and Scala is that functions are objects in Java. Scala treats any method
or function as they are variables. When means, you can pass them around
like Object. You might have seen code, where one Scala function is
accepting another function. In fact this gives the language enormous
power.

8) Let's compared some code written in Scala and Java to see How much different it look:

Java:
 
List<Integer>
iList = Arrays.asList(2,
7, 9,
8, 10);
List<Integer>
iDoubled = new ArrayList<Integer>();
for(Integer number:
iList){
    if(number
% 2 == 0){
        iDoubled.add(number * 2);
    }
}
 
Scala:
 
val iList = List(2, 7,
9, 8,
10);
val iDoubled = iList.filter(_
% 2 == 0).map(_ * 2)

【注】: 上面的代码,原贴中在标记红色部分是有错误的,估计是typo吧,不管如何,出于技术探索,还是要调试过的代码,不要错代码,至少不要明显有错的代码!

You can see that Scala version is lot succinct and concise than Java
version. You will see more of such samples, once you start learning functional programming
concepts and patterns.

That's all on this article about similarities and differences between Scala and Java.  Though they are two separate programming language,
they have lot in common, which is not a bad thing at all and in my
opinion that's the only thing, which will place Scala as Java
alternative, if at all it happens in future.

 

scala vs java 相同点和差异的更多相关文章

  1. Scala For Java的一些参考

          变量 String yourPast = "Good Java Programmer"; val yourPast : String = "Good Java ...

  2. 使用Scala实现Java项目的单词计数:串行及Actor版本

    其实我想找一门“具有Python的简洁写法和融合Java平台的优势, 同时又足够有挑战性和灵活性”的编程语言. Scala 就是一个不错的选择. Scala 有很多语言特性, 建议先掌握基础常用的: ...

  3. scala调用java的方法,返回了一个对象链表List<Student>,在scala中遍历该链表获取指定Student的名字name

    假设Student类如下: class Student { private int no; private String name; public int getNo() { return no; } ...

  4. Spark:用Scala和Java实现WordCount

    http://www.cnblogs.com/byrhuangqiang/p/4017725.html 为了在IDEA中编写scala,今天安装配置学习了IDEA集成开发环境.IDEA确实很优秀,学会 ...

  5. IDEA15使用maven编译scala和java

    机器安装maven,在IDEA中配置maven的home 创建项目:new-maven–> scala-archetype-simple project structure–>创建src. ...

  6. C#与Java的语法差异

    C#与Java的语法差异C与Java的语法差异前言程序结构基本语法数据类型字符串变量与常量运算符判断语句循环语句访问权限方法数组结构枚举类继承多态运算符重载接口命名空间预处理器指令正则表达式异常IO泛 ...

  7. scala 与 java 之间的关系

    scala来源于java,但又高于java. scala的设计者Martin Odersky就是一个JAVA控,这位牛人设计了javac和编写了jdk中的通用代码.可以说java语言本身就是Marti ...

  8. 编写Spark的WordCount程序并提交到集群运行[含scala和java两个版本]

    编写Spark的WordCount程序并提交到集群运行[含scala和java两个版本] 1. 开发环境 Jdk 1.7.0_72 Maven 3.2.1 Scala 2.10.6 Spark 1.6 ...

  9. Scala IDEA for Eclipse里用maven来创建scala和java项目代码环境(图文详解)

    这篇博客 是在Scala IDEA for Eclipse里手动创建scala代码编写环境. Scala IDE for Eclipse的下载.安装和WordCount的初步使用(本地模式和集群模式) ...

随机推荐

  1. Runtime 、 Block

    1 使用Block方式,对学生对象进行排序. 1.1 问题 在iOS4.0+ 和Mac OS X 10.6+ 中添加了Block概念,以对C语言进行扩展.在Block中可以定义参数列表.返回类型,还可 ...

  2. sql server导入mdf 报操作系统错误 5:“5(拒绝访问。)”

    错误一:拒绝访问 在安装示例库时出现以下的错误 消息 5120,级别 16,状态 101,第 1 行无法打开物理文件"D:\Download\AdventureWorks2012_Data. ...

  3. CentOS6下搭建OpenVPN服务器

    • OpenVPN简介 OpenVPN是一个用于创建虚拟专用网络(Virtual Private Network)加密通道的免费开源软件.使用OpenVPN可以方便地在家庭.办公场所.住宿酒店等不同网 ...

  4. UVa 489 HangmanJudge --- 水题

    UVa 489 题目大意:计算机给定一个单词让你猜,你猜一个字母,若单词中存在你猜测的字母,则会显示出来,否则算出错, 你最多只能出错7次(第6次错还能继续猜,第7次错就算你失败),另注意猜一个已经猜 ...

  5. 20145220 实验五 Java网络编程

    20145220 实验五 Java网络编程 实验内容 1.用书上的TCP代码,实现服务器与客户端. 2.客户端与服务器连接 3.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务 ...

  6. scala言语基础学习八

  7. CUDA中修饰符的解释

    1.  __device__ 使用 _device_ 限定符声明的函数具有以下特征: n         在设备上执行: n         仅可通过设备调用. 2. __global__ 使用 _g ...

  8. UML开始,OOA与OOD以及一个网站

    1.Object-Oriented Analysis(面向对象分析方法)是确定需求或者业务的角度,按照面向对象的思想来分析业务 2.面向对象设计(Object-Oriented Design,OOD) ...

  9. docker学习2-安装实践

    windows上安装docker后,默认自动在后台运行,右下角有docker图标,鼠标右键点击出现菜单 可以查看docker版本,对一些基本项进行设置如下: 安装及具体操作参见官方文档: https: ...

  10. Twitter 登录和分享

    继上面一片介绍了FaceBook的登录和分享,现在再来实现Twitter的登录和分享. 1.首先要说明的是,我没找到官方提供的SDK,查阅很多文章都提到了一个帮助实现的包Twitter4j.jar   ...