关于Processing开发应用及发布分享的一些经验分享
从2015年10月份开始接触Processing,到现在的2021年9月底,足足有6年了!笔者会竭尽全力把所有学到的知识、经验分享出来。这篇是关于Processing开发应用及发布分享的一些内容,可能会分好几期,慢慢整理。
关于发布、生成可执行应用文件(.exe)
因为日常都在Windows平台上工作,因此只针对exe可执行文件的发布分享来讨论。
Processing官方的IDE有输出成可执行文件的功能,点击菜单【文件-输出程序】即可。弹出的对话框如下图:

首先是基于系统平台,没什么好说的,默认Windows。
其次是展示模式,可以设成【Presentation Mode】,也就是展演模式,跟菜单【速写本-展示模式】一个效果,无论有没有定义fullScreen,都会全屏展示画布,展示分辨率低于桌面显示分辨率的话,超出部分被填充默认底色。当然还有个停止按钮的显示与否的控制。
再次是【Embed Java】,即是否要将JRE(java程序运行环境)一同复制一份并入应用目录中。Processing程序就是Java程序,因此JRE是必须要依赖的。如果被打开应用的系统上并没有相关JRE运行环境的环境设置以及包本身,那么是打不开应用的!而如果嵌入一起放入应用目录中,则不必担心是否有上述问题,无论该系统有无JRE环境都能正常运行。缺点是整个应用占磁盘空间增大了很多!本身Processing程序编译出来的字节码.class很小。还有个细节,我这里的截图是针对x64的,是64位版Processing导出,如果需要x86也就是32位版需要下载对应版本的Processing导出。
接下来看一下导出之后的目录文件及文件夹的样子。


可以看到默认命名application.windows32、application.windows64两个文件夹被创建。其中的32位版是不包含JRE的,而64位版下面的java命名的文件夹就是JRE环境,默认大小186MB。其他的还有data文件夹,包含pde文件中所调资源的文件,如图片、视频、文本等;lib文件夹包含了java包文件.jar,如下图:

其中的Particles_guanfang.jar就是我们使用pde写的代码生成的字节码(逻辑),其他的都是Processing运行环境所需的功能包,特别是渲染部分opengl组件还有Processing自己的核心逻辑core;source文件夹中包含了源代码,包括.pde和自动填写的.java代码:

还有一个最重要的文件.exe可执行文件。至此官方给出的输出应用方案导出最后的结果就是上面看到的这些文件和文件夹。实质上官方也是借一个叫Launch4J的框架来生成相应的可执行应用程序。该框架免费使用,我们也可以单独使用它,选择需要输出的java源文件然后跟着向导推进,很方便就可导出exe可执行文件。而pde文件是独立于java语言系统的,要让其工作正常,就得需要.java源代码,这就为什么在source文件夹会多出一个自己补充填写好的.java文件。此文件代码内容容纳所有pde代码内容,使用标准的入口函数执行程序。
要发布,可以把application.windows64这个文件夹打包然后分享,用户只需要解包后进目录双击打开exe文件就能顺利运行程序。
应用程序的优化
说了那么多,并没有提到优化问题。
【1】如果需要再封装,方便用户安装、卸载、管理,可以参考笔者的一篇关于安装包制作的分享文章:
【软件推荐】针对Windows平台的安装包制作工具汇总·自动化部署·打包软件
【2】看一看小小的官方例子打包出来的容量大小:

挺大的,是不是,相对其他商业软件而言,啊这~~~
试一试怎么瘦身。看一看哪里是大头!很显然,就是JRE环境包,整整186MB!能不能让他变得小巧一些但不失能力。答案是可以的,网上有不少相关资料,还有现成的“精简版JRE"供下载,试了一试,并不可行,Processing有他自己的封装,跟标准环境还有点出入,这个回头再探讨。总之可以参考我的做法:
①找到java下面的bin文件夹,删除jfxwebkit.dll这个文件!
②找到java下面的lib文件夹,删除ext文件夹!
这两个容量占比很大,删除后整个JRE变成100多MB,小了不少!还想减去也可以就得拆包,或者一个个小文件尝试删除而不影响运行,比较麻烦了。当然啦,如果打包了其实包大小还可以,比如采用精简版JRE后的压缩包大小为42.9MB,还算可以吧!
【3】如果输出多个PDE应用,则可以合并打包。如图:

怎么做到的?另外的多个PDE工程同样【文件-输出程序】,不用勾选JRE环境包了,导出之后,将文件夹中的所有文件及文件夹一起拷贝或剪切到第一个应用文件夹中,会有一些重复的文件,替换即可!这样就会自动合并。实际上是把对应程序的jar包放入指定文件夹中,还有data资源文件夹中的内容,还有最重要的exe文件统统合在一起了。当然source源代码如果不想分享出去也可删除、忽略。这样的做法,统一管理,也能很有效地降低了冗余数据,控制大小。回头可以借安装包的发布,生成一些快捷方式方便用户使用、运行和卸载。
小结
还有很多值得聊,比如可以增设批处理执行程序.bat、.vbs、ps1等来统一管理应用;嵌入其他开发平台、应用软件中;手动打包导出应用等。慢慢来吧。希望能帮到读者,感谢。
关于Processing开发应用及发布分享的一些经验分享的更多相关文章
- 我的第一个自动刷作业脚本(大起大落的selenium经验分享)
起因 故事的开始是大二的上学期,有一门叫计算机结构(computer organization)的课.新教授这门课的教授在原来的政策上做了一些变动.他引入了一个叫做zybook的作业平台来确保我们能跟 ...
- 【原创经验分享】JQuery(Ajax)调用WCF服务
最近在学习这个WCF,由于刚开始学 不久,发现网上的一些WCF教程都比较简单,感觉功能跟WebService没什么特别大的区别,但是看网上的介绍,就说WCF比WebService牛逼多少多少,反正我刚 ...
- 线上Linux服务器运维安全策略经验分享
线上Linux服务器运维安全策略经验分享 https://mp.weixin.qq.com/s?__biz=MjM5NTU2MTQwNA==&mid=402022683&idx=1&a ...
- 经验分享:如何用grep对PHP进行代码审计
这是一个常见的误解- 企业需要购买复杂和昂贵的软件来发现应用程序中安全漏洞:而这些专门的软件应用程序,无论是黑盒或白盒,开源或商业,都能很快的发现安全漏洞. 事实是:所有这些专业的漏洞扫描工具都有其特 ...
- 【老司机经验】CC2530&STM8S105二合一嵌入式学习板设计思路与经验分享
CC2530&STM8S105二合一嵌入式学习板设计思路与经验分享 1.缘起 这些年来一直在其他公司的实验箱和别人的开发板上进行教学与开发工作,总是觉得功能设计不那么合意.心里突然冒出个 ...
- 沉淀,再出发——在Ubuntu Kylin15.04中配置Hadoop单机/伪分布式系统经验分享
在Ubuntu Kylin15.04中配置Hadoop单机/伪分布式系统经验分享 一.工作准备 首先,明确工作的重心,在Ubuntu Kylin15.04中配置Hadoop集群,这里我是用的双系统中的 ...
- 【干货】Kaggle 数据挖掘比赛经验分享(mark 专业的数据建模过程)
简介 Kaggle 于 2010 年创立,专注数据科学,机器学习竞赛的举办,是全球最大的数据科学社区和数据竞赛平台.笔者从 2013 年开始,陆续参加了多场 Kaggle上面举办的比赛,相继获得了 C ...
- Splunk大数据分析经验分享
转自:http://www.freebuf.com/articles/database/123006.html Splunk大数据分析经验分享:从入门到夺门而逃 Porsche 2016-12-19 ...
- Kaggle 数据挖掘比赛经验分享(转)
原作者:陈成龙 简介 Kaggle 于 2010 年创立,专注数据科学,机器学习竞赛的举办,是全球最大的数据科学社区和数据竞赛平台.笔者从 2013 年开始,陆续参加了多场 Kaggle上面举办的比 ...
- 应用交付工程师Troubleshooting经验分享
应用交付工程师Troubleshooting经验分享 来源:http://blog.51cto.com/virtualadc/1188328 来源:http://blog.51cto.com/virt ...
随机推荐
- Pytest接口自动化测试框架Python自动化测试开发
一.引言 在软件开发过程中,接口测试是确保软件各个组件之间数据传输和功能交互正常工作的重要环节.通过接口测试,可以提高软件的整体质量和稳定性.Pytest是一个流行的Python自动化测试框架,提供了 ...
- 二进制安装Kubernetes(k8s)v1.32.0
二进制安装Kubernetes(k8s)v1.32.0 介绍 https://github.com/cby-chen/Kubernetes 开源不易,帮忙点个star,谢谢了 kubernetes(k ...
- GenericObjectPool 避免泄漏
GenericObjectPool GenericObjectPool 是 Apache Commons Pool 提供的对象池,使用的时候需要调用 borrowObject 获取一个对象,使用完以后 ...
- RedisTemplate配置的jackson.ObjectMapper里的一个enableDefaultTyping方法过期解决
1.前言 最近升级SpringBoot,从2.1.6版本升级到2.2.6版本,发现enableDefaultTyping方法过期过期了. 该方法是指定序列化输入的类型,就是将数据库里的数据安装一定类型 ...
- java 随机生成字符串 RandomStringUtils
使用RandomStringUtils,可以选择生成随机字符串,可以是全字母.全数字或自定义生成字符等等... 其最基础的方法如下: public static String random(int c ...
- .NET 9 中的 多级缓存 HybridCache
HybridCache是什么 在 .NET 9 中,Microsoft 将 HybridCache 带入了框架体系. HybridCache 是一种新的缓存模型,设计用于封装本地缓存和分布式缓存,使用 ...
- 在命令中输入信息创建maven项目
参考链接: 1.使用命令行创建maven web项目 2.Maven 三种archetype说明 3.maven创建项目时在generating project in interactive mode ...
- 即时通讯技术文集(第39期):推送技术合集(Part1) [共18篇]
为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第 39 期. [- 1 -] iOS的推送服务APNs详解:设计思路.技术原理及缺陷等 [链接 ...
- Python 潮流周刊#84:2024 年 Python 的最佳实践(摘要)
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...
- WPF create Flower shape
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...