关于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 ...
随机推荐
- OpenEuler安装MongoDB并配置访问密码
1. 下载MongoDB.安装 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-4.4.18.tgz tar zxv ...
- 基于.NET WinForm开发的一款硬件及协议通讯工具
前言 今天大姚给大家分享一款基于.NET WinForm开发的一款硬件及协议通讯工具:PLC-CommunTools. 项目介绍 PLC-CommunTools是一款基于.NET WinForm开发的 ...
- 渗透测试-前端加密分析之RSA加密登录(密钥来源服务器)
本文是高级前端加解密与验签实战的第6篇文章,本系列文章实验靶场为Yakit里自带的Vulinbox靶场,本文讲述的是绕过RSA加密来爆破登录. 分析 这里的代码跟上文的类似,但是加密的公钥是通过请求服 ...
- shell学习之路——取参数
shell中参数的调用方式: 1.$0-9:表示第0个到第9个参数,其中$0表示文件执行路径.如:$0,$1. 2.${10以后}:如果参数数目大于9个,可以用${10},${11}...等方式表示. ...
- Qt设置运行时动态库路径的几点说明
随着需求的不断增加,程序不断变大,用到的动态库也越来越多,到了发布程序的时候你会发现和可执行文件同一目录下文件数量真多(比如著名的金融软件 https://www.webull.com/ 哎呀我去,目 ...
- 国产系统UOS上的视频监控系统
一.功能特点 (一)软件模块 视频监控模块,各种停靠小窗体子模块,包括设备列表.图文警情.窗口信息.云台控制.预置位.巡航设置.设备控制.悬浮地图.网页浏览等. 视频回放模块,包括本地回放.远程回放. ...
- [转]快速搭建简单的LBS程序——地图服务
很多时候,我们的程序需要提供需要搭建基于位置的服务(LBS),本文这里简单的介绍一下其涉及的一些基本知识. 墨卡托投影 地图本身是一个三维图像,但在电脑上展示时,往往需要将其转换为二维的平面图形,需要 ...
- ArrayList源码解析-JDK18
引言 ArrayList在JDK1.7和1.8中的差距并不大,主要差距以下几个方面: JDK1.7 在JDK1.7中,使用ArrayList list = new ArrayList()创建List集 ...
- WPF create Flower shape
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- MySQL 中information_schema、mysql、performance_schema、sys 简介
一.information_schema简介在MySQL中,把 information_schema 看作是一个数据库,确切说是信息数据库.其中保存着关于MySQL服务器所维护的所有其他数据库的信息. ...