java7和java8有啥区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java7和java8有啥区别相关的知识,希望对你有一定的参考价值。

相对于java7,Java8的新特性如下:
一、接口的默认方法;
Java 8允许给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法。
二、Lambda 表达式;
三、函数式接口;
四、方法与构造函数引用;
五、Lambda 作用域
在lambda表达式中访问外层作用域和老版本的匿名对象中的方式很相似。你可以直接访问标记了final的外层局部变量,或者实例的字段以及静态变量
六、访问局部变量
可以直接在lambda表达式中访问外层的局部变量。
参考技术A 8增加了一些新特性,但之前做的项目用的是7,一般不会因为8出了新特性而更换JDK。一段时间内,8不会大规模取代7。
有些项目还停留在jdk1.4或者1.5,我接触的jdk1.6比较多,7也并不是使用优势多大
另外,我不知道题主这问题到底想做什么0.0本回答被提问者采纳
参考技术B 随着编程语言生态系统的气候不断变化以及技术的革新,经历20余年的发展,Java逐渐演变成长为Java8。相比之前只是单纯的面向对象编程语言,Java8增加了很多新特性。

Java 8对于程序员的主要好处在于它提供了更多的编程工具和概念,能以更为简洁、更易于维护的方式解决新的或现有的编程问题。在Java 8中有两个著名的改进:一个是Lambda表达式,一个是Stream。

Lambda表达式是什么?
Lambda表达式,也可称为闭包,它允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用Lambda表达式可以使代码变的更加简洁紧凑,Lambda表达式的语法格式:
(parameters) -> expression或(parameters) -> statements;

Lambda表达式的重要特征:
可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。

使用Lambda表达式需要注意以下两点:
Lambda表达式主要用来定义行内执行的方法类型接口,例如,一个简单方法接口。在上面例子中,我们使用各种类型的Lambda表达式来定义MathOperation接口的方法。然后我们定义了sayMessage的执行。
Lambda表达式免去了使用匿名方法的麻烦,并且给予Java简单但是强大的函数化的编程能力。
Stream是什么?
Stream就是一个流,它的主要作用就是对集合数据进行查找过滤等操作。Java 8中的 Stream是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作(bulk data operation)。

对于基本数值型,目前有三种对应的包装类型Stream:IntStream、LongStream、DoubleStream。当然我们也可以用Stream<Integer>、Stream<Long> >、Stream<Double>,但是boxing和 unboxing会很耗时,所以特别为这三种基本数值型提供了对应的Stream。
Java 8中还没有提供其它数值型Stream,因为这将导致扩增的内容较多。而常规的数值型聚合运算可以通过上面三种Stream进行。

Stream上的操作分为两类:中间操作和结束操作。中间操作只是一种标记,只有结束操作才会触发实际计算。
中间操作又可以分为无状态的(Stateless)和有状态的(Stateful),无状态中间操作是指元素的处理不受前面元素的影响,而有状态的中间操作必须等到所有元素处理之后才知道最终结果,比如排序是有状态操作,在读取所有元素之前并不能确定排序结果。
结束操作又可以分为短路操作和非短路操作,短路操作是指不用处理全部元素就可以返回结果,比如找到第一个满足条件的元素。之所以要进行如此精细的划分,是因为底层对每一种情况的处理方式不同。

想要永远处于优势地位,就要不断的完善自身、更新技术。

JavaScript 和 Java 有啥区别?

【中文标题】JavaScript 和 Java 有啥区别?【英文标题】:What's the difference between JavaScript and Java?JavaScript 和 Java 有什么区别? 【发布时间】:2010-09-19 16:37:04 【问题描述】:

JavaScript 和 Java 有什么区别?

【问题讨论】:

【参考方案1】:

Java is to JavaScript as ham is to hamster

【讨论】:

你认为火腿是从哪里来的? ;) 来自一只大仓鼠;它太大了,你可以把它和猪混为一谈。 ;)【参考方案2】:

不要与名字混淆.. Java 是在 Sun Microsystems(现为 Oracle)创建的。 但是,JavaScript 是在 Web 的早期由 Netscape(现为 Mozilla)创建的,从技术上讲,“Java-Script”是 Sun Microsystems 许可的商标,用于描述 Netscape 对该语言的实现。网景提交了 ECMA(欧洲计算机制造商协会)标准化语言 由于商标问题,语言的标准化版本 被尴尬的名字“ECMAScript”困住了。出于同样的商标原因, 微软的语言版本正式称为“JScript”。在实践中,只是 大约每个人都将语言称为 JavaScript。真正的名字是“ECMAScript”。

两者是完全不同的语言!!!

【讨论】:

【参考方案3】:

Mozilla 团队(他们制作 Firefox)的A Re-Introduction to Javascript 应该解释一下。

【讨论】:

【参考方案4】:

世界上几乎每台 PC 上都安装了至少一个 JavaScript 解释器。

大多数(但不是“几乎所有”)PC 都安装了 Java VM。

【讨论】:

【参考方案5】:

一切。

Netscape 以这种方式命名 JavaScript,以使粗心的人误以为它与 Java(当时的流行语)有关,并且它成功了。

这两种语言完全不同。

【讨论】:

Javascript 最初被称为 Livescript,如果没有重新命名,今天的世界可能会变得更美好! 我怀疑这会引起混乱——这对公司有什么好处?我怀疑 意图 是利用 Java 的成功,尽管 效果 就是你所说的。 通过调用与类似名称无关的东西来“驾驭java的成功”?对我来说,这听起来很像“为营销目的造成混乱”。 Sun 用“Sun Java Desktop”再次尝试了这个命名技巧,它本质上是 Gnome 的品牌版本,与 Java 无关。 是的,它奏效了。 @Greg Hewgill,世界可能会变得更美好,但 Javascript 可能不会是今天的样子。【参考方案6】:

以下是两种语言之间的一些区别:

Java 是一种静态类型语言; JavaScript 是动态的。 Java 是基于类的; JavaScript 是基于原型的。 Java 构造函数是只能在对象创建时调用的特殊函数; JavaScript“构造函数”只是标准函数。 Java 要求所有非块语句以分号结尾; JavaScript 在某些行的末尾插入分号。 Java 使用基于块的范围; JavaScript 使用基于函数的范围。 Java 具有用于非静态方法的隐式this 范围和隐式类范围; JavaScript 具有隐式全局范围。

以下是一些我认为是 JavaScript 的特殊优势的功能:

JavaScript 支持闭包; Java 可以使用匿名类模拟某种“闭包”。 (Java 的未来版本可能会支持真正的闭包。) 所有 JavaScript 函数都是可变参数; Java 函数只有在显式标记时才是可变参数。 JavaScript 原型可以在运行时重新定义,并对所有引用对象立即生效。不能以影响任何现有对象实例的方式重新定义 Java 类。 JavaScript 允许独立于其原型重新定义对象中的方法(想想 Ruby 中的 eigenclasses,但在类固醇上); Java 对象中的方法与其类绑定,并且不能在运行时重新定义。

【讨论】:

晚了 2 年,但非常感谢您的周到解释。它比选定的答案更有用,信息更丰富,值得 IMO 更多投票 在这种情况下我都赞成。我们需要正确的答案,但天哪,像我们这样的极客,我们真的需要更多这种幽默 您也可以在这里使用强类型和松散类型,而不是静态类型和动态类型。【参考方案7】:

JavaScript 是一种面向对象的脚本语言,它允许您创建动态 HTML 页面,允许您处理输入数据和维护数据,通常在浏览器中。

Java 是一种编程语言、核心库集和虚拟机平台,可让您创建可在几乎所有平台上运行的已编译程序,而无需分发原始形式的源代码或重新编译。

虽然两者名称相似,但它们实际上是两种完全不同的编程语言/模型/平台,用于解决完全不同的问题。

另外,这直接来自***Javascript article:

一个常见的误解是 JavaScript 与 Java 相似或密切相关。事实并非如此。两者都具有类似 C 的语法,面向对象,通常是沙盒并广泛用于客户端 Web 应用程序,但相似之处仅此而已。 Java有静态类型; JavaScript 的类型是动态的(意味着一个变量可以保存任何类型的对象并且不能被限制)。 Java 是从编译后的字节码中加载的; JavaScript 被加载为人类可读的代码。 C 是他们最后的共同祖先语言。

【讨论】:

Javascript 不只是用于 HTML 页面,Java6 现在包含它,BIRT 将它用于报告脚本 - 我确信除了这两个之外还有其他非 HTML 用途。 你是对的。随着 Rhino 的发展,以及您提到的其他一些发展,Javascript 已经远远超出了浏览器沙箱。 脚本只是一种特殊的编程...相反,您应该说 Java 是一种编译型编程语言,而 javascript 是一种脚本或解释型编程语言。【参考方案8】:

根据我的经验,除了是完全不同的语言之外:

Java 起初看起来不错,但后来变得很烦人。 JavaScript 一开始看起来很糟糕而且毫无希望,然后逐渐你就真的开始喜欢它了。

(但这可能与我更喜欢函数式编程而不是 OO 编程有关......;)

【讨论】:

【参考方案9】:

正如大家所说,它们几乎完全不同。

但是,如果您的Java 应用程序需要脚本 语言,Javascript 实际上是一个非常好的选择。有一些方法可以让 Javascript 在 JVM 中运行,并且一旦你这样做了,你就可以非常无缝地访问和操作 Java 类。

【讨论】:

【参考方案10】:

他们没有任何关系。

Java 是静态类型的,可在其自己的 VM 上编译和运行。

Javascript 是在浏览器中动态输入、解释和运行的。它还具有 Java 所没有的一流函数和匿名函数。它可以直接访问网页元素,这对于进行客户端处理非常有用。

它们在语法上也有些相似,但仅此而已。

【讨论】:

【参考方案11】:

看看Wikipedia link

JavaScript,尽管有名字,但本质上与 Java 编程语言无关,尽管两者都有共同的 C 语法,并且 JavaScript 复制了许多 Java 名称和命名约定。该语言最初被命名为“LiveScript”,但在 Netscape 和 Sun 的联合营销协议中重新命名,以换取 Netscape 将 Sun 的 Java 运行时与当时占主导地位的浏览器捆绑在一起。 JavaScript 中的关键设计原则继承自 Self 和 Scheme 编程语言。

【讨论】:

【参考方案12】:

它们是具有不相关血统的独立语言。 Brendan Eich 最初是在 Netscape 创建 Javascript。它最初被称为摩卡。如果您愿意的话,选择 Javascript 作为名称是对当时由 Patrick Naughton、James Gosling 等人在 Sun 开发的占主导地位的 Java 编程语言的一种认可。人。

【讨论】:

【参考方案13】:

One 本质上是一个玩具,专为编写小段代码而设计,传统上被缺乏经验的程序员使用和滥用。

另一种是用于网络浏览器的脚本语言。

【讨论】:

【参考方案14】:

Java 和 Javascript 很相似,就像 Car 和 Carpet 很相似。

【讨论】:

很遗憾,我不能声称是原创性的。不过,我不记得我第一次听到它是在哪里。 我更喜欢火腿和仓鼠的版本。【参考方案15】:

一切。它们是不相关的语言。

【讨论】:

手臂上的拳头。根据***,在你对我施了咒语之后,我必须这样做,然后我才能再次说话。 en.wikipedia.org/wiki/Jinx 你看错了——我现在要揍你。给我我的可乐。

以上是关于java7和java8有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

Java 8 中的 map() 和 flatMap() 方法有啥区别?

Java 8 中的抽象类和接口到底有啥区别?

java面试题

Java面试题

java8新特性

stream和parallelStream有啥区别