编程技术是改变世界的力量。
本站
当前位置:网站首页 > 后端语言 > 正文

关于Java 9你需要了解的5件事 java8基本知识

gowuye 2024-04-03 16:13 10 浏览 0 评论

在2017年9月份,Java宣布了最新版本的Java。它是在Java 8发布3年多后发布的。Java 9是Java发布周期的转折点。

模块化

让我们从Java 9的最重要的特性 - Java平台模块系统开始。Java最大的问题在于它的运行时库。在一个大型平台上进行二十年的开发会造成损失。许多类都会纠结,就像您在大型代码库中所期望的那样。更重要的是,没有办法在JDK中封装类的私有实现。这导致了外部Jar包的激增,这取决于内部细节,这阻碍了Java平台的发展。

使用Java 9,JDK本身是模块化的,并配有90个独立的模块。一个模块将链接的数据包分组。其他模块只能访问从模块显式导出的软件包。最后,内部实现类可以真正封装。另外,模块可以表达对其他模块的显式依赖关系。这些依赖关系在编译和执行期间都会由模块系统进行检查。

模块也可用于模块化应用程序,而不仅仅是JDK本身。现在,您可以使用封装的包和显式的依赖关系来创建自己的模块,而不是使用脆弱的类路径。

这些模块为更多结构化和可靠的应用提供了一条途径。但是,Java模块系统不会在一夜之间改变Java环境。模块影响应用程序的设计,并在开发的所有阶段展现自己:开发,编译,打包和执行。在广泛采用模块系统之前需要时间。幸运的是,支持许多迁移场景以逐步演变为模块化应用程序和库。

生产率

除了模块系统之外,Java 9还具有提高开发人员生产力的小功能。例如,集合工厂方法允许您在单个语句中使用预定义元素创建不可变集合。不需要更烦人的解决方法来创建小的预定义集合。

另一个主要的生产力加速器是JShell,一个用于Java代码的Read-Eval-Print-Loop。您可以交互式地输入和评估JShell中的Java代码片段,而不用编译和运行小型代码来测试代码。探索性编程在您从REPL获得即时反馈时具有新的含义。JShell已经与IntelliJ IDEA等IDE集成,允许您打开一个可以访问应用程序代码的交互式环境。

性能

运行新版本的Java通常意味着在不更改代码的情况下获得性能改进。Java 9也不例外。Compact Strings功能就是这种改进的一个例子。只能使用ASCII字符集完全表示的任何字符串只能以每个字符一个字节进行存储。字符串在ASCII范围之外的字符串每个字符通常有两个字节。大多数应用程序在作业中都有大量的String对象。如果它们是简单的字符串,则可以减少内存使用量。

Java 9中的另一个重要变化是默认情况下将Garbage Collector G1(垃圾优先)作为垃圾收集器。设计用于大桩,它提供可调整的休息时间目标,并可以执行增量收集。此更改的影响取决于您的应用程序的特性。一般来说,您可以通过更少的GC“停止世界”休息来获得更低延迟的代码执行。而G1GC则使用稍高的CPU功率来实现这一点。无论如何,切换到Java 9时,测试此垃圾回收器在您的特定应用程序上的行为非常重要。在某些情况下,分配模式不适用于G1GC方法,因此需要转移到另一个GC(或G1GC)。

安全

开发人员的生产力特性远不是采用Java 9的唯一原因。该平台本身获得了许多增强安全性的新功能。Java 9中的大多数安全增强功能都与安全联网有关。(D)TLS的最新版本现在支持安全的HTTPS连接。另外,支持证书装订。

另一个安全增强功能是过滤输入串行数据的功能。序列化一直是Java存在的祸根,最近几年导致众多安全漏洞。您现在可以采用白名单或黑名单方法来过滤传入的序列化数据流,从而最大限度地减少Java序列化的攻击面。

释放周期

到目前为止,我们已经关注了Java 9的特性。但Java 9的重要版本还有另一个原因:它标志着“功能驱动”Java版本时代的结束。过去,选择了一些重要的功能,当它们准备好时,就创建了一个新的Java主要版本。实际上,这导致主要版本之间至少有三年的时间。目前这是不可接受的,所以Oracle和OpenJDK项目正在转向基于时间的版本。

现在,每6个月发布一个新版本的Java。它将包含当时准备好的所有功能。在这6个月的版本中,如有必要,可能会发布重要修复程序的更新。这个新的发布时间表有几个含义。首先,Java版本变得更加频繁和可预测。目前的计划是在每年的3月和9月发布Java。新的版本号方案建议每六个月增加一次主要版本,这意味着2018年3月的下一个版本将是Java 10.然而,版本方案仍在讨论中。

对于许多组织来说,每6个月更新一次Java版本并不具有吸引力。因此,将会每三年指定一个长期版本(LTS)。LTS的第一个版本将于2018年9月发布。这也意味着Java 9将不会支持长期版本。

结论

这些新的发布策略使Java比以往更加灵活。主要功能将分解为渐进式步骤并每6个月交付一次。每次完成时都会发布功能,如果缺少一个版本,则仅在6个月内就会有另一个版本。即使在20多年后,Java仍然以令人兴奋和加速的速度继续前进。

相关推荐

嵌入式C语言中常量的应用实例(嵌入式c语言中常量的应用实例是什么)

常量,我们都知道,就是数值保持不变的量。在C语言中,常量一旦初始化了,它的值将在整个程序运行周期内,不允许发生任何变化。常量与变量是相对的,我们实际项目中经常会用到它。定义常量的两种方式C语言中主要有...

C语言编程基础知识汇总学习,适合初学者!更新常量知识

(二)整型常量整型常量有3种形式:十进制整型常量、八进制整型常量和十六进制整型常量。(注意:c语言中没有直接表示二进制的整型常量,在c语言源程序中不会出现二进制。)书写方式如下:十进制整型常量:123...

【C语言】第二章第六节:字符串常量

第二章第六节:字符串常量。下表C语言中的常用转义字符。·字符形式功能:ASCIl码(十进制形式)。→\t水平制表(横向跳格:跳到下一个tab位置)。→\b退格8。→\r回车(不换行,光标移到本行行首)...

「GCTT 出品」Go 系列教程——5. 常量

这是我们Golang系列教程的第五篇。定义在Go语言中,术语”常量”用于表示固定的值。比如5、-89、IloveGo、67.89等等。看看下面的代码:varaint=50v...

每日C语言-常量指针、指针常量、指向常量的指针常量

一、常量指针1)什么是常量指针?通过该指针不可以修改其所指向存储单元中的值指针本身即地址可以被修改2)定义:类型说明符const*指针变量;类型说明符表示指针所指向存储单元中的值得数据类型指针...

C语言-符号常量、常变量、变量之我见

更新内容:新增音频。音频和文章一起更配oHello,大家好,又和大家见面了~~相信很多朋友们听了C语言的“符号常量”、“常变量”、“变量”后还是对这三者一脸懵逼吧。不管老师怎么歇斯底里地讲解,同学们迷...

零基础带你学习C语言:四:探索常量与变量

前言常量与变量学习;一:分析:short、float、long类型#include<stdio.h>intmain(){shortage=18;floatweight=12...

C语言中是如何定义常量的?那定义字符串呢?

常量有整型常量、浮点型常量、字符型常量及字符串常量。‘常量定义是指定义符号常量,用一个标识符来代表一个常量,通过宏定义预处理指令来实现。常量的定义:#definecount60这就定义了一个常量...

C语言符号常量的优点,会是那几点?

符号常量是一个常量,是不变量,所以,在编译的时候,就把符号常量出现的地方,替换为符号常量对应的常量。符号常量一般用户定义一个全局使用的数据,而且要改变该数据的时候,只需要改变符号常量的值,代码中引用符...

嵌入式开发- C语言数据类型-常量(c语言嵌入式是干嘛的)

基本数据类型的常量-掌握**整型常量:**常量是指在程序运行期间其数值不发生变化的数据。整型常量通常简称为整数整数可以是十进制数、八进制数、十六进制数八进制06334十六进制0xd1...

c语言解剖课:只读变量、常量、字面量傻傻分不清?

写在前面本篇主题的缘起,是因为一个计算机专业的大学生在和我讨论c语言问题时,说const常量如何如何,我说变量被const修饰了,还是变量,不是“常量”。他给了我一个截图:他说大模型都是这样回答的,变...

C/C++编程笔记:C数组、字符串常量和指针!三分钟弄懂它

想弄懂C语言中数组和指针的关系吗?这篇文章就占据你三分钟时间,看完你肯定会有收获!数组数组声明为数据类型名称[constant-size],并将一个数据类型的一个或多个实例分组到一个可寻址的位...

C语言入门到精通【第008讲】——C语言常量

C语言常量常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量。常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量。常量就像是常规的变量,只不过常...

这是C语言无法修改得东西,C语言基础教程之常量解析

常量是指程序在执行期间不会改变的固定值。这些固定值也称为文字。常量可以是任何基本数据类型,如整数常量,浮点常量,字符常量或字符串文字,还有枚举常量。常量被视为常规变量,除了它们的值在定义后无法修改。整...

C语言中的单精度、双精度、常量等都有什么意思?

刚接触C语言时,对于常量,变量,浮点,单精度,双精度等问题的理解,大都很模糊不清,其实在程序运行过程中,其值不能改变的量称为常量。如12、0、-3为整型常量,4.6、-1.23为实型常量,'a'、'...

取消回复欢迎 发表评论: