Java9新增特性

特性列表

  • 模块化系统:Java 9引入了模块化系统,将代码划分为模块,以更好地组织和管理代码。
  • 新的日期和时间API:Java 9引入了新的日期和时间API,使得处理日期和时间变得更简单、更强大。
  • HTTP/2支持:Java 9引入了对HTTP/2的支持,可以更好地支持现代网络协议。
  • 改进的集合框架:Java 9对集合框架进行了改进,增加了新的接口和实现类,使其更加灵活和易于使用。
  • 并发改进:Java 9对并发进行了改进,增加了新的并发工具和API,以提高并发性能和开发效率。
  • 编译器优化:Java 9对编译器进行了优化,采用了新的编译技术,以提高代码性能和执行效率。
  • JShell工具:Java 9引入了JShell工具,允许在交互式环境中执行Java代码,方便开发者进行测试和调试。
  • JavaFX改进:Java 9对JavaFX进行了改进,增加了新的API和功能,使其更加易用和强大。
  • 引入了新的Stream API:Java 9引入了新的Stream API,使得处理集合变得更加简单和直观。
  • 加强了对泛型的支持:Java 9加强了对泛型的支持,引入了类型推断的语法糖,使得编写泛型代码更加容易。
  • 改进了枚举类型:Java 9改进了枚举类型,使得枚举类型的实现更加简单和安全。
  • 引入了Optional类:Java 9引入了Optional类,用来表示可能不存在的值,以避免NullPointerException。
  • 改进了集合的遍历:Java 9改进了集合的遍历方式,引入了forEach方法和for-each循环,使得遍历集合变得更加简单和直观。
  • 引入了CompletableFuture类:Java 9引入了CompletableFuture类,提供了一种简单的方式来处理异步编程和编写链式调用。
  • 支持Unicode 9:Java 9支持Unicode 9,增加了对一些新字符的支持。
  • 删除了废弃的CORBA模块:Java 9删除了废弃的CORBA模块,以减少不必要的代码和维护成本。
  • 支持JDK的动态版本:Java 9支持在运行时切换JDK的版本,使得开发人员可以根据需要选择合适的JDK版本进行开发和部署。
  • 支持嵌套类和枚举类的静态成员:Java 9支持嵌套类和枚举类的静态成员,使得代码更加清晰和易于维护。
  • 加强了对多线程的支持:Java 9加强了对多线程的支持,引入了新的线程调度器和线程工厂,使得开发人员可以更加灵活地管理和控制线程。
  • 支持IPv6:Java 9支持IPv6,增加了对IPv6地址的支持和处理能力。

以上是Java 9的一些主要新增特性,这些特性使得Java语言在性能、易用性和可维护性方面都得到了进一步的提升。

代码示例

新的日期和时间api

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class DateTimeExample {
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();
        System.out.println("Current date and time: " + now);
        
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String formattedDateTime = now.format(formatter);
        System.out.println("Formatted date and time: " + formattedDateTime);
    }
}

JShell交互环境

// 在JShell中输入这些代码示例
| Welcome to JShell -- Version 9.0.1                                                                                                                                                                            |
| For an introduction see `jshell --helpdocs`                                                                                                                                                                      |
| Type `exit` to quit JShell -- Press F5 to run selected statement -- Press ESC to interrupt current statement evaluation                                                                                        |
| /  System.out.println("Hello, World!"); // 输出 Hello, World!                                                                                                                                               |
| /  int x = 5; // 定义一个整数变量x,并赋值为5                                                                                                                                                               |
| /  System.out.println("x = " + x); // 输出 x 的值                                                                                                                                                           |
| /  x += 3; // 将 x 的值增加3                                                                                                                                                                               |
| /  System.out.println("x = " + x); // 输出 x 的值                                                                                                                                                           |
| /exit; // 退出JShell交互式环境                                                                                                                                                                               |


模块化系统:


module com.example.myapp {
    requires java.base;
    requires java.util;
    exports com.example.myapp;
}

HTTP/2支持:

import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class HttpClientExample {
    public static void main(String[] args) {
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(java.net.URI.create("https://example.com"))
                .build();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}

Stream API:


import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class StreamExample {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
        List<String> capitalizedNames = names.stream()
                .map(name -> name.toUpperCase())
                .collect(Collectors.toList());
        System.out.println(capitalizedNames);
    }
}

集合改进:


import java.util.List;
import java.util.ArrayList;
import java.util.stream.Collectors;
public class CollectExample {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();
        names.add("Alice");
        names.add("Bob");
        names.add("Charlie");
        List<String> capitalizedNames = names.stream()
                .map(String::toUpperCase)
                .collect(Collectors.toList());
        System.out.println(capitalizedNames);
    }
}

重复注释:


// This is a comment
// This is another comment // end of comment

Java9

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

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

相关文章

Vue3全局共享数据

目录 1&#xff0c;Vuex2&#xff0c;provide & inject2&#xff0c;global state4&#xff0c;Pinia5&#xff0c;对比 1&#xff0c;Vuex vue2 的官方状态管理器&#xff0c;vue3 也是可以用的&#xff0c;需要使用 4.x 版本。 相对于 vuex3.x&#xff0c;有两个重要变…

springboot中定时任务cron不生效,fixedRate指定间隔失效,只执行一次的问题

在调试计算任务的时候&#xff0c;手动重置任务为初始状态&#xff0c;但是并没有重新开始计算&#xff0c;检查定时任务代码&#xff1a; 从Scheduled(fixedRate 120000)可以看到&#xff0c;应该是间隔120秒执行一次该定时任务&#xff0c;查看后台日志&#xff0c;并没有重…

让深度神经网络绘画以了解它们是如何工作的

一、说明 深度学习如此有效&#xff0c;这真是一个谜。尽管有一些关于深度神经网络为何如此有效的线索&#xff0c;但事实是没有人完全确定&#xff0c;并且深度学习的理论理解是一个非常活跃的研究领域。 在本教程中&#xff0c;我们将以一种不寻常的方式触及问题的一个小方面…

Unity Mirror学习(一) SyncVars属性使用

官网中所说的网络对象&#xff0c;指的是挂了 NetworkIdentity组件的对象 官网中所说的玩家对象&#xff0c;指的是NetworkManager脚本上的PlayerPrefab预制体 这个概念对阅读官网文档很重要&#xff0c;我刚开始并不理解&#xff0c;走了歪路 SyncVars&#xff08;同步变量&a…

如何在JVS低代码表单配置中实现数据的高效管理?

在数字化时代&#xff0c;表单已经成为企业、机构和个人收集、整理、分析数据的重要工具。然而&#xff0c;随着数据复杂性的增长&#xff0c;传统的单一表单往往难以满足需求。JVS低代码表单引擎中子表格允许在主表单中嵌套另一个子表数据&#xff0c;使得数据的收集和组织更加…

Android自定义 View惯性滚动效果(不使用Scroller)

效果图&#xff1a; 前言&#xff1a; 看了网上很多惯性滚动方案&#xff0c;都是通过Scroller 配合 computeScroll实现的&#xff0c;但在实际开发中可能有一些场景不合适&#xff0c;比如协调布局&#xff0c;内部子View有特别复杂的联动效果&#xff0c;需要通过偏移来配合…

Java Web 学习笔记(四) —— MyBatis

目录 1 MyBatis 概述2 MyBatis 快速入门3 Mapper 代理开发4 配置文件实现CRUD4.1 环境准备4.2 查询所有数据4.2.1 编写接口方法4.2.2 编写 SQL 语句4.2.3 编写测试方法4.2.4 结果映射问题 4.3 查询详情4.3.1 编写接口方法4.3.2 编写SQL语句4.3.3 编写测试方法 4.4 多条件查询4.…

PHP+MySQL人才招聘小程序系统源码 带完整前端+后端搭建教程

在当今竞争激烈的人才市场中&#xff0c;招聘平台的需求日益增长。传统的招聘平台往往需要投入大量的人力物力进行维护和管理&#xff0c;这对于许多中小企业来说是一个沉重的负担。因此&#xff0c;开发一个简单易用、高效便捷的招聘平台显得尤为重要。 PHP是一种流行的服务器…

计算机底层的秘密 摘抄笔记

https://www.bookstack.cn/read/webxiaohua-gitbook/README.md 大部分是摘抄 机器指令需要加载到内存中执行&#xff0c;因此需要记录下内存的起始地址和长度&#xff1b;同时要找到函数的入口地址并写到PC寄存器中&#xff0c;想一想这是不是需要一个数据结构来记录下这些信…

与创新者同行,Apache Doris in 2023

在刚刚过去的 Doris Summit Asia 2023 峰会上&#xff0c;Apache Doris PMC 成员、飞轮科技技术副总裁衣国垒带来了“与创新者同行”的主题演讲&#xff0c;回顾了 Apache Doris 在过去一年所取得的技术突破与社区发展&#xff0c;重新思考了在面对海量数据实时分析上的挑战与机…

红队系列-IOT安全深入浅出

红队专题 设备安全概述物联网设备层次模型设备通信模型 渗透测试信息收集工具 实战分析漏洞切入点D-link 850L 未授权访问 2017 认证绕过认证绕过 D-link DCS-2530Ltenda 系列 路由器 前台未授权RTSP 服务未授权 访问 弱口令命令注入思科 路由器 固件二进制 漏洞 IoT漏洞-D-Lin…

19.13 Boost Asio 发送TCP流数据

Boost框架中默认就提供了针对TCP流传输的支持&#xff0c;该功能可以用来进行基于文本协议的通信&#xff0c;也可以用来实现自定义的协议。一般tcp::iostream会阻塞当前线程&#xff0c;直到IO操作完成。 首先来看服务端代码&#xff0c;如下所示在代码中首先通过GetFileSize…

使用Net2FTP轻松打造免费的Web文件管理器并公网远程访问

文章目录 1.前言2. Net2FTP网站搭建2.1. Net2FTP下载和安装2.2. Net2FTP网页测试 3. cpolar内网穿透3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 文件传输可以说是互联网最主要的应用之一&#xff0c;特别是智能设备的大面积使用&#xff0c;无论是个人…

Java安全架构 JCA、JCE、JSSE、JAAS

Java语言拥有三大特征&#xff1a;平台无关性、网络移动性和安全性&#xff0c;而Java安全体系结构对这三大特征提供了强大的支持和保证&#xff0c; Java安全体系结构总共分为4个部分&#xff1a; &#xff08;1&#xff09;JCA&#xff08; Java Cryptography Architecture…

Go defer简介

思考 开始之前&#xff0c;先考虑下下面的代码的执行结果&#xff1a; package mainimport "fmt"func test() int {i : 0defer func() {fmt.Println("defer1")}()defer func() {i 1fmt.Println("defer2")}()return i }func main() {fmt.Print…

EasyExcel 导出冻结指定行

导出的实体类 package org.jeecg.modules.eis.test;import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.*; import lombok.Getter; import lombok.Setter; import org.apache.poi.ss.usermodel.HorizontalAlignment;import…

如何在Linux上部署1Panel运维管理面板并远程访问内网进行操作

文章目录 前言1. Linux 安装1Panel2. 安装cpolar内网穿透3. 配置1Panel公网访问地址4. 公网远程访问1Panel管理界面5. 固定1Panel公网地址 前言 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器&#xff0c;包括主机监控、…

通义千问, 文心一言, ChatGLM, GPT-4, Llama2, DevOps 能力评测

引言 “克隆 dev 环境到 test 环境&#xff0c;等所有服务运行正常之后&#xff0c;把访问地址告诉我”&#xff0c;“检查所有项目&#xff0c;告诉我有哪些服务不正常&#xff0c;给出异常原因和修复建议”&#xff0c;在过去的工程师生涯中&#xff0c;也曾幻想过能够通过这…

【VUE+ elementUI 实现动态表头渲染】

VUE elementUI 实现动态表头渲染 1、定义 columns&#xff08;表头数据&#xff09; 和 dataList&#xff08;表格数据&#xff09; data() {return {loading: false,dataList: [{ name: 张三, sex: 男, age: 18 },{ name: 林琳, sex: 女, age: 20 },{ name: 王五, sex: 男, …

已解决:rm: 无法删除“/opt/module/zookeeper-3.4.10/zkData/zookeeper_server.pid“: 权限不够

解决&#xff1a; ZooKeeper JMX enabled by default Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg Stopping zookeeper ... /opt/module/zookeeper-3.4.10/bin/zkServer.sh: 第 182 行:kill: (4149) - 不允许的操作 rm: 无法删除"/opt/module/zooke…