版本:v10.0.2 官方版 大小:97.00 MB
类别:编程软件 系统:WinXP, Win7, Win8, Win10
立即下载jre10是每一位程序员都会用到的JAVA运行工具,它可以帮助用户在多个环境中进行便捷的操作,这里小编主要提供的是64位安装包,有需求的用户可以直接下载安装哟,jre10对于之前的jre9相比较而言优化了很多,具体请看下方说明
JRE为JavaRunTimeEnvirment的简称,JavaRuntimeEnvironment(包括JavaPlug-in)是Sun的产品,包括两部分:JavaRuntimeEnvironment和JavaPlug-inJavaRuntimeEnvironment(JRE)是可以在其上运行、测试和传输应用程序的Java平台。它包括Java虚拟机、Java平台核心类和支持文件。它不包含开发工具--编译器、调试器和其它工具。
1、共享类库需要在GAC(Global Assembly Cache)中注册,注册过程比较复杂,首先要用工具生成公开/私有密钥对,然后结合密钥和类库版本号连编,最后使用工具注册到GAC中好以后,会被放在"C:Winntassemblygac类库的名称空间版本号"目录下,不同的类库版本在注册的时候会按照版本号分开放置:
·某类库1.0版本 C:Winntassemblygac名称1.0名称.dll
·某类库1.1版本 C:Winntassemblygac名称1.1名称.dll
2、可以同时存在一个类库的n个版本,至于在程序中用哪个版本,在程序的配置文件中声明,CLR会根据声明来调用相应的版本的类库。我觉得.Net实现方法未免太复杂了一些,将所有共享类库都塞到一个系统目录下,并且同一个类库还有n个版本,将来.Net第三方开发的类库逐渐丰富起来以后,.Net类库的GAC也会越来越庞大,会不会也搞得和Windows注册表一样难以维护?软件发布到服务器上的时候,类库要再注册一次,服务器会逐渐形成一个庞大的树状的GAC,GAC里面存放着组件的n个版本。试想经过一段时间之后,C:Winntassemblygac目录会越来越庞大,有的组件甚至有n个版本都放在那里,你又不敢随便删除,不知道是不是有程序需要使用,我不明白MS为什么要把这么简单的事情搞到这么复杂?
讨论:全局程序集缓存不会是无限大的,所以“将来.Net第三方开发的类库逐渐丰富起来以后,.Net类库的GAC也会越来越庞大,会不会也搞得和Windows注册表一样难以维护?”这是杞人忧天。原因如下:第一是操作系统的生命周期一般不会是无限长的,而且越来越短,Windows为证,同时.Net Framework也在不断更迭,在十年左右的时间里,全球的程序产量是有限的,高质量的第三方开发的类库更是有限,需要注册到GAC的就更少了。
JRE中由ClassLoader负责查找和加载程序引用到的类库,基础类库ClassLoader会到rt.jar中自动加载,其它的类库,ClassLoader在环境变量CLASSPATH指定的路径中搜索,按照先来先到的原则,放在CLASSPATH前面的类库先被搜到,Java程序启动之前建议先把PATH和CLASSPATH环境变量设好,OS通过PATH来找JRE,确定基础类库rt.jar的位置,JRE的ClassLoader通过CLASSPATH找其它类库。但有时候会出现这样的情况,希望替换基础类库中的类库,那么也可以简单的通过-Djava.endrosed.path=...参数传递给java.exe,于是ClassLoader会先于基础类库使用java.endrosed.path参数指定路径的类库。因此Java的版本管理是非常简单有效的,也许很原始,不过很好用,简单就不容易出错。(所以我很奇怪Eric Ramond为什么批评Java的类库管理机制,他还居然批评Java的接口,令人怀疑他对Java的了解程度)
1、有时候副本的制作出版了第一CPU(重要补丁更新的缩写)和PSU(代表补丁集更新),其中CPU包含更新的建议大多数用户来说很重要,建筑物的版本是旧的,例如,更新CPU的更新79和PSU的更新80。
2、版本7是Windows XP的最新版本。
3、安装此工具之前,请安装浏览器或浏览器。
4、最好在64位Windows上安装32位版本,但64位版本除外,包括32位软件。
5、安装后,建议您从Windows启动程序列表中卸载此工具;在“开始”菜单中键入msconfig.exe,然后运行,转到“启动”选项卡,然后取消选中“Java?Platform SE自动更新程序”。
6、使用Windows优化和管理软件很容易。您还可以通过Windows控制面板中该工具的管理面板停用JRE更新,以避免由于IP关闭而无法访问的烦人更新消息
一、Java10中12项关键新特性
-局部变量的类型推断
Java开始引用像脚本语言JavaScript中的var类型(弱类型),允许你通过var定义任何类型的变量。
对于开发人员来说,这是唯一和你密切相关的特性。它可以帮助你极大的简化代码。
-应用类数据共享(CDS)
CDS 在 JDK5 时被引进以改善 JVM 启动的表现,同时减少当多个虚拟机在同一个物理或虚拟的机器上运行时的资源占用。
JDK10 将扩展 CDS 到允许内部系统的类加载器、内部平台的类加载器和自定义类加载器来加载获得的类。之前,CDS 的使用仅仅限制在了 bootstrap 的类加载器。
-额外的 Unicode 语言标签扩展
这将改善 java.util.Locale 类和相关的 API 以实现额外 BCP47 语言标签的 Unicode 扩展。尤其是,货币类型,一周的第一天,区域覆盖和时区等标签现在将被支持。
?基于时间的版本控制
我们的 JDK 版本字符串格式几乎与 JDK 版本一样多。幸运的是,这是最后需要使用到的,我们可以坚持用它。这种格式使用起来很像 JDK9 中介绍的提供一个更加语义的形式。有一件困扰我的事是包含了一个 INTERIM 元素,正如 JEP 提议中所说,“永远是0”。好吧,如果永远是0,那它有什么意义呢?他们说这是为未来使用做保留,但我仍不是很赞同。我认为,这有些冗余繁杂。
这也消除了在 JDK9 中有过的相当奇怪的情形。第一次更新是 JDK 9.0.1 , 非常符合逻辑。第二次更新是 JDK 9.0.4 ,不合逻辑。原因是,在 JDK9 的版本计数模式下,需要留下空白以便应急或不在预期安排的更新使用。但既然没有更新是必须的,为什么不简单称之为 JDK 9.0.2 呢?
-根证书
在 JDK 中将提供一套默认的 CA 根证书。关键的安全部件,如 TLS ,在 OpenJDK 构建中将默认有效。这是 Oracle 正在努力确保 OpenJDK 二进制和 Oracle JDK 二进制功能上一样的工作的一部分,是一项有用的补充内容。
-并行全垃圾回收器 G1
G1 是设计来作为一种低延时的垃圾回收器(但是如果它跟不上旧的堆碎片产生的提升速率的话,将仍然采用完整压缩集合)。在 JDK9 之前,默认的收集器是并行,吞吐,收集器。为了减少在使用默认的收集器的应用性能配置文件的差异,G1 现在有一个并行完整收集机制。
-移除 Native-Header 自动生成工具
Java9 开始了一些对 JDK 的家务管理,这项特性是对它的延续。当编译 JNI 代码时,已不再需要单独的工具来生成头文件,因为这可以通过 javac 完成。在未来的某一时刻,JNI 将会被 Panama 项目的结果取代,但是何时发生还不清楚。
-垃圾回收器接口
这不是让开发者用来控制垃圾回收的接口;而是一个在 JVM 源代码中的允许另外的垃圾回收器快速方便的集成的接口。
-线程-局部变量管控
这是在 JVM 内部相当低级别的更改,现在将允许在不运行全局虚拟机安全点的情况下实现线程回调。这将使得停止单个线程变得可能和便宜,而不是只能启用或停止所有线程。
-在备用存储装置上的堆分配
硬件技术在持续进化,现在可以使用与传统 DRAM 具有相同接口和类似性能特点的非易失性 RAM 。这项 JEP 将使得 JVM 能够使用适用于不同类型的存储机制的堆。
-试验性的基于 Java 的 JIT 编译器
最近宣布的 Metropolis 项目,提议用 Java 重写大部分 JVM 。乍一想,觉得很奇怪。如果 JVM 是用 Java 编写的,那么是否需要一个 JVM 来运行 JVM ? 相应的,这导致了一个很好的镜像类比。 现实情况是,使用 Java 编写 JVM 并不意味着必须将其编译为字节码,你可以使用 AOT 编译,然后在运行时编译代码以提高性能。
这项 JEP 将 Graal 编译器研究项目引入到 JDK 中。并给将 Metropolis 项目成为现实,使 JVM 性能与当前 C++ 所写版本匹敌(或有幸超越)提供基础。
-合并 JDK 多个代码仓库到一个单独的储存库中
在 JDK9 中,有 8 个仓库: root、corba、hotspot、jaxp、jaxws、jdk、langtools 和 nashorn 。在 JDK10 中这些将被合并为一个,使得跨相互依赖的变更集的存储库运行 atomic commit (原子提交)成为可能。
二、新增API或函数
有 73 项新增内容添加到了标准类库中。
-java.awt.Toolkit:
int getMenuShortcutKeyMaskEx(): 确定哪个扩展修饰符键是菜单快捷键的适当加速键。
-java.awt.geom.Path2D:
void trimToSize(): 将此 Path2D 实例的容量计算到它当前的大小。应用可使用此操作将路径的存储空间最小化。这个方法也被添加到 Path2D.Double 和 Path2D.Float 类。
-java.io.ByteArrayOutputStream:
String toString(Charset): 重载 toString(),通过使用指定的字符集解码字节,将缓冲区的内容转换为字符串。
-java.io.PrintStream:
lang.io.PrintWriter:
这两个类都有三个新的构造函数,它们需要额外的 Charset 参数。
-java.io.Reader:
long transferTo(Writer): 从这个 Reader 中读取所有字符,并按照所读的顺序将字符写入给定的 Writer 。
-java.lang.Runtime.Version:
有四种新方法返回新(JEP 322)版本字符串字段的整数值: feature()、interim()、patch()和 update()。
-java.lang.StackWalker.StackFrame:
String getDescriptor(): 按照 JVM 标准返回此堆栈帧所代表的方法的描述符。
String getMethodType(): 返回此堆栈帧所代表的方法类型,描述参数类型和返回值类型。
-java.lang.invoke.MethodType:
Class lastParameterType(): 返回这个方法类型的最后一个参数类型。如果这个方法类型没有参数,则返回空类型作为岗哨值(Sentinel Value)。
-java.lang.management.RuntimeMXBean:
long getPid(): 返回正在运行的 JVM 的进程 ID 。
-java.lang.management.ThreadMXBean:
ThreadInfo[] dumpAllThreads(boolean, boolean, int): 返回所有活动线程的线程信息,其中有指定的最大元素数量和同步信息的堆栈跟踪。
ThreadInfo[] getThreadInfo(long[], boolean, boolean, int): 返回每个线程的线程信息,这些线程的标识位于输入数组中,其中有指定的最大元素数量和同步信息的堆栈跟踪。
-java.lang.reflect.MalformedParameterizedTypeException:
添加了一个新的构造函数,它以字符串的形式作为参数来获取详细信息。
-java.net.URLDecoder:
java.net.URLEncoder:
这两个类都有新的重载的解码和编码方法,将 charset 作为附加参数。
-java.nio.channels.Channels:
两个新的静态重载方法,允许使用 Charset 的 newReader(ReadByteChannel,Charset)和newWriter(WriteByteChannel,Charset)。
-java.nio.file.FileStore:
long getBlockSize(): 在这个文件存储中返回每个块的字节数。
-java.time.chrono.HijrahEra:
java.time.chrono.MiinguoEra:
java.time.chrono.ThaiBuddhistEra:
String getDisplayName(TextStyle, Locale): 这将返回用于识别 era 的文本名称,适合于向用户展示。
-java.time.format.DateTimeFormatter:
localizedBy(Locale): 返回指定格式器的一个副本,其中包含地区、日历、区域、小数和/或时区的本地化值,这将取代该格式器中的值。
-java.util.DoubleSummaryStatistics:
java.util.IntSummaryStatistics:
java.util.LongSummaryStatistics:
这3个类增加了一个新的构造函数,它包含 4 个数值。它使用指定的计数、最小值、最大值和总和构造一个非空实例。
-java.util.List:
java.util.Map:
java.util.Set:
这3个接口都增加了一个新的静态方法,copyOf(Collection)。这些函数按照其迭代顺序返回一个不可修改的列表、映射或包含给定集合的元素的集合。
-java.util.Optional:
java.util.OptionalDouble:
java.util.OptionalInt:
java.util.OptionalLong: 这些类都增加了一个新的方法orElseThrow()。它本质上和 get()一样,也就是说,如果 Optional 有值则返回。否则,将抛出 NoSuchElementException 。
-java.util.Formatter:
java.util.Scanner:
这两个类都有三个新的构造函数,除了其他参数之外,它们都带有一个 charset 参数。
-java.util.Properties:
增加了一个新的构造函数,它接受一个 int 参数。这将创建一个没有默认值的空属性列表,并且指定初始大小以容纳指定的元素数量,而无需动态调整大小。还有一个新的重载的 replace 方法,接受三个 Object 参数并返回一个布尔值。只有在当前映射到指定值时,才会替换指定键的条目。
-java.SplittableRandom:
void nextBytes(byte[]): 用生成的伪随机字节填充一个用户提供的字节数组。
-java.util.concurrent.FutureTask:
添加了 toString()方法,该方法返回一个标识 FutureTask 的字符串,以及它的完成状态。在括号中,状态包含如下字符串中的一个,“Completed Normally” 、“Completed Exceptionally”、 “Cancelled” 或者 “Not completed”。
-java.util.concurrent.locks.StampedLock:
boolean isLockStamp(long): 返回一个标记戳表示是否持有一个锁。
boolean isOptimisticReadStamp(long): 返回一个标记戳代表是否成功的进行了乐观读(optimistic read)。
boolean isReadLockStamp(long): 返回一个标记戳表示是否持有一个非独占锁(即 read lock )。
boolean isWriteLockStamp(long): 返回一个标记戳表示是否持有一个独占锁(即 write lock )。
-java.jar.JarEntry:
String getRealName(): 返回这个 JarEntry 的真实名称。如果这个 JarEntry 是一个多版本 jar 文件的入口,它被配置为这样处理,这个方法返回的名字是 JarEntry 所代表的版本条目的入口,而不是 ZipEntry.getName()返回的基本条目的路径名。如果 JarEntry 不代表一个多版本 jar 文件的版本化条目或者 jar 文件没有被配置为作为一个多版本 jar 文件进行处理,这个方法将返回与 ZipEntry.getName()返回的相同名称。
-java.util.jar.JarFile:
Stream
-java.util.spi.LocaleNameProvider:
getDisplayUnicodeExtensionKey(String, Locale): 为给定的 Unicode 扩展键返回一个本地化名称。
getDisplayUnicodeExtensionType(String, String, Locale): 为给定的 Unicode 扩展键返回一个本地化名称。
-java.util.stream.Collectors:
toUnmodifiableList():
toUnmodifiableSet():
toUnmodifiableMap(Function, Function):
toUnmodifiableMap(Function, Function, BinaryOperator):
这四个新方法都返回 Collectors ,将输入元素聚集到适当的不可修改的集合中。
-java.lang.model.SourceVersion:
现在有了一个字段,它代表了 JDK 10 的版本。
-java.lang.model.util.TypeKindVisitor6:
javax.lang.model.util.TypeKindVisitor9:
R visitNoTypeAsModule(NoType, P): 访问一个 MODULE 的 pseudo-type 。不清楚为什么 Visitor7 和 Visitor8 没有这个方法。
-javax.remote.management.rmi.RMIConnectorServer:
这个类添加了两个字段: CREDENTIALS_FILTER_PATTERN 和 SERIAL_FILTER_PATTERN 。
-javax.ButtonModel:
ButtonGroup getGroup(): 返回按钮所属的组。通常用于单选按钮,它们在组中是互斥的。
-javax.plaf.basic.BasicMenuUI:
Dimension getMinimumSize(JComponent): 返回指定组件适合观感的最小大小。
三、其他
- 如果 Kerberos 的配置文件 krb5.conf 包含一个 INCLUDEDIR 选项,那么在 INCLUDEDIR 这个目录下所有以 .conf 结尾的文件都会被默认加载进来。
- 以前版本中已经过期的 Java 的启动选项 -d32 和 –d64 在当前版本已经被移除。如果你在新的版本里仍然使用了这两个选项,JVM 将无法正常启动。
- JDK10 支持 JDK9 中的新版本 Doclet,JDK6、JDK7、JDK8 中的 Doclet 版本都不再支持。
- JDK10 重新启用了在 JDK9 中被不当过时的 newFactory() 方法。
- JDK10 引入了一个新的 Javadoc 标签: {@summary…},解决了以前版本无法生成 API 摘要的问题。
- JDK10 去掉了 BiasedLockingStartupDelay 的 4 秒启动延时。
- 以下在 com.sun.security.auth 包中的过时的类在新版本中都已经被移除:
PolicyFile
SolarisNumericGroupPrincipal
SolarisNumericUserPrincipal
X500Principal
SolarisLoginModule
SolarisSystem
- 在 java.lang.SecurityManager 类中的以下属性和方法(从 JDK 1.2 就已经过时)终于被移除了:
inCheck (属性)
getInCheck
classDepth
classLoaderDepth
currentClassLoader
currentLoadedClass
inClass
inClassLoader
- 以下 java.lang.Runtime 类中已经被废弃的国际化方法在新版本被移除:
getLocalizedInputStream
getLocalizedOutputStream
- 以下废弃的 Hotspot –X 选项在新版本中被移除:-Xoss, -Xsqnopause, -Xoptimize, -Xboundthreads and –Xusealtsigs.
- policytool 在新版本中被移除。
- javadoc 工具在新版本中可以通过 –add-stylesheets 命令选项支持多个 stylesheets 。
- 新版本的 JVM 能够根据系统分配给当前 Docker 容器的 CPU 数和内存来配置线程池和 GC 机制,而不再是直接使用系统的 CPU 和内存。并且增加了三个更强大的命令选项:-XX:InitialRAMPercentage、-XX:MaxRAMPercentage 和 -XX:MinRAMPercentage 。
- 新版本增加了一个新的系统属性:jdk.disableLastUsageTracking。这个新增的属性就像它的名字一样,会禁用 JRE 的上一次使用跟踪。
查看全部