自2 月 7 日开始,Java/JDK 12 就进入了 RC 阶段。按照发布周期,美国当地时间 3 月 19 日,也就是昨日 Java 12 正式发布了!
紧接着便有不少程序员们大呼:
“跟不上。”
“学不动,学不动......”
“Java11还没学会! ”
“速度太快跟不上节奏! ”
JDK 12 GA 发布
本次的Java 12并不是一个小版本,它带来了以下八个重大新功能:
189 Shenandoah: A Low-Pause-Time Garbage Collector (Experimental) 低暂停时间的GC
230 Microbenchmark Suite 微基准测试套件
325 Switch Expressions (Preview) Switch表达式
334 JVM Constants API JVM常量API
340 One AArch64 Port, Not Two 只保留一个AArch64实现
341 Default CDS Archives 默认类数据共享归档文件
344 Abortable Mixed Collections for G1 可中止的G1 Mixed GC
346 Promptly Return Unused Committed Memory from G1 G1及时返回未使用的已分配内存
详细介绍:
Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
Shenandoah:低暂停时间的 GC(实验性功能)
新增了一个名为Shenandoah 的 GC 算法,通过与正在运行的 Java 线程同时进行 evacuation 工作来减少 GC 暂停时间。使用 Shenandoah 的暂停时间与堆大小无关,这意味着无论堆是 200 MB 还是 200 GB,都将具有相同的暂停时间。
Microbenchmark Suite
微基准测试套件
JDK 源码中新增了一套微基准测试套件,使开发人员可以轻松运行现有的微基准测试并创建新的基准测试。
Switch Expressions (Preview)
Switch 表达式(预览功能)
扩展了switch 语句,使其不仅可以作为语句(statement),还可以作为表达式(expression),并且两种写法都可以使用传统的 switch 语法,或者使用简化的“case L ->”模式匹配语法作用于不同范围并控制执行流。这些更改将简化日常编码工作,并为 switch 中的模式匹配(JEP 305)做好准备。
JVM Constants API
JVM 常量 API
引入API 对关键类文件和运行时工件建模,特别是可从常量池加载的常量。在新的 java.lang.invoke.constant 包中定义了一系列基于值的符号引用(JVMS 5.1)类型,它们能够描述每种可加载常量。符号引用以纯 nominal 形式描述可加载常量,与类加载或可访问性上下文区分开。有些类可以作为自己的符号引用(例如 String),而对于可链接常量,定义了一系列符号引用类型(ClassDesc、MethodTypeDesc、MethodHandleDesc 和 DynamicConstantDesc),它们包含描述这些常量的 nominal 信息。
One AArch64 Port, Not Two
只保留一个AArch64 实现
删除了与arm64 相关的所有源,同时保留 32 位 ARM 实现和 64 位 aarch64。
JDK 中存在两套 64 位 ARM 实现,主要存在于 src/hotspot/cpu/arm 和 open/src/hotspot/cpu/aarch64 目录。两者都实现了 aarch64,现在将只保留后者,删除由 Oracle 提供的 arm64。这将使贡献者将他们的精力集中在单个 64 位 ARM 实现上,并消除维护两套实现所需的重复工作。
Default CDS Archives
默认类数据共享归档文件
针对64 位平台,使用默认类列表增强 JDK 构建过程以生成类数据共享(class data-sharing,CDS)档。
Abortable Mixed Collections for G1
可中止的G1 Mixed GC
如果G1 Mixed GC 存在超出暂停目标的可能性,则使其可中止。
Promptly Return Unused Committed Memory from G1
G1 及时返回未使用的已分配内存
增强G1 GC,在空闲时自动将 Java 堆内存返回给操作系统。为了实现向操作系统返回最大内存量的目标,G1 将在应用程序不活动期间定期执行或触发并发周期以确定整体 Java 堆使用情况。这将导致它自动将 Java 堆的未使用部分返回给操作系统。而在用户控制下,可以可选地执行完整的 GC,以使返回的内存量最大化。
(以上内容摘自开源中国)
还要和大家说的是,根据JDK 13 的迭代计划,预计将于 2019 年 9 月发布 —— Java 现在采取“半年发布一次版本”的模式。不少程序员提出,以这种更新的速度,我怎样才能跟上节奏?也有部分程序员表示自己仍停留在Java 8。对于这种担心,愿码为大家推出了“全周期IT工程师线下加速”,可以在最短的时间、用最低的成本帮助程序员实现极速提升,快速转型。将已经开发的企业级项目教程化,场景化,并有专业的高级技术人员给予相应的指导监督。培养集产品创新思维、产品设计思维、产品架构设计、项目研发、项目测试、项目部署上线、操作、支持于一体的全周期工程师。
项目加速方向有
A 全周期UI设计师
B 全周期区块链工程师
C 全周期Java工程师
D 全周期前端工程师
E 全周期NODE.JS工程师
F 全周期物联网工程师
G 全周期大数据工程师
H 全周期人工智能工程师
I 全周期云计算工程师
本周六首期“全周期IT工程师线下加速”项目即将启动
首期项目:EOS DApp合约项目开发实战之DApp游戏
时间:2019.3.23(本周六)——早9:00
地点:北京昌平区泰华龙旗广场E座315
原价:3000元 首期特惠价:2000元
项目介绍
这是EOS DApp合约开发高级水平的项目,将会开发三个合约,分别为:myDice合约、Token合约、分红合约,它们之间会相互调用进行交互。另外还会有前端、后端,也会与合约相互交互。
合约由C++语言开发,围绕DApp游戏的实现,还会学习到Token合约实现质押、赎回、挖矿,还有游戏社区的Token通证经济模型模型设计。重点工作是合约开发、NodeJS后端开发,其次是React前端开发,然后是他们之间进行交互完成相关功能,最后部署到EOS主网和云服务器的过程。
项目收获
1. 使用C++开发EOS DApp合约整套流程,熟练掌握多索引表、inline action、defer action、eosio.code权限、合约部署、升级等
2. 保障合约安全,掌握最新攻击方式与防范,如:重放攻击、假EOS攻击、假转账通知、交易回滚攻击、内联反射攻击、同名混淆交易攻击、交易延迟攻击等
3. 熟练掌握NodeJS后端开发,使用Express框架,实现RESTful API、Socket.IO即时通讯
4. 掌握合约、后端、前端之间的交互,熟练Scatter API、EOSJS、RPC
5. 掌握相似DApp运行原理、盈利机制
6. 掌握在合约中设计Token通证经济模型构建自己的生态
7. 开发myDice合约、Token合约、分红合约全套流程
第二期项目预告:基于EOS/Node.js的项目DApp实战---去中心化交易所
时间:2019.3.30——早9:00
地点:北京昌平区泰华龙旗广场E座315
项目价格:3000元
项目介绍
以<
通过此项目,大家可以了解实际商业完整的开发流程体系, 掌握EOSDApp从工程结构、环境构建、合约整体设计思路、合约实现、合约安全、测试用例编写以及与Node.js接口交互等完整技术体系;除此之外, 还会指导大家进行正式/测试网合约发布、后端服务部署以及合约权限分离等。
总之,就是帮助大家构建属于自己DApp项目开发的完整知识体系。
本期孵化课程共分五个阶段, 需求分析、功能设计、功能编码、用例编写、接口对接、服务部署; 在此过程中, 我们将会全程跟踪大家的开发进度,针对大家的问题症结及时给予指点与帮助。
项目收获
1. 完整的知识体系
从开发思维、技术面、业务与技术冲突解决、性能调优等
2. 标准专业的开发流程与规范
需求分析、功能设计、领域建模、功能编码,单元测试、接口对接及正式部署等开发流程,除此之外,还有与团队的整体协作、敏捷开发等流程
3. 真实的企业项目需求
还原真实项目需求, 分析具体业务场景, 剖析技术难点,培养程序员的分析能力与权衡技术方案的思维能力