【java9】java9新特性概述

经过4次的跳票,历经曲折的Java9最终在2017年9月21日发布。因为里面加入的模块化系统,在最初设想的时候并没有想过那么复杂,花费的时间超出预估时间。距离java8大约三年时间。

Java9提供了超过150项新功能特性,包括备受期待的模块化系统、可交互的REPL工具:jshell、JDK编译工具、语法层面的改变、Java公共API和私有代码,以及安全增强、扩展提升、性能管理改善等。可以说Java 9是一个庞大的系统工程,完全做了一个整体改变。

但是这个巨大改变的功劳,都给了java11了,目前oracle对8、11都长期支持,9、10不支持了,只能从历史版本(http://jdk.java.net/)中下载,Java11将会获得Oracle提供的长期支持服务,直至2026年9月。

从Java9这个版本开始,Java的计划发布周期是6个月,下一个Java的主版本将于2018年3月发布,命名为Java18.3(java10), 紧接着再过六个月将发布Java18.9(java11).

这意味着Java的更新从传统的以特性驱动的发布周期,转变为以时间驱动的(6个月为周期)发布模式(更快的时间周期,oracle的理念就是小步快跑,快速迭代,像IBM(DB2数据库,保守型内部测试才投入市场)),并逐步的将Oracle JDK原商业特性进行开源。针对企业客户的需求,Oracle将以三年为周期发布长期支持版本(long term support)。

Java9新特性

  • 模块化系统
  • jShell命令
  • 多版本兼容jar包
  • 接口的私有方法
  • 钻石操作符的使用升级
  • 语法改进:try语句
  • String存储结构变更
  • 便利的集合特性:of()
  • 增强的Stream API
  • 全新的HTTP客户端API
  • Deprecated的相关API
  • javadoc的HTML 5支持
  • Javascript引擎升级:Nashorn
  • java的动态编译器

官方提供的新特性列表:
https://docs.oracle.com/javase/9/whatsnew/toc.htm

或参考 Open JDK
http://openjdk.java.net/projects/jdk9/

在线Oracle JDK 9 Documentation
https://docs.oracle.com/javase/9/

JDK与JRE的关系

JDK(Java Development Kit)是Java开发环境,它不仅包含了JRE中的所有内容,即JVM和Java类库等支持Java运行时的所有组件,还包括了Java编译器(javac)、Java文档工具(javadoc)等开发工具以及示例代码和库。因此,JDK是开发Java程序的必备工具,为Java开发提供了丰富的开发工具和类库,方便开发人员进行Java应用程序的开发、测试和调试。

JRE(Java Runtime Environment)是Java运行时环境,它包括JVM以及Java类库等支持Java运行时的所有组件。JRE是运行Java程序所必须的,它屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的字节码,就可以在多种平台上不加修改地运行。

说明:

  • JDK = JRE + 开发工具集(例如 Javac 编译工具等)
  • JRE = JVM + Java SE 标准类库

java8的目录结构

jdk1.8.0_401/
├── COPYRIGHT
├── LICENSE
├── README.html
├── THIRDPARTYLICENSEREADME-JAVAFX.txt
├── THIRDPARTYLICENSEREADME.txt
├── bin
├── include
├── javafx-src.zip
├── jmc.txt
├── jre
├── jvisualvm.txt
├── legal
├── lib
├── man
├── release
└── src.zip

目录说明如下:

  • bin:包含命令行开发和调试工具,如javac、jar、javadoc
  • include:包含编译本地代码时使用的c/c++头部文件
  • lib:包含JDK工具的几个jar和其他类型的文件,他有一个tools.jar文件,其中含javac编译器的java类
  • jre/bin:包含基本指令,如java指令,在windows平台上,它包含系统的运行时动态链接
  • jre/lib:包含用户可编辑的配置文件,如properties和.policy文件,包含几个jar文件,rt.jar文件包含运行时的java类和资源文件

java9的目录结构

jdk-9.0.4
├── README.html
├── bin
├── conf
├── include
├── jmods
├── legal
├── lib
└── release

目录说明如下:

  • bin:包含所有指令,在windows平台上,他继续包含系统的运行时动态链接
  • conf:包含用户可编辑的配置文件,例如之前位于jre/lib目录中的.properties和policy
  • includes:包含在以前编译本地代码时使用c/c++头文件,他只存在于JDK中
  • jmods:包含JMOD格式的平台模块,创建自定义运行时映像需要他,它只存在于jdk中
  • legal:法律声明
  • lib:包含非windows平台上的动态链接本地库,其子目录和文件不应由开发人员直接编译或使用

没有名为jre的子目录了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/621345.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

sql注入---sqli靶场

1.什么是SQL注入 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编写时的疏忽,通过SQL语句,实现无账号登录,甚至篡改数据库 2.sql注入原理 攻击者注入一段包含注释符的SQL语…

软件2班20240513

第三次作业 package com.yanyu;import java.sql.*; import java.util.ResourceBundle;public class JDBCTest01 {public static void main(String[] args) {ResourceBundle bundle ResourceBundle.getBundle("com/resources/db");// ctrl alt vString driver …

WebSocket建立网络连接——小案例

WebSocket是一种实现全双工通信的网络技术标准,它允许在用户的浏览器和服务器之间进行持久的、双向的通信。以下是对WebSocket的具体介绍: 实时性:与传统HTTP请求相比,WebSocket提供了更高效的实时数据交换方式。一旦建立连接&am…

极限基本思想

极限基本思想 在高等数学中极限是微积分的前置思想,没有极限的概念,那么微积分的理论将不复存在。极限也用于分析一个函数的连续性,可以说理解极限后理解函数的连续问题是轻而易举的事情。对于函数的连续性,不是什么高深的词汇就…

点云分割论文阅读01--FusionVision

FusionVision: A Comprehensive Approach of 3D Object Reconstruction and Segmentation from RGB-D Cameras Using YOLO and Fast Segment Anything FusionVision:使用 YOLO 和 Fast Segment Anything 从 RGB-D 相机重建和分割 3D 对象的综合方法 toread&#x…

linux笔记5--shell命令2

文章目录 一. linux中的任务管理1. 图形界面2. 命令① top命令② grep命令③ ps命令补充: ④ kill命令图形界面杀死进程 二. 挂载(硬盘方面最重要的一个知识点)1. 什么是挂载2. 关于挂载目录① Windows② linux查看硬件分区情况(/dev下):更改挂载目录结束…

MySQL—子查询

目录 ▐ 子查询概述 ▐ 准备工作 ▐ 标量子查询 ▐ 列子查询 ▐ 表子查询 ▐ 多信息嵌套 ▐ 子查询概述 • 子查询也称嵌套查询,即在一个查询语句中又出现了查询语句 • 子查询可以出现在from 后面 或where后面 • 出现在 from 后称表子查询,结…

【线程创建】——三种方式➕多线程案例练习

02 线程创建 Thread , Runnable , Callable 三种创建方式 Thread class - 继承Thread类 (重点) Runnable接口 - 实现Runnable接口 (重点) Callable接口 - 实现Callable接口 (了解) Thread 类实现 它继承了老祖宗 Object java.lang.Object java.lang.Thread 它实现了 Runnab…

DEV--C++小游戏(吃星星(0.5))

目录 吃星星(0.5) 该版本简介 DEV--C小游戏(吃星星(0.1)) DEV--C小游戏(吃星星(0.2)) 分部代码 头文件 命名空间变量(增) 副函数(新,增) 清屏函数 打印地图函数(增&…

小红薯视频作品一键克隆,解放双手自动搬运【永久脚本+使用教程】

软件介绍: 小红薯作品搬运神器,软件只需要复制对方的作品链接即可一键克隆搬运到自己的小红书上,再也不用手动去复制粘贴了,批量起号搬运必备神器 设备需求: 电脑 链接:https://pan.baidu.com/s/11MzBqER…

15集合的应用

集合的概念 集合是一个容器,可以容纳其他类型的数据,前面所讲的数组就是一个集合。 所有的集合相关的类和接口都在java.util包下 特点 集合不能直接存储基本数据类型(但是代码上不需要体现,因为Java中有自动装箱)另外集合不能直接存储Java…

数据结构-栈的讲解

栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端称为栈顶,另一端称为栈底(因为先进后出)。栈中的数据元素遵守后进先出LIFO(Last In Firs…

Python GraphQL服务器实现库之tartiflette使用详解

概要 Tartiflette是一个为Python编写的GraphQL服务器实现,它建立在现代异步编程库如asyncio之上,提供了高性能的GraphQL执行环境。Tartiflette专注于提供最佳的开发者体验,支持最新的GraphQL特性。 安装 安装Tartiflette相对简单,但需要依赖于一些系统级的库。 首先,需…

【话题】软件开发的航海图:程序员的实用神器探秘

大家好,我是全栈小5,欢迎阅读小5的系列文章,这是《话题》系列文章 目录 背景一、代码编写二、版本控制三、测试与调试四、部署与运维五、总结文章推荐 背景 在软件开发的广阔海洋中,每一位程序员都是一位勇敢的航海家&#xff0c…

基于STM32F401RET6智能锁项目(AT24C0X存储芯片)

一、IIC基本介绍 1、IIC通信接口 • I2C(Inter IC Bus)是由Philips公司开发的一种通用数据总线 • 两根通信线:SCL(串行时钟线)、SDA(串行数据线) • 同步,半双工 • 带数据应答 •…

Java后端的接口参数两个interger 类型情况解决

get请求 &#xff0c;对应请求头 RequestParm, post请求&#xff0c; 对应请求体 &#xff0c;RequestBody 两个Integer参数情况 GetMapping("/insertStaffClass")public R<Void> insertStaffClass(RequestParam Integer staffId,RequestParam List<Integ…

C++ | Leetcode C++题解之第75题颜色分类

题目&#xff1a; 题解&#xff1a; class Solution { public:void sortColors(vector<int>& nums) {int n nums.size();int p0 0, p2 n - 1;for (int i 0; i < p2; i) {while (i < p2 && nums[i] 2) {swap(nums[i], nums[p2]);--p2;}if (nums[i…

python跟C++选哪个?

选择使用Python还是C取决于你的具体需求和项目背景。我这里有一套编程入门教程&#xff0c;不仅包含了详细的视频讲解&#xff0c;项目实战。如果你渴望学习编程&#xff0c;不妨点个关注&#xff0c;给个评论222&#xff0c;私信22&#xff0c;我在后台发给你。 在通信工程行业…

centos7安装zabbix-server

zabbixan-server安装 环境安装zabbix安装zabbix配置apachezabbix-UI前端配置修改zabbix为中文语言 环境 准备&#xff1a; centos7系统、mysql数据库/MariaDB数据库 mysql数据库可参照&#xff1a;https://blog.csdn.net/weixin_61367575/article/details/138774428?spm1001.…

Java(三)---逻辑控制

文章目录 前言1.逻辑控制语句的分类1.顺序结构2.分支结构2.1.if结构2.1.1.if...else语句2.2.2.if ... else if... else语句 2.2.switch语句 3.循环结构3.1.while3.2.break3.3.continue3.4.for循环3.5.do while循环 4.输入输出4.1.输入到控制台4.2.从键盘输入 前言 前两篇文章&…