Java本身的版本
一个软件系统都会有版本的变化,比如Windows 7,Windows 10和Windows 11。Java当然也有不同的版本。对电脑不陌生的用户都会了解到,一个在Windows 7运行良好的软件,可能在Windows10上就不能正常工作,反之也会出现各种问题。
对于Java也会有这个问题,一个Java程序在不同的Java环境里可能工作会有问题。如果是简单的不能运行,似乎还是个好现象。因为如果表面上可以运行,但是错误却隐性的发生,那程序的结果可能是无法预测的。
用于生产环境的Java应用,一般不会经常升级Java的版本。也就是说一旦选定一个版本的Java用于开发和运行,那么很长时间是不会更换版本的,10年,20年都有可能。有机会接触生产领域的电脑系统的用户也会发现,很多电脑都在运行旧版本的Windows,也是这个原因。因为这些领域对安全,稳定的要求放在第一位,而不是一味的求新。
因为虽说新版本的Java尽量保持向后的兼容性,但是版本变化还是会带来一些不确定性。所以说一个运行中的系统,尽管会不断拓展,改错和更新等等,但都不会触及Java本身的变动。
下面是一个截至2022年的Java版本列表。标有LTS的版本是长期支持版(long-term support的缩写),这也是生产环境的选择。现在很多Java应用都在使用Java 8。
对于新开发的Java应用是否一定选择最新的LTS版本,也是要看具体情况。因为这里的Java只是指Java的核心,实际应用还要用到其它的软件包。这些第三方的应用也会对Java的版本有要求。所以Java版本的选择是需要仔细论证的。这里不做详述。
本系列文章使用的是Java 17 LTS版,操作系统使用Windows 10中文版。对于Linux和Mac会有专题讨论。
Java的发行版
Java还涉及发行版的问题,也就是说是哪一个公司或机构发布的Java,这个和Linux有些类似。所谓正宗的Java应该是Oracle(甲骨文公司)的Java。此外还有OpenJava,Amazon(亚马逊)Java,Azul和微软等等。粗略的讲他们都是一样的标准,而大公司发行的Java在性能和稳定性上要好一些。这方面的细节,有兴趣的读者可以自行研究。初学者可以忽略这些细节,而把精力用在学习编程本身。
Java运行环境JRE和开发环境JDK
和版本相关的还有一个运行版和开发版的问题。很好理解,要运行一个Java程序,那需要在电脑上安装Java。 这里安装的Java实际上是指Java运行环境jre(Java Runtime Environment)。但是如果要编写Java程序,那就需要jdk(Java Development Kit),这也是上面的表中出现的字样。
针对初学者,我做个类比来解释一下jre和jdk的区别。好像查看图片和修改图片一样,查看图片的应用显然比修改图片的应用要轻量一些。如果没有修图的需要,那只要有一个图片查看软件就好了,不用安装图片编辑软件。显然修图软件也是可以显示图片的。
我们这里当然是使用JDK。
64位和32位的问题
这个问题已经变得不太重要,因为32位系统已近完全退出市场,64位可以说是唯一选择。
Java不同操作系统和不同处理器的版本
对于不同的操作系统Java有不同的版本,这个不难理解。Java对主流的操作系统有不同的软件包。
针对不同的CPU(处理器)Java也有不同的版本。
不过这也不用深入研究,只要下载Java时不必困扰即可。
J2ME和J2EE版
同样为了避免初学者对一些常见的缩写有疑惑,这里稍微解释一下J2ME和J2EE。
J2ME - Java 2 Mobile Environment:Java的移动环境
J2EE - Java 2 Enterprise Edition:Java企业环境
这些都是Java的扩展应用场景,初学者不必过度关注。先学会Java,自然会理解到。
这里要解释一下为什么有个2。这里的2就是指Java第1.2版。Java的版本编号可能会带来一些困扰。 因为下载的Java软件包的文件名会有些奇怪的对应。简单讲都是历史原因,没什么玄机,了解了就好。
Java有几次重大的版本变化。从1.2开始有了根本性的变化,并保持下来。所以常常以J2代表Java。此后到1.5版,Java又有了重大变化,为了减少困扰,1.5版开始就是Java 5,直到现在Java 17和18等。但是比如Java 8,下载安装后,发现目录名还是1.8。只要知道有这个情况即可,有兴趣的读者请自行网上搜索。