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。只要知道有这个情况即可,有兴趣的读者请自行网上搜索。

Java速成系列-02-Java的版本相关推荐

  1. Java 集合系列02之 Collection架构

    概要 首先,我们对Collection进行说明.下面先看看Collection的一些框架类的关系图: Java 集合系列02之 Collection架构 Collection是一个接口,它主要的两个分 ...

  2. 【Java 8系列】Java开发者的判空利器 -- Optional

    热门系列: [Java 8系列]收集器Collector与工具类Collectors [Java 8系列]Stream详解,看这一篇就够啦 [Java 8系列]Lambda 表达式,一看就废 [Jav ...

  3. 【Java 8系列】Java日期时间的新主宰者:LocalDate、LocalTime、LocalDateTime、ZonedDateTime

    热门系列: [Java 8系列]收集器Collector与工具类Collectors [Java 8系列]Stream详解,看这一篇就够啦 [Java 8系列]Lambda 表达式,一看就废 [Jav ...

  4. Java学习系列(十)Java面向对象之I/O流(上)

    IO流 我们知道应用程序运行时数据是保存在内存中的,但由于内存中的数据不可持久保存(如断电或程序退出时数据会丢失),因此需要一种手段将数据写入硬盘或读入内存.面向IO流编程就是一种很好的选择.IO:I ...

  5. 【Java编程系列】java用POI、Itext生成并下载PPT、PDF文件

    热门系列: [Java编程系列]WebService的使用 [Java编程系列]在Spring MVC中使用工具类调用Service层时,Service类为null如何解决 [Java编程系列]Spr ...

  6. 【Java编程系列】Java判断世界各时区的夏令时、冬令时

    热门系列: [Java编程系列]java用POI.Itext生成并下载PPT.PDF文件 [Java编程系列]二进制如何表示小数?0.3+0.6为什么不等于0.9?纳尼!!! 程序人生,精彩抢先看 目 ...

  7. 【Java编程系列】Java自定义标签-Tag

    热门系列: [Java编程系列]WebService的使用 [Java编程系列]在Spring MVC中使用工具类调用Service层时,Service类为null如何解决 [Java编程系列]Spr ...

  8. 【JAVA进阶系列】JAVA 设计模式 -- 抽象工厂模式(Abstract Factory)

    [JAVA进阶系列]JAVA 设计模式 -- 抽象工厂模式(Abstract Factory) [1.1]抽象工厂模式简介 抽象工厂者模式的类结构图 AbstractProduct(抽象产品),Abs ...

  9. 如何学IT?零基础入门自学Java编程系列:java简介跟计算机常识

    学习Java我们应该懂的一些常识 作为IT人士,那什么叫IT呢? 即信息技术,主要用于管理和处理信息所采用的各种技术的总称.IT业务是很广的.比如经历了最早一批大型机发展到PC电脑端,再到互联网高速发 ...

  10. java复习系列[3] - Java虚拟机

    文章目录 Java虚拟机 JRE 和 JDK 整体工作原理 类加载 class文件结构 类加载过程 双亲委派机制 运行时内存区域 整体划分 PC (Program Counter) JVM栈 局部变量 ...

最新文章

  1. FLAS: fast and high-throughput algorithm for PacBio long-read self-correction FLAS:快速、高通量的PacBio lon
  2. (08) 需求征集 -- 消息管理
  3. gradle 项目运行主类报错
  4. oracle EBS grant 您不具有执行当前操作的足够权限。请与您的系统管理员联系。...
  5. Springboot第二篇:与前端fetch通信(附springboot解决跨域方法)
  6. java 交换两个数的值(临时变量,加减,异或)
  7. aix linux ftp,在AIX下安装配置FTP服务器
  8. “box-shadow”属性(转)
  9. webrtc之SVC实现(十)
  10. Atitit.可视化与报表原理与概论
  11. 发那科程序全部输出_如何拷贝FANUC系统全部程序
  12. 软件测试人员培养计划
  13. Oracle账号 Oracle官网登录下载资源账号密码共享
  14. html 字幕文件怎么打开,srt文件怎么打开
  15. 小米历史版本在哪下载
  16. flashback六大技术之flashback query
  17. MapGuide源码分析----MapGuide服务器源码分析
  18. Mali GPU linux下驱动编译
  19. 如何把密度函数化为标准正态二维分布_浅谈IVD统计系列--资料类型及正态分布...
  20. 自己搜集编写的Delphi 通用函数

热门文章

  1. STM32中使用PS2手柄
  2. 最强大脑-高效记忆方法
  3. 蓝图出炉:大家将能够利用英伟达技术打造自己的自动驾驶车辆
  4. android开发案例1---拦截电话,拯救史迪仔,有序广播
  5. 苦逼的草根站长屡战屡败,屡败屡战是因为爱网站
  6. Android http proxy server 设置
  7. 2013年最具有技术影响力原创图书评选
  8. 吉他扒谱该怎么做?分享一款超好用的扒谱工具!
  9. 自己动手简单实现vbb的URL静态化
  10. vue怎么合并两个视频_vue怎么把照片合并视频