未发布 5个优秀编码挑战帮你训练大脑,你敢尝试吗? 每个人都知道编程正在成为几乎每个行业的重要组成部分,它对组织的帮助和对大型系统的维护是独一无二的,因此越来越多的人开始了他们的编程旅程。你可以从你觉得合适和方便的任何交互式平台和书籍中学习编程。但是这还不够,我们应该练习更多新的东西。
编码与你的创造力、创新能力密切相关。但很多时候,我们花费大量时间来处理常见问题而忘记了创造力。我不太确定这是否是编码挑战出现的原因,但它们肯定可以帮助你去思考。
我们可以说编程挑战是伟大的:
学习新的做事方式
练习一种新的编程语言
解决遇到的关键问题
保持我们的大脑活跃和集中力
以及玩得开心!
在寻找最好的编程挑战过程中筛选了五个非常好的资源。相信这对你的编程旅途有所帮助,并探索更大的计算机科学领域。
未发布 Red Carpet Subscriptions发布2017 v3,适用于Linux和macOS的新版本 Red Carpet Subscriptions贵宾订购版是综合通讯、安全和电子商务的组件包。贵宾订购版,在一个封包里给你任何东西:适用任何主流Internet协议的通讯组件、SSL 和 SSH 安全组件、S/MIME加密组件、数字证书(Digital Certificates)组件、信用卡交易处理(Credit Card Processing)组件、ZIP压缩组件、即时消息(Instant Messaging)组件、甚至电子商务(EDI)交易组件。
Red Carpet Subscription 2017 v3此次更新支持.NET Standard/ .NET Core,TLS 1.3,与OneDrive for Business和Wasabi云存储的集成,JSON安全性,并适用于Linux和macOS的新版本等。
重点
升级开发平台
在任何支持.NET Standard和.NET Core的平台上使用.NET Editions
使用PHP 7改进你的PHP应用程序。
使用Node.js 8.3.0和OpenSSL 1.1.0升级Node.js应用程序。
在Linux和macOS上使用IP*Works!IPC。
升级安全选项
升级云存储集成
升级企业适配器
使用WebDAV与BizTalk。
使用BlueSnap支付网关与电子支付积分器。
细节
支持.NET Standard
所有.NET版本现在包括.NET Standard 1.4、1.6和2.0库。这意味着你可以在任何支持.NET Standard,包括.NET Core、UWP、Mono、Xamarin(Android和iOS)的平台中使用/n software组件。所有.NET版本都包含在内,也是NuGet软件包的一部分。
支持TLS 1.3
.NET和Java Edition现在支持客户端和服务器组件中的TLS 1.3。该版本支持SHA-256、SHA-384和SHA-512签名算法以及DHE 2048、3072、4096、6144和8192组。更多的算法、功能和平台将在下一个版本中推出。
支持Wasabi云服务
这个新组件将一个接口嵌入到Wasabi服务中,为云存储集成商提供了另一个云存储选项。
JSON(JWS / JWE / JWT)安全性
支持PHP 7和7.1
充分利用最新版本的性能和代码升级。所有PHP版本现在支持PHP 7和7.1。
PowerShell服务器支持SSL Tunnels到SSL主机
新功能允许你保护旧版应用程序,支持以前的SSL版本,并具有新的TLS 1.2安全性。
未发布 【示例教程】如何使用LEADTOOLS 的JAVA接口从护照中识别和提取数据 LEADTOOLS可帮您开发出功能强大的文档图像应用程序。其主要功能包括综合图像注释,专业的黑白图像显示(例如灰度级和偏黑),以及专业的黑白图像处理。其它功能包括对黑白图像的性能和内存进行优化,文档图像清理(包括倒置文本,去边界,去打孔机和去线)以及使用LEADTOOLS Fast TWAIN和WIA进行扫描。
本教程会发布一个java代码片段,你可以用它读一本护照提取其中的数据。记住,为了获得最精确的结果,你需要有一个清晰的图像,这样引擎在这个过程中才能获得精确的结果。
// Set your license
RasterSupport.setLicense(licenseFile, developerKey);
try{
if(RasterSupport.getKernelExpired()) {
System.out.println("License NOT Set Successfully");
}
else {
System.out.println("License Set Successfully");
}
RasterCodecs rasterCodecs = new RasterCodecs();
MRTDReader mrtdReader = new MRTDReader();
String stream = "PASSPORT_IMAGE.jpg";
RasterImage rasterImage = rasterCodecs.load(stream);
OcrEngine ocrEngine = OcrEngineManager.createEngine(OcrEngineType.ADVANTAGE);
ocrEngine.startup(rasterCodecs, null, null, null);
mrtdReader.setOcrEngine(ocrEngine);
mrtdReader.processImage(rasterImage);
mrtdReader.setImproveResults(true);
HashMap ar = new HashMap<>();
ar = mrtdReader.getResults();
String[] string = mrtdReader.getLines();
for (String string2 : string) {
System.out.println(string2);
}
for (Map.Entry map : ar.entrySet()) {
MRTDField key = map.getKey();
System.out.println(key);
MRTDDataElement value = map.getValue();
System.out.println(value.getReadableValue());
}
ocrEngine.shutdown();
}
catch(Exception e)
{
e.printStackTrace();
throw new Exception(e);
}
被识别的护照如下:
最终输出的结果如下:
2017慧都十四周年狂欢搞事情!砸金蛋100%抽现金红包、满额豪送iPhone X、iPhone 8、DevExpress汉化免费送、团队升级培训套包劲省10万元......更多惊喜等您来探索!

未发布 Android Oreo 8.1终于发布正式版 在推出开发者预览版一个月后,Android Oreo 8.1终于发布了正式版。除了之前InfoQ已经报道过的内容,Oreo 8.1还推出了Gero Go版,可运行在低内存配置的设备上。
在谷歌I/O 2017大会上发布的Android Go定位入门级机型,这些入门级设备的内存一般不会超过1GB。谷歌通过多种手段来达到该目的:
- 全平台内存优化。
- 优化谷歌官方应用,使用更少的内存、存储空间和网络带宽。
- 推出新的Google Play特性,如FEATURE_RAM_LOW,以便更好地在入门级设备上运行。另外,Google Play为入门级设备推出了Go版本的应用,当然也可以安装其他任意一种应用。
Android Oreo 8.1最重要的一个特性是神经网络API(NNAPI),支持硬件加速,以便更好地执行机器学习任务,如创建、编译和执行模型。机器学习框架(如TensorFlow Lite等)可以使用NNAPI。
Android Oreo 8.1在下周就可以支持Pixel和Nexus,其他设备厂商则要等到下个月。Android 8.1的源代码已经发布出来了。
未发布 【收藏】Edraw Max(亿图图示)软件快捷键大全 Edraw Max(亿图图示)作为一款全类型的图形图表设计软件,深受广大用户的欢迎。目前,Edraw Max(亿图图示)里拥有20000多个符号,有效地满足使用者的需求;另外,简单的拖拽式操作,帮助大多数人在零基础的条件下也能学会使用。其实,Edraw Max(亿图图示)里还有一套齐全的快捷键按钮,使用者甚至可以脱离鼠标,进行高效绘图。目前Edraw Max(亿图图示)在线订购享75折优惠活动正在进行中,欢迎您下载、购买进行运用!
Edraw Max(亿图图示)v8.7最新版下载地址>>>
Edraw Max(亿图图示)最齐全的绘图组合快捷键
基本工具
Ctrl+1 选择
Ctrl+Shift+1 索套选择
Ctrl+2 文本
Ctrl+Shift+2 文本调整工具
Ctrl+3 直角连接线
Ctrl+Shift+3 曲线连接线
Ctrl+Shift+4 直线连接线
Ctrl+Shift+5自由曲线连接线
Ctrl+4线条工具
Ctrl+5 矩形工具
Ctrl+6 椭圆工具
Ctrl+7 贝塞尔曲线工具
Ctrl+8 连接点工具
Ctrl+9 裁剪工具
排列组合
Ctrl+A 全选
Ctrl+Shift+A 相同角度
Ctrl+Shift+F 置顶
Ctrl+Alt+F 上移一层
Ctrl+Shift+B 置底
Ctrl+Alt+B 下移一层
Ctrl+Shift+G 组合
Ctrl+Shift+U 取消组合
大小
Ctrl+Shift+W 等高
Ctrl+Shift+H 等宽
Ctrl+Shift+A 相同角度
Ctrl+Shift+Z 相同大小
插入图片
Alt+Shift+N 空白页
Ctrl+Shift+I 插入图片
Ctrl+Shift+V 插入矢量文本
Ctrl+K 插入超链接
符号
Ctrl+E 钢笔工具
Ctrl+Shift+E 铅笔工具
Ctrl+M 移动锚点
Ctrl+Shift+M 转换锚点类型
Ctrl+F9 符号数据
Ctrl+F11 保存符号
顶部菜单
Ctrl+N 新建
Ctrl+O 打开
Ctrl+Z 撤销
Ctrl+Y,Ctrl+Sift+Z 重做
Ctrl+P 打印
Ctrl+S 保存
Ctrl+W 关闭
Ctrl+Alt+O 常规设置
文字编辑
Ctrl+A 全选
Ctrl+B 加粗
Ctrl+I 斜体
Ctrl+U 下划线
Ctrl+C 复制
Ctrl+X 剪贴
Ctrl+Y 重做
Ctrl+Z 撤销
Ctrl+V 粘贴
Ctrl+Alt+V 选择性粘贴
Ctrl+Shift+V 插入矢量文本
Backspace,Del 删除
Enter 换行
Esc 完成
思维导图编辑
Enter 添加同级
Ctrl+Enter 添加下一级
Tab 切换选择
Del 删除
其他快捷键
F1 使用说明
F2 文本工具
F3 设置形状格式
F4 数据形状
F5 从首页播放幻灯片
Shift+F5 从当前页播放幻灯片
F6 页面设置
F7 拼写检查
F9 形状数据
F11 页面预览
Ctrl– 缩小视图
Ctrl+F1 显示/隐藏菜单条
Crtl+Alt+G 网格
未发布 矢量图形引擎库VectorDraw Developer Framework v7.7012.0.2发布丨附下载
VectorDraw Developer Framework(VDF)v7.7012.0.2更新内容:
WebJS
新增需求(7.7012.0.1)
漏洞(7.7012.0.1)
Engine
新增需求(7.7012.0.1)
漏洞(7.7012.0.1)
试用、下载、了解更多产品信息请点击"咨询在线客服"

未发布 开源的跨平台移动开发利器Xamarin Studio v6.3发布丨附下载 Xamarin Studio是跨平台移动开发(IDE)利器。Xamarin Studio是一个开发效率很高的移动开发工具,开发者可以轻松查看iOS、Android和OS X APIs,快速查询类型、方法和API功能,而且不会打乱你的思路。
【最新版Xamarin Studio点击下载>>>】
Xamarin Studio v6.3更新内容
苹果开发者帐户管理
此版本介绍了使用Xamarin Studio来管理Apple开发人员帐户和iOS / macOS代码签名权限的功能。新界面提供了查看与Apple ID相关联的所有开发团队的方法,并显示每个团队的签名身份和配置文件列表。
选择首选项>发布> Apple开发者帐户来添加一个Apple ID。 Apple ID验证需要在fastlane的命令行上执行。必须安装fastlane才能认证成功。有关fastlane以及安装方法的更多信息参见fastlane文档。 已知的问题
登录过程不支持打开两步身份验证的帐户。
[Bug#53906]团队详细信息对话框为空。在某些情况下,即使在用户计算机上安装并且有效也不会显示签名身份和配置文件。我们会尽快发布一个解决方案。
iOS
在设备上调试App Extensions
新版本的Xamarin Studio可以在设备上调试iOS App Extensions。为了实现这一点,首先你需要编辑你现有App Extension项目的项目选项,然后更改位于iOS调试器设置页面中的调试器端口设置。建议将端口更改为10000以上的值。
新的App Extension项目将自动被分配一个随机的调试器端口,以避免将来出现这个问题。
改进执行目标
iOS加载项正在使用Xamarin Studio 6.3中引入的主工具栏的新功能来改善用户体验,例如自定义图标、工具提示和执行目标标灰的功能。
我们还改进了我们的逻辑,可以为你显示连接到Mac的设备,并告诉你为什么它们不可用于部署。
这是非常好的,因为很多类型的设备不可用:错误的设备系列,错误的功能或不符合部署目标的操作系统版本。
现在,你的设备将显示在“不可用设备”中,并在名称旁边有简要说明。如果你将鼠标放在设备名称上,则会提示更多详细信息。
以下是所有更改的列表:
iOS、watchOS、tvOS和macOS的主要工具栏中的新设备图标。
当无法显示模拟器或设备时,在“Build Only”菜单分隔符下有Generic Simulator / Device。
总是在工具栏中显示“设备”菜单分隔符,就像对模拟器一样。
Mac项目现在使用iMac图标显示名为“MyMac”的实际执行目标,而不是使用iPhone图标显示“Default”。
音频单元向导
新的音频单元扩展向导添加了3个选项来自定义音频单元项目模板的plist。
音频单元类型
• 仪器
• 发生器
• 效果
• 音乐效果
子类型代码:必须是4个字符
制造商代码:必须是4个字符

删除TLS Provider选项
iOS构建选项中不需要TLS Provider,因为:
AppleTLS是自C7以来的默认值,支持TLS 1.2。
MonoTLS仅限于SSLv3和TLSv1:两者都已被弃用。
注意:Xamarin.iOS 10.4发行说明已经提到MonoTLS已被弃用,将来会被删除。
其他改进和bug修复
现在部署到设备时会显示一个进度条。这对于watchOS来说尤其有用(需要Xamarin.iOS 10.5.0.323+)。
现在使用Xamarin.iOS的已知操作系统版本来填充部署目标下拉列表。这两个优点是可以为每个App Extensions类型提供精确的最低版本,并避免显示基于Xcode的Xamarin.iOS尚不支持的操作系统版本。
存在于Images.xcassets(或Assets.xcassets)目录中的* .csproj文件未导入的任何图像资源都将被忽略。
调试器

微软身份
一般

未发布 Java新版本的开发已正式进入轨道,版本号18.3 Java 9在9月21日正式发布,同时Oracle宣布将Java新版本的发布周期调整为每半年一次。目前,Java新版本的开发也已正式进入轨道。就已公开的消息来看,下一个版本的Java预计会在2018年3月发布,版本号将会是18.3,已经规划加入的特性包括JEP 286和296。
根据reddit站点上的讨论,首先更新的是JEP 296,Valhalla预计很快也会加入进来。OpenJDK的主页面则显示,已确定要在18.3版本实现的是JEP 286和296。
JEP 296主要是将JDK仓库群(JDK Repository Forest)合并为一个仓库,旨在降低管理大量仓库群的成本。根据InfoQ之前的报道,该仓库群的合并已经完成。这些软件仓库是在OpenJDK发展史上历次分裂生成的,在OpenJDK 9及以前的版本中将会继续存在。在这次合并操作之前,OpenJDK曾分裂为多个不同的Mercurial软件仓库群,这导致了许多问题,例如不能以原子方式对多个软件仓库应用漏洞修复(Bug Fixes)。在OpenJDK合并完成后,只会有一个软件仓库,并复制在三个开发线上。为了简化仓库的管理,JDK中还创建了用于在合并和未合并版本间移动更改的工具。
JEP 286提议在Java中引入局部变量的类型推断,该JEP在2016年提出,InfoQ曾经报道过该JEP的概况和相关的开发者调查结果。该JEP旨在减少编写Java代码相关的仪式性的内容,提升开发人员的体验,同时还要保证Java语言的静态性。它会减少开发人员在声明局部变量时,没有必要的变量类型声明。如果该JEP实现的话,在声明局部变量的时候,就可以采用类似如下的方式:
var list = new ArrayList(); // infers ArrayList
var stream = list.stream(); // infers Stream
这种语句只能用于带有初始化器(initializer)的局部变量、增强的for-loop中的索引以及传统for-loop中声明的局部变量。它不能用于方法声明、构造函数声明、方法返回值、字段、catch语句以及其他类型的变量声明中。
关于局部变量的类型推断,不管是JVM体系中的语言还是其他语言都提供了一定形式的支持,比如C++(auto)、C#(var)、Scala(var/val)以及Go(通过:=进行声明)。至于该使用var作为关键字,还是使用let或类似于C/C++中的auto作为关键字,之前曾经有过一个面向开发者的调查。大约84%的回答表明定义可变内容的变量用关键字var是恰当的,只有百分之几的回答者建议使用auto更合适。根据Java语言架构师Brian Goetz介绍,该功能应该使用关键词var。
关于该特性的用法,在reddit上有一些讨论。有人表示,即便在支持“auto”语法的语言中,该特性使用的也比较少,因为有些人希望一眼就能看出变量的类型是什么。也有人认为,var有它的适用空间,在小的代码块中,直接用它实例化对象是可以的。如果是作为方法返回值的话,还是希望明确声明类型,Java的类型推断并不支持方法返回值,这一点倒不必担心。如果函数或代码块比较长的话,就不建议使用var了并要考虑适时进行代码的重写。时间和经验将会让我们更加明确应该在何时使用新功能,就像Optional刚出现时,也是耗费了一些时间才明确其推荐适用场景。
Valhalla项目中包含了一些有趣的JEP,包括值类型(Value Type)、针对原始类型实现泛型功能、增强的volatile等,外界很期待这些内容最终也能添加到新版本中。
2017慧都十四周年狂欢搞事情!砸金蛋100%抽现金红包、满额豪送iPhone X、iPhone 8、DevExpress汉化免费送、团队升级培训套包劲省10万元......更多惊喜等您来探索!

未发布 Oracle MySQL 5.5和5.6正受到Riddle漏洞影响,请立即更新到5.7!丨附下载 流行的数据库管理系统(DBMS)Oracle MySQL 中发现了被称为“The Riddle”的编码漏洞,该漏洞允许攻击者利用MiTM(man-in-the-middle,中间人)来窃取用户的用户名和密码等登录凭证。用户请立即更新到5.7版本。
中间人攻击(MiTM)
MiTM 攻击(Man-in-the-MiddleAttack)是一种“间接”的入侵攻击,这种攻击模式是通过各种技术手段将受入侵者控制的一台计算机虚拟放置在网络连接中的两台通信计算机之间,这台计算机就称为“中间人”。例如SMB会话劫持、DNS欺骗等攻击都是典型的MITM攻击。
Riddle漏洞
Riddle漏洞是Oracle MySQL 5.5和5.6客户端数据库中发现的关键安全漏洞。该漏洞允许攻击者使用‘中间人攻击’来破坏MySQL客户端和服务器之间的SSL配置连接。这个漏洞是一个非常关键的安全漏洞,因为它影响到MySQL(一个非常流行的SQL数据库,SSL连接由其定义安全。)
该漏洞编号为“CVE-2017-3305”,可以潜在地将用户登录凭证暴露给攻击者,当MySQL客户端5.5和5.6将这些用户凭证信息发送到服务器时,攻击者就能够顺利捕获它们。
针对5.5.49和5.6.30版本发布的安全更新无法完全解决这一安全漏洞。5.7及更高版本以及MariaDB系统不受该安全问题的影响。

根据安全研究人员 Pali Rohár 所言,他们曾经尝试利用影响MySQL数据库的BACKRONYM漏洞的修补方式来修复Riddle漏洞,但是结果失败了。Backronym漏洞也同Riddle漏洞一样,允许攻击者运行中间人攻击来窃取用户登录凭证,即使流量已经被加密也无法阻止。
MySQL 5.5.49以及5.6.30 稳定版的安全更新包括在验证过程完成后添加安全参数的验证。因为验证完成后,攻击者可以使用中间人攻击与 SSL 降级攻击来窃取用户的登录数据,以便立即进行身份验证并登录 MySQL 服务器,可笑的部分是,MySQL 客户端不会在MySQL服务器拒绝验证用户时报告任何与 SSL 问题相关的错误,而是报告服务器发送的未加密的错误信息。此外,当中间人攻击处于活跃状态时,错误信息可以由攻击者控制。
更新建议
安全专家建议用户尽快将客户端软件更新到MySQL 5.7 或 MariaDB,因为这些应用程序的安全更新正在正常运行,未受该安全漏洞影响。需要注意的是,这个漏洞虽然早在今年2月份就已经发现了,但是目前仍然在影响Oracle MySql软件。
如果你不是Oracle 用户,那么你对他们报告安全漏洞是无用的(即使确实是与安全相关的漏洞)。他们可以完全无视这些安全报告,甚至希望任何人都不要知道这些报告和漏洞的存在,所以至此他们都没有对漏洞进行修复。所以,立即向用户公开披露这些安全漏洞看来是最有效的解决方案,因为这样可以让用户知道一旦受影响应该做什么,有效的保护用户数据安全。
试用、下载、了解更多产品信息请点击"咨询在线客服"
未发布 Oracle正式发布Java 9,引入新的Java编程组件 Java SE 9.0于2017年9月21日发布。
JDK 9的核心变化就是引入了一种新的Java编程组件,也就是模块,按照Oracle的说法,它是一个可命名的、自描述的代码和数据集合。模块技术的核心目标是减少Java应用和Java核心运行时环境的大小与复杂性。为此,JDK本身进行了模块化,Oracle希望通过这种方式提升性能、安全性和可维护性。为了支持Java 9的模块,引入一种新的模块化JAR文件形式,按照这种形式会在其根目录中包含一个module-info.class文件。Oracle同时提供了工具,允许我们组合和优化一组模块,形成自定义的运行时镜像(image),这样的镜像不必将整个Java运行时包含进来。模块化所带来的其他变化包括从Java运行时镜像中移除了rt.jar和tools.jar。 Java社区进程(JCP)执行委员会的成员Ben Evans认为最急需重构的应用恰好就是最适合进行模块化的应用。如果你已经备受Lava Flow/God Class/Stovepipe System地狱的折磨,而且你的利益相关方明确知道这一点,那么你可能更容易说服他们进行一次完整的底层重构,通过渐进式的努力形成一个完成的模块解决方案(而不是简单重构并迁移至Java 8)是值得去做的。
Oracle宣布Java 8会是一个长期支持的发布版本,会一直支持到2022年,因此Evans认为很多的应用将会停留在Java 8上,根本不会升级到Java 9。Evans补充说,有些应用可能会让开发和构建工具链使用Java 8版本,而在生产环境使用Java 9的运行时。
对特定类型的应用来说,这是很有帮助的。例如,我曾经见到有的电子商务网站具有非常大的堆空间,其中包含了大约40G的字符串数据。Java 9的ompact Strings技术能够将这种类型的内存使用减半。这反过来又会对GC的性能带来积极的影响。对于有些应用来说(这可能就包括大型的Solr安装环境及类似场景),单单这一项收益就值得将运行时升级到Java 9。
Java 9使用G1作为默认的垃圾收集器,替代了之前默认使用的Parallel GC。Evans对这项变化的评论:
这项变更是很重要的,因为相对于Parallel来说,G1会在应用线程上做更多的事情,而Parallel几乎没有在应用线程上做任何事情,它基本上完全依赖GC线程完成所有的内存管理。这意味着切换到G1将会为应用线程带来额外的工作,从而直接影响到应用的性能。
在很多(甚至可以说大多数)场景中,这种额外的性能损耗都不是什么问题。但是,在这方面,我确实也曾经见过从Parallel切换到G1时,有一定比例的工作负载会引起性能的下降。对于这些应用来说,这种性能下降是无法接受的,所以他们无法切换至G1收集器。随着G1成为默认的收集器,这将会影响到升级至Java 9的每个应用。
JClarity的CEO Martijn Verburg认为大型的代码库需要重构为模块的形式。Verburg给出了一些通用的模块化建议,并且指出了开发人员在采用Java 9模块系统时,需要注意的一些事情:
- 阅读Paul和Sander的图书“Java 9 modularity”:它是本权威指南,提到了所有需要注意的地方,阐述了模块、包以及JAR之间如何运行的关联关系;
- 在模块边界的地方,使用定义良好的接口并且针对这些接口编程;
- 不要拆分包(split package),也就是说一个包不要分散到两个模块中。Adopt OpenJDK有个探测工具,我们可以用它来探测已有的代码;
- 确保不要存在循环依赖(Jigsaw不允许这样);
- 模块在源码的布局上与我们已习惯的方式有所不同,需要确保构建工具能够进行对应的处理;
- Jigsaw不支持多版本。
按照Verburg的说法,核心要点在于处理循环依赖、拆分包的问题,并确保针对接口进行编码。在尝试使用Jigsaw模块化重构之前,针对已有的代码库,这些工作需要预先完成。他还澄清了一个误解,那就是只有模块化的应用才能在Java 9上运行。
由于误解,在这方面有一种FUD(恐惧、不确定和怀疑)情绪,有人误认为在Java 9上运行的必须是模块化的应用。事实并非如此,我们可以将已有的基于类路径的应用直接在Java 9上运行。这里会有一些新的安全限制,因此我们需要设置一些特定的运行时标记(除非你重构代码,使用更安全的方式来访问Java的内部资源),即便如此,默认的行为也只是警告,而不是完全阻止我们(Java 10的限制会更严格)。
Verburg认为Jigsaw会是一个基石,会让Java的演进更快,这要归功于Mark Reinhold、Alan Bateman、Mandy Chung以及Jigsaw团队的其他成员多年来不知疲倦的工作,正是他们的努力使这一切得以实现。
Java 9还引入了jshell工具。这个命令行环境为Java平台带来了读入-求值-打印-循环(Read-Eval-Print-Loop,REPL)功能。它的目的在于以即时结果和反馈的形式,简化原型的实现并帮助我们探索语言在编码时的可选项。
Verburg和Evans看到Java 9中包含了jShell都非常兴奋,但令他们失望的是,HTTP/2只是作为Java 9的一个孵化模块(incubator module)提供的。鉴于社区对这项特性的兴趣和提供的帮助,Evans认为Oracle应该投入足够的工程资源,将HTTP/2交付为GA版本。
JDK 9完整的变更列表可以在Oracle的站点上查阅。Oracle宣布会按照每六个月一次的节奏进行发布,意味着Java 9是最后一次“keystone”特性驱动的版本发布,这反映出了Oracle目前管理Java的特点。Java下一阶段的演化将会按照更短的发布周期并且会按照更加面向特性的方式来发布。Java是否依然能够在服务端技术中占据领导者地位尚有待观察。
更多资讯点击查看>>>