对java新手来说,选择jdk的版本也是个头晕的事情,今天小拿就给大家讲讲。内容包括
- jdk从1.5到1.11,选哪个最好
- jdk和jre的区别
一、jdk版本选择
jdk是java开发工具包,除了运行和编译相关的工具外,最重要的是封装了很多方法(function/method/api)。比如写一个输出“Hello world”的程序,直接调用System.out.println方法就好。
但是安装jdk的时候,有的人推荐1.6(也有叫6.0的),也有说用1.7和1.8的。竟然这么混乱,不如先官网看看是什么情况。
java下载官网直达:Java Downloads | Oracle
问题1:JDK为什么频繁升级,从1.7到1.8、1.9、1.0、1.11?
这个问题新手可以了解下,java和C++都是高级语言,但是两者之间最大的区别就是C++底层直接调用操作系统运行硬件;而java是在操作系统之上加了一层JVM(java虚拟机),也就是运行上硬件之上的一个层级,所以一般来说C++性能更好。
早期的大型客户端游戏、网络和大数据算法、和硬件驱动都是用C++(或者C)语言来开发的。但是人无完人,语言也是这样,要不然就不会有像java、python、go等五花八门的语言。与操作系统的强锁定使C++在不同操作系统或者硬件平台运行时,都要对程序进行改进和调整。
而java因为底层有一套虚拟机的存在,号称各平台运行无障碍。现在智能电器、家居基本上跑的都是基于java语言开发的程序。
但是java说我也是运用这么广泛的语言,怎么能老戴着性能不如C++的帽子呢?所以随着技术的提高和数据结构算法的应用,通过不断的小版本(如1.8.1,1.8.2)和大版本(1.7、1.8等)的发布,jvm的性能也一直在升级,普通应用场景下,已经和C++性能相关不大。
另外,语法一直比较死板的java语言,也在吸收其它语言的精华,比如1.8引入了Lambda表达式,1.9引入var变量等。(虽然,java程序员大都不买账,一直用着原来死板的语法~~)
问题二:到底取选哪个
先给答案,选1.8或者1.9,1.8优先。
话要从Sun公司(也就是太阳)被Oracle收购说起,java原来是个开源项目,社区来维护。被收购后就带有商业和属性,Oracle公司也慢慢开始向java开刀和收费了,虽然现在jdk se 标准版还不收费,但是高级版已经向使用的企业要钱了。
有这个打算后的java语言走的路子就快了很多,比如10.0和11.0的发布就很快,一些新增的功能还需要市场来反馈是不是合理的,而且java开发依赖于很多框架(如spring),如果这些框架还没有完全支持新版本,可能就运行不起来。所以建议新版本(10.0和11.0),除非只想从语言层面去体验新功能,还是不要在实际业务开发中用。
1.5和1.6就太老了,连1.8,Oracle都发出2019年1月停止更新的通知了,我们就更不要用这些老古董了。
1.7、1.8、1.9都是成熟版本,原则上都可以选用。公司的商业项目jdk一般不轻易升级,1.9用的就比较少了,加上上面的配套框架升级速度的考虑,1.9版本第二推荐位。1.8和1.7的应用都比较广泛了,那自然选更新更高级的版本,所以,最推荐用1.8版本。
二、jdk和jre的区别
有同学在配置系统时,经常遇到jdk和jre的问题,但是也搞不清两者的区别。这里作为常识了解下,早期不知道也没什么问题。
其实从就两个词的字面就可以区分开,jdk(java development kit)是java的开发工具包,jre (java runtime environment) 是java程序的运行环境。
本地开发的时候也可以运行,但是作为网站或者项目运行时,代码都打个war包或者jar包了,跟开发相关的工具和包就没有用了。
也就是说jre是jdk的一个子集。
运行时使用jre而不使用jdk,一方面是为了减少硬盘空间的使用,另一方面也有一定的安全考虑,防止jdk里的一些执行命令被恶意篡改。当然,现在大部分公司运行时已经不那么区分jdk和jre了,直接在服务器上跑JDK。