未发布 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是否依然能够在服务端技术中占据领导者地位尚有待观察。
更多资讯点击查看>>>
未发布 Google开源了Abseil,为C++和Python开发提供支持 Google公开了其项目内部使用的一系列C++库,随后还会公开其Python库。
Abseil已在Google历经十多年的开发,它的目的是为Google编程人员在各种项目上的工作需求提供支持,这些项目包括Protocol Buffers、gRPC和TensorFlow等。Google评价Abseil为:
- 它是从Google内部代码块中抽取出来的一系列最基础的软件库。作为基本的组成部分,这些软件库支撑了几乎全部Google在运行的项目。以前这些API是零零散散地嵌入在Google的大部分开源项目中,现在我们将它们规整在一起,形成这样一个全面的项目。
- Abseil是Google代码库的最基本构建模块,其代码经过了生产环节测试,此后还会继续得到完全的维护。
最初,Abseil提供的抽象并非C++ 14或C++ 17的组成部分,但最终它们已被添加到C++标准中。例如,Google提供一个称为StringPiece的类型,随后C++ 17也添加了一个称为std::string_view的相近类型。为了与新的C++ 17类型具有一致的API,Google将StringPiece重构为absl::string_view。从底层机制上看,如果开发人员正在使用的是C++ 17,那么Abseil的string_view默认为标准实现;如果开发人员正在使用的是C++ 17以前的版本,那么string_view默认为Google的实现。
使用Abseil的优点在于可以访问一些目前依然尚未添加到标准中的C++特性,并且一旦这些特性被添加到C++标准中,Google保证会重构这些特性为默认使用标准实现。Google鼓励开发人员使用Abseil,并提及已有超过两亿五千万行的C++代码使用它,并且几乎所有从头开始构建的项目都使用了它。这意味着,Abseil已被Google广为使用,并出于与项目需求同步的考虑而得以频繁维护。
Abseil中包括如下的库:
- base:初始化,以及其它的基础代码。
- algorithm:对C++的库的补充,并为原算法提供了基于容器的版本。
- container:提供了更多的STL类型容器。
- debugging:用于检查泄漏的调试库。
- memory:包括兼容C++ 11版本的std::make_unique()和内存管理。
- meta:包括兼容C++ 11版本的类型检查,在C++ 14和C++ 17版本的C++ 库中可用。
- numeric:兼容C++ 11的128位整数。
- strings:各种字符串工具。
- synchronization:并发原语和同步抽象。
- time:抽象了绝对时间点操作和时区操作。
- types:非容器工具的类型。
未发布 集成的HTTP嗅探器HttpWatch v11发布,支持Google Chrome丨附下载 HttpWatch v11新功能
HttpWatch支持Google Chrome
现在可以在Chrome中打开一个HttpWatch窗口,通过点击HttpWatch图标来记录网络流量:
或使用任何网页中的上下文菜单:
HAR文件现在包含(缓存)和错误
HAR文件规格不允许记录缓存或失败的请求。HttpWatch现在使用与其他工具相同的扩展属性来规避此限制:

未发布 VMProtect用户手册:专用术语 VMProtect是一款虚拟机保护软件,是目前最为流行的保护壳之一。VMProtect将保护后的代码放到虚拟机中运行,这将使分析反编译后的代码和破解变得极为困难。除了代码保护,VMProtect还可以生成和验证序列号,设置过期时间,限制免费更新等等。
如果您不知道相应主题的专用术语,则无法有效使用该工具。本篇教程解释了VMProtect中使用的术语。一些术语可能会提供与传统术语不同的含义。
字节码 - 将实际处理器的命令转码为虚拟机命令后收到的代码。
虚拟化 - 一种将应用程序的部分可执行代码转换为具有命令系统,体系结构和操作逻辑的虚拟机命令的过程,这些命令对潜在的黑客来说是未知的。代码的虚拟化片段由虚拟机的解释器执行,而不将其转换为物理处理器的机器语言代码。通常,虚拟化片段的反向工程归结为建立一个具有与虚拟机模拟的处理器相同架构的反汇编程序,并分析由此产生的反汇编代码。
虚拟机 - 在受保护的应用程序中直接执行字节码的程序代码。
水印 - 每个字节的用户数组都有一个唯一的标识,可以明确标识该程序被黑客复制的合法所有者。
突变 - 用一个模拟或一组命令代替一个原始命令产生相同的结果。
混淆技术 - 一组旨在使程序代码分析复杂化的方法和技术。根据编程语言写入受保护程序,使用不同的混淆类型。写在解释语言(的Perl,PHP等)的应用程序混淆通过修改源代码所做的:评论被删除,变量给出了毫无意义的名称,字符串常量被加密等等。通过转换由虚拟机处理的字节码来执行Java / .NET应用程序的混淆。编译程序的混淆依赖于修改机器语言代码:混淆器添加各种“垃圾”命令,“死代码”,随机跳转。另外,原始命令会发生变化,部分操作会移至堆栈,并进行了一些结构(或不太常数学的)转换。对混淆的代码片段进行反向工程会尝试将片段恢复到其原始状态,只要正确完成混淆处理,这是一项耗时的任务。
保护器 - 旨在保护其他程序免遭黑客攻击的软件。现在的大多数保护器都不会修改应用程序的源代码,而是打包或加密应用程序。主要重点放在保护解包/解密程序或程序上。
入口点 - 加载到内存中的应用程序的初始地址执行从开始。
压缩 - 通过使用非典型算法压缩程序和/或库的可执行文件来保护程序代码的一种方法。受保护的代码片段由封装器压缩,并在应用程序执行时在用户端完全或部分解压缩。
加密 - 通过强大的加密算法来保护应用程序代码的一部分。受加密保护的软件要求最终用户输入激活码,以消除开发者为未注册版本的程序设置的限制。
试用、下载、了解更多产品信息请点击"咨询在线客服"

未发布 备战2018!全球百家优质软件、控件厂商共创“折扣奇迹” 慧都辞旧迎新,备战2018!现慧都科技联合全球百家优质软件、控件厂商共创“折扣奇迹”!界面控件DevExpress、文档工具Aspose、图表报表工具FastReport等优质厂商最低6折起!更多优惠等您来发现!
【活动时间】2017.12.5-2017.12.30
郑重承诺:慧都所售产品均为厂商授权的正版产品,请完全放心!
*想要了解更多优惠信息?请咨询慧都客服>>>
*本活动最终解释权归慧都科技所有
咨询热线: 400-700-1020(免费) 023-66090381
未发布 视频处理软件BB FlashBack v5.25.0发布丨附下载 BB FlashBack是一种屏幕记录器,能快速容易地创建视频。有详尽的软件阐述、屏幕演示、介绍、指南以及练习。目前BB FlashBack在线订购享75折优惠活动正在进行中,欢迎您下载、购买进行运用!
v5.25.0更新内容:
改进网络摄像头捕获代码(现在使用MSMF)
许可证现在只有在FlashBack的多个实例运行时才下载一次
播放器仅适用于具有8GB和更高RAM的电脑
增加了用于音量控制的工具提示
添加了关闭/开启播放器预加载预览录像的选项
修复:Flashback连接上传表单 - 视频名称可能会重叠“复制”和“打开”链接
修复:如果网络摄像头未正确初始化,录制可能会停止
修复:无法选择包含日语字符的声源名称进行录制
修复:MPEG录制模式质量等级设置未保存
修复:FBAPI的帮助文本出现错误,它仅适用于TestAssistant
修复:在Win 32 SaveAs函数中添加了解决异常的方法
修复:当没有音频录音源时,可能会显示不正确的音频格式
试用、下载、了解更多产品信息请点击"咨询在线客服"

未发布 【示例教程】LEADTOOLS中如何用H.264压缩视频创建DICOM文件 本篇文章教你如何配置LEADTOOLS DICOM Writer filter,创建一个以使用H.264传输MPEG-2的数据集。
这是一个用LEADTOOLS 19在Visual Studio 2017中构建的C #控制台应用程序,说明了如何配置LEADTOOLS DICOM Writer filter创建一个以H.264传输MPEG-2的数据集。这个例子编码高清视频(通过调整一个示例LEADTOOLS的媒体文件)创建一个MPEG-4 AVC/H.264 BD兼容DICOM文件。帧速率也用编码器设置为29.970 fps。
该项目使用一个模板视频DICOM文件作为它的起点。其他模板可以使用,如内镜,但它可能需要在DICOM数据集的其他标签。
在生成视频后,使用扩展方法更新DICOM文件以设置患者信息。有关所使用的扩展方法的详细信息,请参阅简单的DICOM扩展来读取或写入数据集标记。
代码也更新了SOP instance, series instance and study instance UIDs等文件,所以每次生成的文件都是唯一的。
注意:该代码设计为从下面的目录中提取并运行:
C:\LEADTOOLS 19\Examples\posts\t12193
它可以从其他位置运行,但有些代码可能需要更改。具体来说,您将需要更新DICOM模板文件路径。
另外,如果你的LEADTOOLS Medical Imaging SDK 和LEADTOOLS Multimedia SDK 是单独安装的,那么可能也需要更新相应的地址。
点击下面链接下载dmeo
2017慧都十四周年狂欢搞事情!砸金蛋100%抽现金红包、满额豪送iPhone X、iPhone 8、DevExpress汉化免费送、团队升级培训套包劲省10万元......更多惊喜等您来探索!