未找到

未发布 【示例教程】如何通过leadtools读取二维码中的中文
by Harriet666 keys 分享 1511255400131
在使用leadtools进行二维码识别的过程中,经常或碰到中文识别为乱码的情况,让人比较郁闷,本文教大家如何通过leadtools来读取二维码中的中文。
 
Leadtools 19总套包下载>>>
 
中文在编为二维码的时候,实际上是先按照一定的字符集编码被转换为了二进制编码,而我们如果需要正确的读取出二维码中的中文,就必须要确认编码字符集,如UTF8,UTF16,GB2312,GBK等等。
 
在确认了编码方式后,我们对通过BarcodeEngine 引擎读取出的BarcodeData ,不用value属性直接去获取它的对应字符串。因为这样默认是得到的按照ascii码编码来翻译出的字符串,自然会有各种乱码,leadtools提供了另一个方法GetData(),通过这个方法可以获取原始的byte[] 数据。然后按照对应的编码方式进行转换,即可得到对应的中文字符串。
 
下面的例子中是针对UTF8编码的中文二维码进行识别的代码,大家可以在编译以后,对文末的二维码进行识别。
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.Forms; 
using Leadtools.Barcode; 
using Leadtools.ImageProcessing; 

public void BarcodeData_GetDataExample() 
{ 
string imageFileName = Path.Combine(LEAD_VARS.ImagesDir, "Barcode2.tif"); 

// Create a Barcode engine 
BarcodeEngine engine = new BarcodeEngine(); 

// Load the image 
using (RasterCodecs codecs = new RasterCodecs()) 
{ 
using (RasterImage image = codecs.Load(imageFileName, 0, CodecsLoadByteOrder.BgrOrGray, 1, 1)) 
{ 
// Read the first QR barcode from the image 
BarcodeData data = engine.Reader.ReadBarcode(image, LogicalRectangle.Empty, BarcodeSymbology.QR); 

// Show the barcode data found (if any) 
if (data != null) 
{ 
Console.WriteLine("Raw data is:"); 
byte[] bytes = data.GetData(); 
if (bytes != null) 
{ 
string text = System.Text.Encoding.UTF8.GetString(bc); 
Console.WriteLine(text);
} 
else 
{ 
Console.WriteLine("Empty"); 
} 
} 
else 
{ 
Console.WriteLine("No barcode found"); 
} 
} 
} 
}

未发布 多功能文件格式转换器VectorDraw File Converter v7.7011.0.1发布
by Harriet666 keys 分享 1490843010437

VectorDraw File Converter是一个终端应用程序,使得用户能将常用的图像文件(DWG,DGN和DXF)转换为VectorDraw格式标准(VDF,VDI),反之亦然。该工具能将上述文件导出为SVG与DWF格式。VectorDraw File Converter还能进行多种文件的转换(比如*.dwg 到 *.vdf或者 *.dxf,反之亦然)。

VectorDraw File Converter更新至v7.7011.0.1,新版本针对提出的需求和bug做了调整和优化。

VectorDraw File Converter点击下载试用>>>

未发布 专业的格式转换工具pdf2cad发布v11,支持当前所有的Windows和Mac操作系统
by Harriet666 keys 分享 1491899188681

pdf2cad是一款可将PDF文件转换成CAD格式的转换工具。仅需几秒钟,便可将所提取的准确图形在常规的CAD工具中进行修改,如AutoCAD, TurboCAD和MicroStation。pdf2cad可将PDF工程图输出为DWG, DXF和HPGL格式。pdf2cad格式转换工具适用于Windows或Mac OS X操作系统。

pdf2cad v11提供了许多新功能和增强功能,包括64位版本,支持所有当前的Windows和Mac操作系统,处理受密码保护的PDF文件,更多地控制图像,灵活的页面编号,其他方法来分隔图层等等。

【pdf2cad点击下载>>>】

pdf2cad v11更新内容:


输入选项
  • pdf2cad v11提供了一个新的选项来指定受密码保护的PDF文件。
pdf2cad
输出选项
  • 在输出文件名中定义页码的新选项
  • 使用文件名作为目录名称的新选项
pdf2cad
文本选项
  • 支持Unicode字符集
  • 提升处理未知字符编码的能力
格式
  • 增加DXF / DWG格式的英寸作为单位选项
分层
  • 基于实体类型的图层
  • 改进嵌套分层和名称验证
  • 将每个图层转换为单独文件的新选项(仅限DXF)
pdf2cad
比例选项
  • 使用mm、英寸、英尺和米的新选项来定义比例
pdf2cad
图像选项
  • 可忽略小图像或裁剪后将其转换为颜色线
  • 将图像对象移动到背景的新选项
  • 如果PDF文件包含IMAGE对象,则显示警告消息
pdf2cad
综合
  • 改进字体警告处理
  • 修复和改进DXF / DWG格式
  • 增强PDF解释器
  • 新的64位版本pdf2cad 
  • 支持最新的操作系统版本,包括Windows 10.0和Mac OS X Mavericks
  • pdf2xxx CL(Windows)支持Unicode文件名
未发布 Essential Studio for WPF更新至2017 v2,新增Adobe X安全性等功能丨附下载
by Harriet666 keys 分享 1495098904618
Essential Studio for WPF是一个帮您轻松创建利于分析且高性能Windows应用程序的WPF界面控件。包含了如 grids、charts、gauges、menus、calendars、editors等等。同时,文件格式库还允许您导出资料到Excel、World和PDF文件中,以及对这些格式的文件进行处理。
 
Essential Studio for WPF是一个大型组件,2017 v2新版本增加了工作簿排序和过滤、动态图表端口、Adobe X安全性和其他新的功能。
 

日历编辑

特殊日期标记

日历编辑控件中可以标记特殊日期。
c251f107933f4c0990beff6a87f91456ojpg

图表

区段颜色设置

图表中的每个段现已支持颜色贴图。
1615fa6734334912a18558f230ffcb33ojpg

多个样条曲线类型

图表控件现在支持样条区域的多个样条类型。
aadf541844db4041852f4a6308a3e597ojpg

图表

滚轮鼠标平移

通过将滚轮鼠标的中心滚动按钮移动到一侧,图表可以从左到右平移,反之亦然。
bd5702e304b9452e895f83d511fb2f26ojpg

片段装饰

连接器中添加了一种新的装饰元素,以指示连接在另一个连接器或片段上的流动。
13b3c8d533434e3585ff80e57a56190dojpg

滚动性能

当在图表中滚动大量对象时,将显示对象的轮廓,直到每个对象加载完成,从而平滑滚动。
9d799d41e34b409a943aa7139f3eda59ojpg

DocIO

增强Word转换PDF功能

DocIO现在支持Word到PDF转换期间的方程式字段。
2648b5574aea42bfa269f622e7f40982ojpg

编辑控件

支持Microsoft Visual Studio-like Go-To-Line

支持的内置会话窗口的Microsoft Visual Studio-like编辑器,用户可以选择浏览特定的行。
c81129e759744f0d9e5bed4829422e61ojpg

PDF

增强PDF安全功能

现在支持PDF 2.0安全功能(AES Revision 6)。
96ffdf5112f34cf1a921d5f3b35a6a90ojpg

演示

注释功能

可以在PowerPoint演示文稿中创建和修改注释。
6159be7538324e0eb727fb91ea87c1d4ojpg

属性网格

处理属性网格中的自定义描述符对象。
8824e56ca079454e9b0ada005d2c74b0ojpg

电子表格

排序和筛选

可以使用排序和自动过滤器选项在Excel中有效地分析数据。

排序

根据单元格值按升序或降序对数据进行排序。

过滤

使用自动过滤器功能过滤数据。如Excel中,该功能具有多个选项来过滤多列数据,以及从特定列中清除过滤数据的功能。
c9426becbed74cb08fb0696c14292254ojpg

树型网格

过滤

树状网格控件现在支持使用各种过滤器选项,用编程方的式过滤节点。
4d76cf0f1f0540199dc419345b1f83a5ojpg

XlsIO

Excel到PDF转换中的图标设置

Essential XlsIO支持使用“仅显示图标”和“反向图标顺序”选项进行PDF转换的自定义图标设置。
4ec86d3b6cda43cab676eac8e0dda486ojpg

增强图表转换图像功能

将图表转换为PDF文件或图像时,图表元素(如标题和显示单元)现在支持富文本和具有不同标记的图表系列。
227f9112c12a4974a4dc948a8b971bc3ojpg

数据透视表自定义排序

数据透视表列可以通过字符串数组或设置自定义位置进行排序。
897b6530731c48b6b3bd1454f90686c3ojpg

表格过滤器

可以根据文本、数值和日期过滤Excel表格行。

05dff7794d134a26b2031775e390dfcfojpg

未发布 电子邮件.NET控件MailBee.NET Objects使用指南合集(下)
by Harriet666 keys 分享 1504086452458
MailBee.NET Objects是一款为创建、发送、接收以及处理电子邮件而设计的健壮、功能丰富的.NET控件。几行代码便可为应用程序添加E-Mail支持,简单高效。具备“必需”以及独特的功能,这些控件帮助开发人员简单快速地将复杂的电子邮件功能添加到他们的应用程序中。本文主要介绍了MailBee.NET Objects的使用指南。
 

一、哪里可以下载MailBee.NET Objects并更新我当前的版本?

你可以使用NuGet软件包管理控制台将最新版本的MailBee.NET程序集添加到项目中:
Install-Package MailBee.NET
最新版本的MailBee.NET Objects安装程序(包括程序集本身以及文档、示例和工具)下载地址:http://www.afterlogic.com/download/MailBeeNetObjects.msi
 
最新版本的MailBee.NET程序集可从下面的网址获取:http://www.afterlogic.com/updates/mailbee_net.zip
 
存档包括.NET 2.0/3.5版本(MailBee.NET.dll),.NET 4.0版本(MailBee.NET.4.dll),.NET 4.5+版本(MailBee.NET.45.dll),Mono,Xamarin iOS和Android版本。.NET 2.0/3.5版本仍然可以在.NET 4.0及更高版本中使用,它不包括.NET 4.0特定的优化。但是,只有.NET 4.5版本支持async/await方法。
 
当你下载MailBee.NET软件包安装程序MailBeeNetObjects.msi时,首先要关闭可能使用MailBee.NET的所有应用程序。如果Visual Studio .NET正在运行,请关闭它。然后,你需要卸载现有的MailBee.NET Objects。要删除现有版本的产品,请使用控制面板中的“ 添加/删除程序”。然后,可以轻松安装新版本的MailBee.NET:只需运行安装程序并按照屏幕上的说明进行操作即可。
 
现在你已安装了新版本的MailBee.NET Objects,但是由MailBee.NET Objects提供支持的应用程序仍然使用的旧版本。因此,你应该更新项目中的引用并重新创建由MailBee.NET Objects提供支持的应用程序。
 
对于Visual Studio .NET项目,应删除对MailBee.NET的引用(在解决方案资源管理器中打开项目的引用并删除对MailBee.NET的引用),然后添加新的并重建项目。
 
对于非Visual Studio .NET环境,你应该手动替换应用程序的/ bin子文件夹中的MailBee.NET.dll文件并重新构建项目。安装MailBee.NET软件包后,你可以在安装文件夹中找到MailBee.NET.dll文件(默认情况下,它是32位Windows上的“C:\Program Files\MailBee.NET Objects”或64位上的"C:\Program Files\MailBee.NET Objects (x86)")。
 
我们会发布BounceDatabase的更新。你可以下载最新版本:http://www.afterlogic.com/updates/BounceDatabase.zip并将其提取到C:/Program Files/MailBee.NET Objects/BounceDatabase目录中,以覆盖现有文件。


二、如何在我的.NET项目中添加MailBee.NET Objects?

在Visual Studio .NET中,请按照以下步骤(假设你的Visual Studio .NET项目名为EmailApp):
1.在解决方案资源管理器中,右键单击项目名称(EmailApp),然后在上下文菜单中选择添加参考命令。
2.在出现添加引用对话框中,找到MailBee.NET Objects。如果你有新版本的MailBee.NET.dll(比安装程序更新),你可以单击浏览按钮并手动找到MailBee.NET.dll文件。然后双击引用将其添加到列表中,单击确定。
3.在添加的引用属性中,确保Copy Local设置为True。
 
要在非Visual Studio .NET应用程序中引用MailBee.NET Objects,你应该手动将MailBee.NET.dll文件上传到应用程序根文件夹下的/ bin文件夹中。如果没有/bin文件夹,你应该先创建它。
 
以这种方式引用MailBee.NET Objects库的应用程序可以利用XCOPY部署。一旦从应用程序引用了MailBee.NET Objects,下一步是将库中的名称空间导入到应用程序中,如MailBee.NET Objects文档或MailBee.NET Objects附带的演示项目中的示例。然后你就可以开始开发由MailBee.NET Objects提供支持的应用程序了。
 

三、购买后支持多久的免费升级?

保证在购买后至少一年的免费升级。随后的几年,维护费用(包括免费升级和标准技术支持)可以每年以50%的价格购买。
 

四、哪里查看产品许可协议?

AfterLogic的所有商业产品的许可查看。http://www.afterlogic.com/products/common-licensing
未发布 CAD绘图控件VectorDraw web library (javascript)更新至v7.7014.0.2,在线购买6.6折!
by Harriet666 keys 分享 1513156801275
VectorDraw web library (javascript)是一个矢量图形库,它不仅能打开CAD图纸,而且能显示任何支持HTML5标准平台上的通用矢量对象,如Windows,安卓,iOS和Linux。无需任何安装,VectorDraw web library (javascript)就可以运行在任何支持canvas标签和Javascript的主流浏览器(Chrome, Firefox, Safari, Opera, Dolphin, Boat等等)中。这意味着可以用DXF,DWG,DGN,VDML等多种格式在任何台式、平板电脑,智能手机和便携式笔记本上展现出你的业务。
 
慧都百厂约惠
VectorDraw web library (javascript)6.6折全年最低!
立即购买>>>
 
VectorDraw web library (javascript) v7.7014.0.2更新内容
WebJS
新增需求(7.7014.0.1)
  • 70001215 MergeDocument方法支持使用mergeFlags
漏洞(7.7014.0.1)
  • 70001204 线路对象捕捉无法运作
  • 70001206 导出到vds脚本时出现异常
  • 70001210 WebGl渲染中的实体影线问题
    
Converter
新增需求(7.7014.0.1)
  • 70001217 DGN中unsuported对象的类型
漏洞(7.7014.0.1)
  • 70001212 Textstyle未使用正确的TTF字体导入
    
Engine
新增需求(7.7014.0.1)
  • 60001730 不要从部分剪辑中隐藏手柄
  • 70000019 vdScreenBlock的HitTest返回用户点击的内部块对象
  • 70001186 开始用户动画的操作
  • 70001191 支持3D
  • 70001203 禁用某些触摸屏操作的功能
  • 70001211 支持分机线固定长度
  • 70001214 TextStyle高度覆盖任何尺寸或样式文字高度
  • 70001216 显示屏幕3d导航立方体
  • 70001218 带裁剪的vdInsert的边界框计算不正确
  • 70001228 具有TTF_TEXT标志的线类型,支持ShapeText字符串中的Unicode字符
漏洞(7.7014.0.1)
  • 70001207 GetModel2dProjection无法正常工作
  • 70001208 多行文字引发错误
  • 70001213 vdInsert返回错误的边界框
  • 70001219 透视模式下无法正常工作
  • 70001220 Mtext未显示正确的文本
未发布 矢量图形引擎库VectorDraw Developer Framework v7.7012.0.2发布丨附下载
by Harriet666 keys 分享 1499325700094
VectorDraw Developer Framework(VDF)是一款构建2D、3D图形并用于应用程序可视化的矢量图形引擎库。有了VDF提供的功能,您可以轻松地创建、编辑、管理、输出、输入和打印2D和3D图形文件。该库还支持许多矢量和栅格输入和输出格式,包括本地PDF和SVG导出。
 
VectorDraw Developer Framework点击下载>>>
 
VectorDraw Developer Framework(VDF)v7.7012.0.2更新内容:

WebJS

新增需求(7.7012.0.1)
  • 70001107 支持vdPolyface对象的3d形状和GradientColors
  • 70001111 获取实体边界框
漏洞(7.7012.0.1)
  • 70001098 vdSelectionModified事件返回不正确
  • 70001108 具有厚度的vdPolyline的osnaps无法显示

Engine

新增需求(7.7012.0.1)
  • 70001096 无法选择带有窗口选择的多面体
  • 70001105 改进GradientColors
  • 70001106 cmdMultiline自我解析
漏洞(7.7012.0.1)
  • 70001102编辑文字时EditText的问题
  • 70001109如果在没有GetGripSelection方法的情况下添加选择,则不会引发GripModified事件
  • 70001110 Mtext呈现不正确
  • 70001113 3D模式中的文本线型显示错误

试用、下载、了解更多产品信息请点击"咨询在线客服"  

VectorDraw File Converter

未发布 扫描识别工具Dynamic Web TWAIN使用教程:建立一个“Hello World”扫描页面
by Harriet666 keys 分享 1511504073281
Dynamic Web TWAIN是一个专为Web应用程序设计的TWAIN扫描识别控件。你只需在TWAIN接口写几行代码,就可以用兼容TWAIN的扫描仪扫描文档或从数码相机/采集卡中获取图像。
 
本文教你Dynamic Web TWAIN中只需3个步骤在5分钟内创建一个Web扫描应用程序的方法!
 
注意:开始之前,请确保您已经下载并安装了最新版本的Dynamic Web TWAIN。如果还没有安装,请在这里下载Dynamic Web TWAIN最新版

步骤一:启动一个Web应用程序

1.1 将Dynamsoft的Resources文件夹复制到您的项目中
Resources文件夹通常在C:\Program Files (x86)\Dynamsoft\Dynamic Web TWAIN SDK {Version Number} {Trial}\
image003
 
1.2 创建一个空的HTML页面
请将空的html页面与Resources文件夹放在一起,如下所示:
image004
 
步骤二:将Dynamic Web TWAIN添加到HTML页面
2.1 包含两个Dynamsoft JS文件
 
2.2 添加一个Dynamic Web TWAIN容器
1
<div id="dwtcontrolContainer"></div>
 
注意: “dwtcontrolContainer”是div的默认ID。如有必要,您可以在文件dynamsoft.webtwain.config.js中更改它。
 
步骤三:使用Dynamic Web TWAIN
3.1 添加一个扫描按钮和最小的脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<input type="button" value="Scan" onclick="AcquireImage();">
<script type="text/javascript" data-filtered="filtered">
    var DWObject;
    function Dynamsoft_OnReady(){
        DWObject = Dynamsoft.WebTwainEnv.GetWebTwain('dwtcontrolContainer');
    }
    function AcquireImage(){
        if(DWObject) {
            DWObject.IfDisableSourceAfterAcquire = true;
            DWObject.SelectSource();
            DWObject.OpenSource();
            DWObject.AcquireImage();
        }
    }
</script>
 
3.2 查看完成的代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<title data-filtered="filtered">Hello World</title>
<script type="text/javascript" src="Resources/dynamsoft.webtwain.initiate.js" data-filtered="filtered"> </script>
<script type="text/javascript" src="Resources/dynamsoft.webtwain.config.js" data-filtered="filtered"> </script>
 
 
<input type="button" value="Scan" onclick="AcquireImage();">
<div id="dwtcontrolContainer"> </div>
<script type="text/javascript" data-filtered="filtered">
        var DWObject;
        function Dynamsoft_OnReady(){
            DWObject = Dynamsoft.WebTwainEnv.GetWebTwain('dwtcontrolContainer');
        }
        function AcquireImage(){
            if(DWObject) {
                DWObject.IfDisableSourceAfterAcquire = true;
                DWObject.SelectSource();
                DWObject.OpenSource();
                DWObject.AcquireImage();
            }
        }
    </script>
 
3.3 查看正在运行的扫描页面
如果你打开项目中的Hello World页面,它应该是这样的:
image005
 
现在,您可以点击“扫描”按钮选择一个设备,如下所示:
image006
 
注意:
  • 选择来源对话框中只列出了TWAIN兼容设备。如果连接的扫描仪没有显示在列表中,请按照这篇文章排除故障。
  • 如果您手边没有扫描仪,则可以安装虚拟扫描仪 - 由TWAIN工作组开发的扫描仪模拟器 - 用于测试目的。

扫描完成后,图像将显示在内置的Dynamic Web TWAIN查看器中:
image007
 
如果您安装了Dynamic Web TWAIN的30天试用版,您可以在C:\Program Files (x86)\Dynamsoft\Dynamic Web TWAIN SDK {Version Number} {Trial}\Samples\Getting Started\获取完整的Hello World应用程序。
image008
 
本次教程到此结束,希望能对Dynamic Web TWAIN的用户带来帮助,接下来还会有更多的相关教程,敬请期待!
未发布 LEADTOOLS v19更新发布文档和医疗功能,增加Visual Studio 2017兼容性!
by Harriet666 keys 分享 1490165179812

LEAD Technologies发布了LEADTOOLS v19 SDK的重大更新,本次更新侧重于文档和医疗功能,其中一些功能在商业SDK市场中是前所未有的。包括第一个完整的商业Hanging Protocol SDK解决方案、大图像(以TB为单位)支持、文档格式支持以及更新各种识别技术,包含OCR、表单、OMR、条码、信用卡读卡器和Visual Studio 2017的兼容性。

LEADTOOLS v19 (Windows、Linux、IOS/macOS、Android)下载>>>

LEAD Technologies总裁Rich Little表示:“这次更新是LEAD继续加强LEADTOOLS以解决现实问题的一个很好的例子。我们非常高兴能够拥有第一个商业医疗查看器SDK,包括完整的DICOM Hanging Protocol、优化的大图像加载和一个新的超快速表单识别算法。26年前我和Moe创建LEAD时,我们从来没有想过可以加载1TB的图像。”

以下是一些主要更新内容:
  • 第一个商业性DICOM Hanging Protocol SDK
  • HTML5 Zero-footprint 医疗Web浏览器 - 新的功能和增强
  • DICOM存储服务器 - 新功能
  • 更高效地处理DICOM Pixel数据
  • SDK识别技术 - 增强对OCR、表单 & OMR以及新的复合条形码的识别
  • 文档查看器 - 新的功能和增强
  • 文档格式 - 功能增强
  • 信用卡读卡器SDK - 支持更多平台
另外,本次更新后LEADTOOLS v19可以与Visual Studio 2017实现兼容!
点击查看具体功能更新日志>>>
未发布 Oracle正式发布Java 9,引入新的Java编程组件
by Harriet666 keys 分享 1506566182619
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是否依然能够在服务端技术中占据领导者地位尚有待观察。
更多资讯点击查看>>>




 近期热门 - 点击最多
  1. python基于asyncio实现 Redis 的异步操作哈希数据写入 / 读取、发布订阅消息中间件
  2. Node.js 打印vite react+go项目目录树
  3. Angular入门:用Signals状态管理和Bootstrap基础样式实现的用户登录注册实例教程
  4. 用Gitea搭建免费Git服务器自定义Actions配置CI/CD自动化部署和测试流水线
  5. FastAPI+SQLModel+PostgreSQL+React+Vite全栈项目文件结构说明环境搭建与初始化指南
  6. React结合vite使用vue3,在纯typescript的react hooks中使用vue
  7. valtio基于Proxy代理比redux\zustand更简洁的react状态管理库
  8. React Native为http网络请求添加timeout超时异常处理: 用XMLHttpRequest替换fetch发送的区别
  9. React Native使用fetch发送http登陆验证请求失败:无法读取set-cookie并显示network request failed
  10. 克服Redux的缺点在React/Native中使用消息队列,pubsub-js更加简洁的组件间通信和状态传递方法

  全端社区 - 最新回复
  1. python基于asyncio实现 Redis 的异步操作哈希数据写入 / 读取、发布订阅消息中间件
  2. Angular入门:用Signals状态管理和Bootstrap基础样式实现的用户登录注册实例教程
  3. 用Gitea搭建免费Git服务器自定义Actions配置CI/CD自动化部署和测试流水线
  4. FastAPI+SQLModel+PostgreSQL+React+Vite全栈项目文件结构说明环境搭建与初始化指南
  5. Node.js 打印vite react+go项目目录树
  6. valtio基于Proxy代理比redux\zustand更简洁的react状态管理库
  7. Windows与Mac通过git ssh和rsync实现文件共享互传
  8. Windows与Mac通过git ssh和scp实现文件共享互传
  9. React结合vite使用vue3,在纯typescript的react hooks中使用vue
  10. 使用PubSub-JS时ReactNative在后台运行一段时间唤醒后,组件无法scribe到publish的事件,typescript实现一个事件订阅发布组件

  开源的 OurJS
OurJS开源博客已经迁移到 OnceOA 平台。

  关注我们
扫一扫即可关注我们:
OnceJS

OnceOA