关于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 ...
随机推荐
- IOS 越狱
iOS越狱 palera1n palera1n工具支持iOS 15.0 - 16.4.1版本的越狱 支持设备,最高支持到A11芯片 iPhone 8.8P.X iPad 5 .6.7,iPad Pro ...
- 无法加载文件 C:\Users\admin\AppData\Roaming\npm\anyproxy.ps1
无法加载文件 C:\Users\admin\AppData\Roaming\npm\anyproxy.ps1 我们右击开始菜单,以管理员身份打开power shell 运行命令: set-Execut ...
- 将现有的系统环境文件打包成Docker镜像文件
一.现有A系统Centos7操作: 备注:A系统里最好不安装Docker,否则会报错 卸载不必要软件包 yum remove -y iwl* *firmware* --exclude=kernel-f ...
- Qt编写跨平台RTSP/RTMP/HTTP视频流播放器
一.前言 很早以前就做过这款播放器的入门版本,最开始用的ffmpeg去解析,后面陆续用vlc播放器.mpv播放器来做,毕竟播放器提供的接口使用也很方便,而且功能强大,后面发现播放器主要的应用场景是播放 ...
- Python中的包、模块和源码的组织关系
- 不为人知的网络编程(十八):UDP比TCP高效?还真不一定!
本文由LearnLHC分享,原始出处:blog.csdn.net/LearnLHC/article/details/115268028,本文进行了排版和内容优化. 1.引言 熟悉网络编程的(尤其搞实时 ...
- 开源flux适配昇腾NPU分享,体验120亿参数AI文生图模型
这一期我们分享一位开源开发者参与flux适配昇腾NPU的实践经验,欢迎广大开发者对华为技术栈适配进行讨论. 开源适配实践 flux是一个AI图像生成模型,有120亿参数量,具有大量的用户基础,可以根据 ...
- Solution -「AGC 020F」Arcs on a Circle
\(\mathscr{Description}\) Link. 在一个周长为 \(c\) 的圆周上放置长度分别为 \(l_1,l_2,\cdots,l_n\) 的弧,每条弧的位置独立均匀随机. ...
- 十四款常见的Web前端开发框架
在做web开发的时候经常会遇到一个问题,那就是,选择什么样的框架来做前端开发.下面封程中把目前常用的一些前端的框架简单的给大家介绍一下. 1. BootstrapBoostrap绝对是目前最流行用得最 ...
- Hadoop 概述(三)
HDFS shell API HDFS作为大数据的文件系统,可以放置数据文件,列举几个常用的shell脚本命令,用法和linux中的基本类似,不过这个是hadoop里的一套,所以我们要用hadoop ...