Java 优质开源机器学习项目
Deeplearning4j : Deeplearning4j 是第一个为 Java 和 Scala 编写的商业级,开源,分布式深度学习库。
Smile :基于 Java 和 Scala 的机器学习库。
相关阅读:Java 能用于机器学习和数据科学吗?-InfoQ
Java 优质开源大数据项目
Spark :Spark 是用于大规模数据处理的统一分析引擎。
Flink :Apache Flink 是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。Flink 能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。
**HBase**: HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用 HBase 技术可在廉价 PC Server 上搭建起大规模结构化存储集群。
Flume :Apache Flume 是一个分布式的、可靠的、可用的,从多种不同的源收集、聚集、移动大量日志数据到集中数据存储的系统。
Storm : 一个分布式,高容错的实时计算系统。
Java 9 新特性概览
Java 9 发布于 2017 年 9 月 21 日 。作为 Java 8 之后 3 年半才发布的新版本,Java 9 带来了很多重大的变化其中最重要的改动是 Java 平台模块系统的引入,其他还有诸如集合、Stream 流……。
你可以在 Archived OpenJDK General-Availability Releases 上下载自己需要的 JDK 版本!官方的新特性说明文档地址: https://openjdk.java.net/projects/jdk/ 。
概览(精选了一部分) :
JEP 222: Java 命令行工具
JEP 261: 模块化系统
JEP 248:G1 成为默认垃圾回收器
JEP 193: 变量句柄
JEP 254:字符串存储结构优化
JShellJShell 是 Java 9 新增的一个实用工具。为 Java 提供了类似于 Python 的实时命令行交互工具。
在 JShell 中可以直接输入表达式并查看其执行结果。
JShell 为我们带来了哪些好处呢?
降低了输出第一行 Java 版”Hello World!”的门槛,能够提高新手的学习 ...
无题
《Java8指南》中文翻译随着 Java 8 的普及度越来越高,很多人都提到面试中关于Java 8 也是非常常问的知识点。应各位要求和需要,我打算对这部分知识做一个总结。本来准备自己总结的,后面看到Github 上有一个相关的仓库,地址:https://github.com/winterbe/java8-tutorial。这个仓库是英文的,我对其进行了翻译并添加和修改了部分内容,下面是正文。
欢迎阅读我对Java 8的介绍。本教程将逐步指导您完成所有新语言功能。 在简短的代码示例的基础上,您将学习如何使用默认接口方法,lambda表达式,方法引用和可重复注释。 在本文的最后,您将熟悉最新的 API 更改,如流,函数式接口(Functional Interfaces),Map 类的扩展和新的 Date API。 没有大段枯燥的文字,只有一堆注释的代码片段。
接口的默认方法(Default Methods for Interfaces)Java 8使我们能够通过使用 default 关键字向接口添加非抽象方法实现。 此功能也称为虚拟扩展方法。
第一个例子:
interface Formu ...
无题
Java8 新特性实战
本文来自cowbi的投稿~
Oracle 于 2014 发布了 Java8(jdk1.8),诸多原因使它成为目前市场上使用最多的 jdk 版本。虽然发布距今已将近 7 年,但很多程序员对其新特性还是不够了解,尤其是用惯了 Java8 之前版本的老程序员,比如我。
为了不脱离队伍太远,还是有必要对这些新特性做一些总结梳理。它较 jdk.7 有很多变化或者说是优化,比如 interface 里可以有静态方法,并且可以有方法体,这一点就颠覆了之前的认知;java.util.HashMap 数据结构里增加了红黑树;还有众所周知的 Lambda 表达式等等。本文不能把所有的新特性都给大家一一分享,只列出比较常用的新特性给大家做详细讲解。更多相关内容请看官网关于 Java8 的新特性的介绍。
Interfaceinterface 的设计初衷是面向抽象,提高扩展性。这也留有一点遗憾,Interface 修改的时候,实现它的类也必须跟着改。
为了解决接口的修改与现有的实现不兼容的问题。新 interface 的方法可以用default 或 static修饰,这样就可以有方法体 ...
Java 19 新特性概览
JDK 19 定于 9 月 20 日正式发布以供生产使用,非长期支持版本。不过,JDK 19 中有一些比较重要的新特性值得关注。
JDK 19 只有 7 个新特性:
JEP 405: Record Patterns(记录模式)(预览)
JEP 422: Linux/RISC-V Port
JEP 424: Foreign Function & Memory API(外部函数和内存 API)(预览)
JEP 425: Virtual Threads(虚拟线程)(预览)
JEP 426: Vector(向量)API(第四次孵化)
JEP 427: Pattern Matching for switch(switch 模式匹配)
JEP 428: Structured Concurrency(结构化并发)(孵化)
这里只对 424、425、426、428 这 4 个我觉得比较重要的新特性进行详细介绍。
相关阅读:OpenJDK Java 19 文档
JEP 424: 外部函数和内存 API(预览)Java 程序可以通过该 API 与 Java 运行时之外的代码和数据进行 ...
Java 18 新特性概览
Java 18 在 2022 年 3 月 22 日正式发布,非长期支持版本。
Java 18 带来了 9 个新特性:
JEP 400:UTF-8 by Default(默认字符集为 UTF-8)
JEP 408:Simple Web Server(简易的 Web 服务器)
JEP 413:Code Snippets in Java API Documentation(Java API 文档中的代码片段)
JEP 416:Reimplement Core Reflection with Method Handles(使用方法句柄重新实现反射核心)
JEP 417:Vector(向量) API (第三次孵化)
JEP 418:Internet-Address Resolution(互联网地址解析)SPI
JEP 419:Foreign Function & Memory API(外部函数和内存 API)(第二次孵化)
JEP 420:Pattern Matching for switch(switch 模式匹配)(第二次预览)
JEP 421:Deprecate Finaliza ...
Java 17 新特性概览
Java 17 在 2021 年 9 月 14 日正式发布,是一个长期支持(LTS)版本。
下面这张图是 Oracle 官方给出的 Oracle JDK 支持的时间线。可以看得到,Java
17 最多可以支持到 2029 年 9 月份。
Java 17 将是继 Java 8 以来最重要的长期支持(LTS)版本,是 Java 社区八年努力的成果。Spring 6.x 和 Spring Boot 3.x 最低支持的就是 Java 17。
这次更新共带来 14 个新特性:
JEP 306:Restore Always-Strict Floating-Point Semantics(恢复始终严格的浮点语义)
JEP 356:Enhanced Pseudo-Random Number Generators(增强的伪随机数生成器)
JEP 382:New macOS Rendering Pipeline(新的 macOS 渲染管道)
JEP 391:macOS/AArch64 Port(支持 macOS AArch64)
JEP 398:Deprecate the Applet A ...
Java 16 新特性概览
Java 16 在 2021 年 3 月 16 日正式发布,非长期支持(LTS)版本。
相关阅读:OpenJDK Java 16 文档 。
JEP 338:向量 API(第二次孵化)向量(Vector) API 最初由 JEP 338 提出,并作为孵化 API集成到 Java 16 中。第二轮孵化由 JEP 414 提出并集成到 Java 17 中,第三轮孵化由 JEP 417 提出并集成到 Java 18 中,第四轮由 JEP 426 提出并集成到了 Java 19 中。
该孵化器 API 提供了一个 API 的初始迭代以表达一些向量计算,这些计算在运行时可靠地编译为支持的 CPU 架构上的最佳向量硬件指令,从而获得优于同等标量计算的性能,充分利用单指令多数据(SIMD)技术(大多数现代 CPU 上都可以使用的一种指令)。尽管 HotSpot 支持自动向量化,但是可转换的标量操作集有限且易受代码更改的影响。该 API 将使开发人员能够轻松地用 Java 编写可移植的高性能向量算法。
在 Java 18 新特性概览 中,我有详细介绍到向量 API,这里就不再做额外的介绍了。
JEP 3 ...
Java 15 新特性概览
CharSequenceCharSequence 接口添加了一个默认方法 isEmpty() 来判断字符序列为空,如果是则返回 true。
public interface CharSequence {
default boolean isEmpty() {
return this.length() == 0;
}
}
TreeMapTreeMap 新引入了下面这些方法:
putIfAbsent()
computeIfAbsent()
computeIfPresent()
compute()
merge()
ZGC(转正)Java11 的时候 ,ZGC 还在试验阶段。
当时,ZGC 的出现让众多 Java 开发者看到了垃圾回收器的另外一种可能,因此备受关注。
经过多个版本的迭代,不断的完善和修复问题,ZGC 在 Java 15 已经可以正式使用了!
不过,默认的垃圾回收器依然是 G1。你可以通过下面的参数启动 ZGC:
$ java -XX:+UseZGC className
EdDSA(数字签名算法)新加入了一个安全 ...