未发布 Oracle宣称Java将每半年发布一个版本 Oracle近日宣布,他们将Java的发布频率改为每六个月一次。
JCP执行委员会在八月份的会议上提到了这一说法,随后,Oracle发言人Donald Smith在他的博客中确认了这一消息。该决定将在Java 9正式发布之后开始实行,也就是说,Java的下一个发布日期是2018年初。
除了发布周期,Oracle还宣布了在Java的构建和发布方式方面所发生的主要变化。Oracle将把OpenJDK的二进制包作为面向开发者的主要版本,取代之前的Oracle JDK。
OpenJDK将采用GPLv2许可(包括“类路径例外”)免费发行,移除了之前在Oracle JDK上存在的一些限制。Oracle JDK仍然会继续存在,但需要与Oracle签订协议才能获得Oracle提供的长期支持。
Java首席架构师Mark Reinhold说,为了避免出现像Java 8和Java 9那样的延期情况,所有决定实行新的发布周期。
Java当前的发布周期为两年一次,Java 9因为模块化系统(Jigsaw)问题一再延期,已经比预期晚了18个月。之前,Java 8也因为安全问题延期了8个月左右。Java 9的GA版本将在9月21号发布。
新的发布周期严格遵循时间点,将在每年的3月份和9月份发布,相应的版本号为18.3、18.9、19.3等。与现在的发布周期不同,新的发布计划不会为了等待某个主要特性完成而延期。如果一个特性还没有完成,它就不会被合并到发布用的代码仓库里。如果错过了一个版本,就要等待下一次发布。
新的发布周期旨在避免未完成的里程碑特性(比如Java 8的Lambda或Java 9的模块化系统)造成发布延期,让其他一些有用的特性也无法与开发者见面。
除了新的发布周期,Oracle将会继续每个季度发布更新版本,时间分别为1月份、4月份、7月份和10月份。也就是说,在下一个大版本发布之前,当前版本都会有两个更新版本。更新版本只包含安全问题修复或回归错误的修复。
Reinhold说:开发者希望加快速度,这样他们就能够尽快地在生产环境中使用新的特性。
对于没有必要快速升级Java版本的企业和组织来说,Oracle建议他们签订每三年一次的长期支持(Long Term Support,LTS)协议。他们因此可以获得由Oracle提供的至少三年的支持,还有可能更长时间,这要取决于市场的反应。
Oracle建议第一个LTS版本为“18.9”,不过这需要与其他的OpenJDK贡献者讨论过后才能最终确定。Java 8被作为一个特别的LTS版本,支持日期截止到2025年。
Smith说:OpenJDK是开发者了解和使用Java SE平台最主要的渠道,而Oracle JDK继续作为Oracle收费用户的LTS版本。
伦敦Java社区的负责人Martijn Verburg也发表了他对新发布周期的看法:新的Java发布周期对于Java生态系统来说是一件好事情。Java 9的Jigsaw和孵化模块问题促成了这一局面的发生。Oracle确实面临着发布方面的巨大挑战,不过OpenJDK社区拥有足够的知识来帮助一起解决挑战。我希望看到中间会有所突破,不过对常规的发布周期仍然很期待。其他实现者可以更早地访问到规范的草案,这样他们就可以更早、更经常地发布版本。
Oracle的Java发布速度经常受到诟病,Java被广大的企业组织所采用,并已成为大量开源平台和语言的基础,而这样的发布速度让Java处于很尴尬的境地。新的Java发布周期恰好满足了广大用户的期望,不过这仍然需要等待Java开发者和Oracle用户的反馈。
未发布 【百厂约惠】Dynamsoft全线产品低至6.7折!错过等一年
Dynamsoft现已加入慧都史上最大力度的“百厂约惠”折扣专区,全线产品低至6.7折!全年仅此一次,你还在等什么!
活动时间:2017.12.5-2017.12.31
应用于Web应用程序的TWAIN扫描识别工具 支持所有主流浏览器。 |
更快速、更安全的远程获取 和跨平台VSS插件 兼容所有的网络技术,平台和设备 | 为桌面应用程序设计的.NET控件 适用于C#和VB.NET 能让你从任何TWAIN设备中获取图像的托管代码SDK |
一款多功能的条码读取控件 只需要几行代码就可以将条码读取功能 嵌入到Web或桌面应用程序 | 快速、轻松地为您的web应用程序 启用图像和视频捕捉 |
一个用以替代VSS的独立版本控制软件 | 一款基于SQL Server的本地/网络版本控制软件 |

未发布 企业级工具包Essential Studio Enterprise Edition发布2017 v3丨附下载 Essential Studio企业版,一个跨越八个平台并包含433种独特控件的企业级工具包。使用Essential Studio企业版,开发者可以创建丰富的应用程序,并轻松地集成商业智能分析和报告解决方案。Essential Studio企业版是世界级的软件组件,它使得开发者能在最苛刻的环境下开发出高质量的软件。
Xamarin.Forms
 | 构建跨平台应用程序新的选择器控件 新的径向菜单控件 PDF查看器中的文本选择和复制功能 查看详情 |
ASP.NET MVC
 | 构建强大的Web应用程序StackingSplineArea和100%StackingSplineArea图表 图表支持标尺 甘特图控件支持修改工作周 查看详情 |
ASP.NET Web Forms
 | Web开发新的日期范围选择器 StackingSplineArea和100%StackingSplineArea图表积图类型 图表支持标尺 查看详情 |
UWP
 | 开发Windows生态系统新的选择器控件 图表的轴刻度 支持甘特图控件的样式定制 查看详情 |
JavaScript
 | 充分利用JavaScriptStackingSplineArea和100%StackingSplineArea图表 图表支持标尺 甘特图控件支持修改工作周 查看详情 |
Windows Forms
 | 构建更好的应用程序DocIO内容控件 消息框定制 标记PDF 查看详情 |
WPF
 | 控制桌面树形网格的主题支持 图表的轴刻度 基于参数布局的Report Viewer参数渲染 查看详情 |
2017慧都十四周年狂欢搞事情!砸金蛋100%抽现金红包、满额豪送iPhone X、iPhone 8、DevExpress汉化免费送、团队升级培训套包劲省10万元......更多惊喜等您来探索!

未发布 扫描识别工具Dynamic Web TWAIN使用教程:属性/方法/事件介绍 Dynamic Web TWAIN是一个专为Web应用程序设计的TWAIN扫描识别控件。你只需在TWAIN接口写几行代码,就可以用兼容TWAIN的扫描仪扫描文档或从数码相机/采集卡中获取图像。
本文为你介绍Dynamic Web TWAIN中属性/方法/事件的具体操作代码,欢迎收藏。
当正确实施后,Dynamic Web TWAIN将在页面加载后自动初始化。一旦初始化,你就可以像堆任何正常的JS对象一样控制它。您可以参考我们的在线API文档来查看Dynamic Web TWAIN的所有内置属性、方法和事件。
这里有三种使用Dynamic Web TWAIN的方法:
属性
属性用于在运行时从Dynamic Web TWAIN中获取或设置特定的值,例如Resolution、Duplex、IfShowUI等。
1 2 3 | /* Property */
/* Scan pages in 200 DPI */
DWObject.Resolution = 200;
|
方法
方法用于调用Dynamic Web TWAIN对象的内置函数,如AcquireImage、SaveAsJPEG、Rotate等。语法非常简单:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | // Method
///
<summary> /// Rotates the image of a specified index in buffer by a specified angle.
/// </summary>
///
<param name="sImageIndex" type="short" data-filtered="filtered">
specifies the index of image in buffer. The index is 0-based.
///
<param name="fAngle" type="float" data-filtered="filtered">
specifies the angle.
///
<param name="bKeepSize" type="bool" data-filtered="filtered">
specifies whether to keep the original size
///
<returns type="bool" data-filtered="filtered"></returns>
DWObject.Rotate(0, 45, false); // rotate the 1st image in the buffer by 45 degrees
|
事件
当达到某个触发点时触发事件。例如,OnMouseClick鼠标点击事件等。与属性和方法相比,事件是有点难度的。在这里我们再多谈一下。
处理事件
添加一个事件监听器
要添加事件监听器,可以使用内置方法RegisterEvent。请参考下面的示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <script type="text/javascript" data-filtered="filtered">
Dynamsoft.WebTwainEnv.RegisterEvent('OnWebTwainReady', Dynamsoft_OnReady);
var DWObject;
/* OnWebTwainReady event fires as soon as Dynamic Web TWAIN is initialized and ready to be used. It is the best place to add event listeners */
function Dynamsoft_OnReady() {
DWObject = Dynamsoft.WebTwainEnv.GetWebTwain('dwtcontrolContainer');
DWObject.RegisterEvent("OnPostTransfer", Dynamsoft_OnPostTransfer);
}
function Dynamsoft_OnPostTransfer() {
/* This event OnPostTransfer will be triggered after a transfer ends. */
/* your code goes here*/
}
</script>
|
在上面的代码中,我们添加了JavaScript函数Dynamsoft_OnPostTransfer()作为事件OnPostTransfer的事件监听器。另外,你可以写这样的代码:
1 2 3 4 5 6 7 8 9 10 | <script type="text/javascript" data-filtered="filtered">
Dynamsoft.WebTwainEnv.RegisterEvent('OnWebTwainReady', Dynamsoft_OnReady);
var DWObject;
function Dynamsoft_OnReady() {
DWObject = Dynamsoft.WebTwainEnv.GetWebTwain('dwtcontrolContainer');
DWObject.RegisterEvent("OnPostTransfer", function() {
/* your code goes here*/
});
}
</script>
|
有参数的事件
一些事件具有参数。以OnMouseClick事件为例:
1 2 | /* sImageIndex is the index of the image you clicked on*/
OnMouseClick(short sImageIndex)
|
当您创建相应的JavaScript函数(AKA,事件侦听器)时,可以包含参数并在运行时进行检索。
1 2 3 | function DynamicWebTwain_OnMouseClick(index) {
CurrentImage.value = index + 1;
}
|
或者
1 2 3 | DWObject.RegisterEvent("OnPostTransfer", function(index) {
CurrentImage.value = index + 1;
});
|
特殊事件 -“OnWebTwainReady”
在所有的内置事件中,有一个特殊事件“OnWebTwainReady”。基本上这个事件在Dynamic Web TWAIN对象被初始化并准备好使用的时候触发。正如您在本文前面看到的那样,推荐使用它的方法是:
1 2 3 4 5 6 7 | <script type="text/javascript" data-filtered="filtered">
Dynamsoft.WebTwainEnv.RegisterEvent('OnWebTwainReady', Dynamsoft_OnReady);
var DWObject;
function Dynamsoft_OnReady() {
DWObject = Dynamsoft.WebTwainEnv.GetWebTwain('dwtcontrolContainer');
}
</script>
|
或者
1 2 3 4 5 | <script type="text/javascript" data-filtered="filtered">
Dynamsoft.WebTwainEnv.RegisterEvent('OnWebTwainReady', function() {
DWObject = Dynamsoft.WebTwainEnv.GetWebTwain('dwtcontrolContainer');
});
</script>
|
本次教程到此结束,希望能对Dynamic Web TWAIN的用户带来帮助,接下来还会有更多的相关教程,敬请期待!
未发布 ReactOS:基于Windows的开源操作系统 ReactOS是一个免费开源的全新操作系统,其设计基于Windows,就像Linux基于Unix一样。ReactOS的外观和Windows类似,可以运行Windows软件和驱动,不过,该项目正在进行当中,可能尚无法完美兼容,最好的方法是在虚拟机上安装ReactOS,检查兼容性。
ReactOS使用X.Y.Z版本命名方案:X表示项目是否达到预期目标,Y表示大版本(关键特性和增强),Z表示小版本(Bug修复和一般开发)。第一个有文档记录的版本是0.0.7,发布于1998年7月。
作为开源项目,由于社区开发人员的数量不固定,所以ReactOS没有一个固定的路线图。不过,他们会尽量在二到六个月发布一个版本。0.4.0、0.5.0和1.0.0是当前设置的里程碑版本。0.4系列版本是最后的Alpha版本,从0.5系列版本开始,项目将进入Beta测试阶段,1.0及以上版本表明该项目已经可供日常使用了。
ReactOS 0.4.6已于近日发布。该版本向真正的硬件支持迈出了重要的一步。若干双启动问题得到了解决,分区管理的安全性得到了提高,可以避免分区列表结构的冲突。ReactOS Loader现在可以加载自定义内核和HAL了。
在0.4.6中,打印子系统尚不成熟,但Colin Finck已经实现了大量新的API,并修复了一些自动化测试中暴露出的Bug。
在驱动方面,Pierre Schweitzer为其增加了NFS驱动程序,并开始实现RDBSS和RXCE,将来还会支持SMB。Sylvain Petreolle为其引入了数字电视调谐器驱动。UDFS、CDFS、SCSI和HDAUDBUS中的若干Bug也得到了修复。
在兼容性方面,0.4.6引入了一个shim引擎,作为新应用程序兼容框架的一部分。在这个版本中,该引擎默认关闭,可以通过ReactOS注册表启用。该版本还包含一个专门的NTDLL库,可以为比较新的软件提供一些它们需要的NTDLL Vista+函数。
ReactOS 0.4.6还改进了用户体验,并修复了多个内存管理、ntoskrnl和文件系统的Bug,变得更加稳定。
未发布 Xamarin for Visual Studio v4.5发布,重新设计Property Pages和Manifests Xamarin for Visual Studio 让开发者可以在Windows上用 Visual Studio 开发原生 iOS, Android 和Windows应用程序。Xamarin for Visual Studio提供了流畅的iOS和Android的API查询,让开发者专注于应用本身。更棒的是,开发者完全可以利用一切他熟悉的开发工具进行开发,从而保证项目的高效性和持续性。 V4.5版本中包含的功能:
重新设计Property Pages和Manifests
在Xamarin 4.5中,我们重新设计了Property Pages和Manifest编辑器。为了与Visual Studio本身和Visual Studio for Mac保持一致性,新的属性页面进行了重组和简化并支持高DPI显示。现在,你可以继续在Property Pages中编辑csproj选项,并Manifest编辑器显示manifest选项。
新的iOS项目属性页面
新的iOS属性页面提供存储在正确构建和运行项目所需的csproj文件中的所有选项。新的设计方式使之更简单有效。

更好的iOS Info.plist Manifest编辑器
我们的iOS Manifest编辑器(info.plist)现在是一个独立的编辑器,你可以通过双击info.plist文件来启动。它有一个体验非常好的UI,用户可以轻松浏览并保持熟悉的外观。

它包括APP版本、支持定向、状态栏样式、视觉资源、游戏中心、地图集成或背景模式等功能的编辑器,以及编辑文档类型,UTI和URL类型等高级功能。
新的Android项目属性页面
重新设计了Android项目选项页面!拥有你需要的所有选项的简化设计。

高级Android选项已经分组到单独的对话框中,你可以通过按“选项”页面上的“高级”按钮打开该对话框。
Bug修复
此版本包括以下修复程序:
修复iOS/tvOS/watchOS设备专用版本的调试问题。(4.5.0.440)
改进了Bonjour SSH。(4.5.0.440)
OpenGL游戏(Android)模板现在使用OpenTK-1.0。(4.5.0.440)
Android Archive Manager现在使用区域设置来显示存档日期。(4.5.0.440)
修复了二级iOS参考调试。(4.5.0.415)
创建F# Blank Android项目的错误。(4.5.0.415)
如果要禁用属性页上的控件,请确保工具提示可见。(4.5.0.415)
在检查“Build iTunes Package Archive (IPA)”之后,仍然无法创建IPA。(4.5.0.415)
Analyze-Xamarin Profiler选项在某些配置中被禁用。(4.5.0.415)
添加几个缺少的工具提示和Android属性页面的帮助链接。(4.5.0.415)
为tvOS / watchOS扩展项目添加Enable Bitcode选项。(4.5.0.415)
如果解决方案中包含共享项目,则无法打开iOS Manifest编辑器。(4.5.0.415)
无法在tvOS或watchOS项目中引用PCL。(4.5.0.387)
为iOS Manifest编辑器添加了工具提示。(4.5.0.387)
改进F#模板。(4.5.0.387)
未发布 【更新】支持多种格式音视频的本地.NET组件Audio Sound Recorder for .NET 更新至v9.0.0.0
Audio Sound Recorder for .NET v9.0.0.0更新内容:
新功能
支持播放声音,同时通过鼠标手动滚动波形滚动条。
支持通过外部编码器FdkAac.exe以AAC+格式记录和导出。
支持播放录制声音。
支持对录制声音进行高速播放,可以将声音保持原始速度。
支持以HLS格式(HTTP Live Streaming)进行流媒体回放。
增加了将Wasapi采集或回送设备的立体声录音会话分为两个单声道输出文件的可能性
增加了切换立体声分离录制会话的单声道输出文件的功能
波形分析仪的新选项
- 波形现在可以基于绝对值显示检测到的峰值
- 更多地控制时间标尺上显示的时间字符串的格式
- 可选的自动垂直缩放功能,用于低音量级别的波形
回放期间显示在波形视觉反馈上的峰值现在通过专用事件报告给容器应用程序。
增加了在录制和回放过程中检索峰值电平和RMS(均方根)电平的支持。
增加了从波形分析仪中检索包含波形峰值的缓冲区的可能性
新属性
新方法
CallbackWaveformValueChangeSet
StartSplitFromWasapiCaptureDevice
StartSplitFromWasapiLoopbackDevice
SwitchOutputFilesOnSplit
StreamPeakLevelsGet
RecordedSound.PlaybackRateGet
RecordedSound.PlaybackRateSet
RecordedSound.PlaybackTempoGet
RecordedSound.PlaybackTempoSet
RecordedSound.PlaybackRateRatioGet
RecordedSound.SoundDirectionEnable
RecordedSound.SoundDirectionGet
RecordedSound.SoundDirectionIsEnabled
RecordedSound.SoundDirectionSet
WASAPI.MixerInputDevicePeakLevelsGet
WaveformAnalyzer.AutoZoomEnable
WaveformAnalyzer.SettingsRulersTimeFormatSet
WaveformAnalyzer.PeaksBufferLengthGet
WaveformAnalyzer.PeaksBufferGet
WaveformScroller.PlaybackOnScrollEnable
WaveformScroller.PlaybackOnScrollInfoGet
新事件
新的回调委托
新的类
试用、下载、了解更多产品信息请点击"咨询在线客服"