目录
一、问题的引出:Myeclipse10.7能否使用jdk1.8?
二、分析1-从设置上着手:
三、分析2-从发布时间着手:
四、延伸:myeclipse是从哪个版本开始支持jdk1.8?
五、追思:
六、补充:用jdk1.8的新特性“lambda表达式”进行验证
我的Myeclipse10.7配置的是jdk1.8,至少在我没有遇到相关问题之前我一直是这样认为的。直到我最近导入了一个maven项目,我才发现原来Myeclipse10.7并不能使用“真正的jdk1.8”。为什么这么说呢?
我先回到导入项目问题上,我查找资料后发现,原来问题出在jdk版本上:导入maven项目编译运行环境都是jdk1.8,但是我电脑好像“也是1.8”,那为什么会出问题呢?
我去看了下软件设置,虽然运行环境是1.8,但是这里的编译环境只有1.3--1.7版本的(这里是我改过的,之前默认好像是更低版本的),也就是说没有1.8的编译环境。我们都知道java是先编译后运行的;那么总结一下这种情况:就是用1.7的版本编译java文件,然后在1.8的环境上运行。所以我说Myeclipse10.7并不能使用“真正的jdk1.8”!
那有人可能会问了:这样编译环境和运行环境不一样不会出问题吗?我也想到了这一点,所以我去问了下谷大哥,回答是一般情况下是可以的。那什么是特殊情况呢?如果你使用了jdk1.8的“新特性”,也就是说之前版本都没有的,不能向前兼容,那么用低于1.8的环境编译就会出问题!其实我想了下觉得挺有道理的:我之前用这个软件有一段时间了,虽然编译和运行环境不一样,但是没有出现什么大问题,说明一般情况下编译环境比运行环境的版本低是不会出现什么问题的,但是涉及到新特性问题上就会出现问题。看来我用了这么久都没有使用过真正的jdk1.8啊……
在这我们也可以从发布时间来看下:
1. Myeclipse10.7.1 版本:
于2013年2月7日发布,该版本同样基于 Eclipse 3.7.2。与MyEclipse 10.6相比,MyEclipse 10.7.1 主要进行了多项bug修复和其他功能细节改进。
2. jdk1.8的发布(图来自维基百科)
从下图中我们可以看出jdk1.8首发时间是2014年3月(18日)。
也就是说Myeclipse10.7.1在jdk1.8出现之前就有了。所以按理说Myeclipse10.7.1是不能使用jdk1.8的,除非它后期又加了新的功能,进行了支持,但是那样的它还叫Myeclipse10.7.1吗?据我了解至少这个版本后期是没有加入支持jdk1.8的功能的。
那么myeclipse是从哪个版本开始支持jdk1.8的呢??我之前找了好久,好像没有没有令我满意的答案,说法都很模糊,不是说使用最新版的,就是说使用以后的版本。
后来我又去找了下相关问题,在官网版本介绍里(https://www.genuitec.com/products/myeclipse/deliverylog/ci/)找到了,myeclipse2015版基于eclipse4.4,开始支持jdk1.8……所以所说应该是从这个版本开始支持jdk1.8的。
虽然网上一大堆类似:“给Myeclipse10.7配置jdk1.8环境”的帖子,他们是“只知其一,不知其二!”
但是经过我的个人探索或实践,发现这并不是真正的jdk1.8,而是伪“1.8”。
我并不是说他们写的不对(不过确实是有点片面了),我只是有点厌恶人云亦云,不管是非那种。人非圣贤,孰能无惑?从互联网上我们确实可以学到很多知识,但是我们要有选择的接受,明辨是非,怀着求真务实之心。我希望这篇文章能给你点启示。
实践是检验真理的唯一标准!其实最简单的办法就是看myeclipse10里面能不能使用jdk1.8的语法,jdk1.8的一个重要的新特性就是lambda表达式,下面就试下:
List
如果不支持会直接报语法错误,如果支持则会输出:
1.使用普通foreach遍历list(jdk1.5开始支持):
object:12
object:hello2.使用lambda表达式遍历list(jdk1.8开始支持):
object:12
object:hello