小程序如何实现赠送_安全地赠送您的演示应用程序

小程序如何实现赠送

上个月,我不得不为潜在客户开发概念验证Web应用程序。 一切都很好,但是在会议结束时,客户问“当然您会给我们演示,以便我们可以自己进一步进行演示”。 我非常确定自己的技术,因此我对错误没有任何疑问,但是无论如何我还是拒绝了。 为什么这样? 因为我不想冒险让客户打开WAR,看看我是如何做到的。

之后,我花了很多时间思考如何可以做一些不同的事情,以便下次我将成为提议将演示交给客户的人。 以下是这些想法的结果。

在线托管

这是我立即选择的解决方案。 它认为它有很多缺点。

它有两个基本选择:将Web应用程序托管在您自己的基础结构上,或将其托管在第三方的基础结构上。 将其托管在您的基础结构上是一个好主意,因为它可以满足您的需求。 但是,这需要一支有能力且愿意的IT团队。 使用第三方非常棘手,因为您基本上是在放弃责任和做事的能力。

此外,取决于您托管应用程序的位置和客户的位置,这可能会导致响应时间问题,从而对演示图像产生非常不利的影响。 请记住,这是一个POC,因此客户应该关注功能而不是性能。

混淆

Java代码可以很容易地反编译:我记得JDK中有一个工具,但是自从Java时代起,我就主要使用JAD

编译代码时只会丢失两件事:注释和参数名称; 类名,方法名和属性名由编译过程以及导入保留。 因此,反编译Java代码将为您带来大部分重要的东西。

几年前,我已经使用过混淆技术,以便让承包商在现场使用专有框架,而不必担心使用yGuard产品进行代码反编译的风险。 yGuard允许您定义您的API,并将其保留。 在编译的代码中,所有其他类及其关联的成员将使用gobbledygook重命名,例如a,b,string等。 用yGuard混淆的代码很难(但并非不可能)阅读。

无论使用yGuard还是其他工具进行混淆,都有三个主要缺点。 首先,您必须定义您的API,这意味着您必须手动设置应用程序的所有入口点。 这些入口点是所有超出混淆器范围并引用您的类的文件:

  • 对于标准应用,这意味着主要类别
  • 对于Web应用程序,这意味着servlet
  • 对于Spring应用程序,这意味着Spring bean定义文件引用了bean。
  • 等等

此外,由于混淆器仅适用于Java引用,因此不适用于String,因此您可以再见所有反射代码。 当然,并非所有应用程序都如此,但是如果您考虑将来对代码进行混淆,则意味着对您的设计有限制。

最后但并非最不重要的一点是,如今大多数应用程序都是通过配置文件完成的。 我在上面写过关于Spring的文章,但是它也包含属性文件,部署描述符等。 这些文件不在混淆器的范围内,但是它们可以为代码本身提供一些很好的主意。 当然,对于Spring文件,您也可以使用批注,但这是从一开始就必须考虑的另一个约束。

现在换个完全不同的东西

很抱歉,此Monty Python参考资料 ...然而,从以前的可能性中可以看出,确实需要传统路线之外的其他东西。

到目前为止,我发现唯一真正令我满意的是Excelsior的Jet产品 。 它会生成一个完全独立的可执行文件(Windows是一个版本,Linux是一个版本)。 与反编译简单的Java字节码相比,反编译此类代码确实要花费更多的精力。 从我的角度来看,我并不认为这是不可能的(我对计算机一无所知),但在大多数情况下不值得为此付出努力。

使用JET是在两个应用程序中完成的多步骤过程。

喷射

JET的控制面板屏幕截图

注意,JET使您可以从在Tomcat上运行的Web应用程序以及标准Java SE甚至是Eclipse RCP应用程序创建可执行文件!

JET的功能包括:

  • 系统属性设置,这意味着您的可执行文件将根据需要进行配置
  • 选择应用程序的最终格式:完全包含的可执行文件或带有附加库的可执行文件
  • 在平台上集成:这样,可执行文件将以平台方式显示有关应用程序的信息
  • 试用版时间到期(如果需要)
  • 您的应用程序如何启动和运行:启动屏幕,图标和控制台
  • 优化应用程序:虚拟运行使编译器可以查看应用程序的工作方式,并考虑其使用情况来执行提高性能所需的操作

JetPack II

以JET想要的格式描述了项目之后,就该做真正的工作了:打包应用程序。

在这里您还可以:

  • 选择将在您的应用程序中使用的其他组件,例如JRE本身。 这意味着您的应用程序实际上可以包含在完全独立的可执行文件中!
  • 分离JRE的一个子集,并使其在您选择的Web服务器上可用。 这样,您只需打包使用的内容,然后准备其余内容以供下载
  • 选择打包格式:安装程序或可执行文件本身

到目前为止,我发现唯一缺少的是JET不能直接提供Maven集成。 由于我不是每天都提供我的Web应用程序,因此我可以忍受...

结论

在尝试了三种选择(托管,混淆和JET)之后,我要说的是,我发现后者是到目前为止我工具箱中功能最强大的工具。

下次当我遇到一个要求我演示的客户时,我不会碰墙寻找合适的解决方案,我会即时回答“当然”,知道JET会为我处理。

翻译自: https://blog.frankel.ch/safely-give-away-your-demo-applications/

小程序如何实现赠送

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值