Java 快速开发几 MB 独立 EXE,写图形界面很方便(java怎么开发exe程序)

aardio 可以支持很多编程语言, Java 就是其中之一。

aardio Java 可生成体积极小的独立 EXE 文件,可以内存加载 Java 编写的 Class 文件,用 aardio Java 生成的软件,发布时不需要携带 Java 运行时

aardio 写图形界面很方便,参考仅 755 KB 的开源软件 Gif123:

Java 快速开发几 MB 独立 EXE,写图形界面很方便(java怎么开发exe程序)

aardio 开发的程序,兼容XP,Vista,Win7,Win8Win10Win11…… 等所有系统。aardio 只支持 Windows 系统( macOS Linux 桌面市场份额小于被遗忘的 Win8 ),同时也扔掉了跨平台的沉重包袱(更轻量、更好地利用专用平台优势)。将需要跨平台的代码用 java 写,这并不影响在 Windows 上可以使用 aardio 生成 EXE 文件 。跨平台与专有平台工具并不冲突,可以相互结合。

开始

默认只要在 aardio 中调用

import java;

就会自动搜索系统可用的 JRE,如果没有找到 JRE,会自动导入 java.jre.v8 扩展库,并自动安装 OpenJDK JRE v8 。

如果您希望发布的软件自带 Java 运行时,或者指定 JRE 的版本,只要在 aardio 中导入其他版本 JRE 的扩展库就可以,例如运行

import java.jre.v8ora

就可以自动绑定 Oracle Java 8 运行时,软件运行会自动查找用户电脑上符合要求的 JRE,如果没有找到会全自动地安装和部署好,开发者要做的,仅仅就是写几句代码,把 EXE 简单地分发给用户就可以了。

当然,独立 EXE 也可以嵌入更小的 JRE,aardio 里提供了一个示例 JRE,只要简单的在代码中加入

import java.jre.v6

就可以在软件中嵌入一个精简版的 JRE 6 运行时,这个 JRE 只有 6MB 多一点,而且可以生成独立 EXE 文件,甚至还能支持 Windows XP 这种古老的系统。Java 写的桌面软件带上运行时只有 6 MB,而且还是独立 EXE 文 件,是不是难以置信?!想一想 Electron 没写多少功能就可能超过百 MB 的体积,Java 写的桌面软件算不算得上小、轻、快呢?!

现代 Java 已经可以非常方便地生成精简版的 JRE,所以你只要参考 java.jre.v6 的实现( 放心这个库的源代码只有几行 ),就可以非常轻松地更换为其他 JRE 版本,并生成极小的 EXE文件( 而且可以是独立的 EXE文件)。

好吧,我们来看几个 aardio 自带的 aardio Java 范例( 可以直接运行 )。

Java 快速开发几 MB 独立 EXE,写图形界面很方便(java怎么开发exe程序)

aardio 调用 Java 函数

首先请看下面 aardio 调用 Java 如此简单,我们可以在 aardio 中直接导入 Java 的类,创建 Java 对象,就像在 Java 代码中一样使用它们。

import console;import java;//创建 Java 虚拟机var jvm = java();//导入 Java 类HelloworldApp = jvm.import( "aardio.sample.HelloworldApp");//修改类的静态成员变量HelloworldApp.static_num = 996;//获取类的静态成员变量console.log( HelloworldApp.static_num );//直接用 Java 类创建 Java 对象,跟 Java 中一样用就行var helloworld = HelloworldApp();//获取对象的成员字段值console.log( helloworld.name );//调用对象的方法console.log( helloworld.test(1) );//调用 main 函数,参数是字符串数组var ret = HelloworldApp.main( {"aaa字符串数组1","bbb字符串数组2"} );console.log(ret);console.pause();

Java 会在 CLASSPATH 指定的搜索目录下使用 Java 类名(替换'.'为'')" 去查找类,这类似 Windows 到 %PATH% 环境变量下搜索文件。CLASSPATH 已默认添加 "/java/"以及"/java/*.jar" 在首次创建 Java 虚拟机以前,可用下面的函数添加目录到 CLASSPATH:

java.addClassPath("/java/");

以上参数指定目录下的 *.jar 也会自动添加(不递归子目录)。

也可以如下自内存或文件直接加载类,注意下面的路径前面的$操作符可将文件编译到代码中(发布后不再需要原文件)

HelloworldApp = jvm.import("aardio.sample.HelloworldApp" ,$"javaaardiosampleHelloworldApp.class");

以上文件路径前面的波浪线反斜杠(或斜杆)表示程序根目录(开发时一般指工程目录,发布后指启动EXE文件所在的目录)。

Java 调用 aardio 函数

示例:

import console;import java; //创建 Java 虚拟机var jvm = java(); //导入 Java 类HelloworldApp = jvm.import( "aardio.sample.HelloworldApp");//为 Java 提供 Native APIHelloworldApp.registerNative( function(env,jobject,jstring){ var code = jvm.parseString(jstring) //也可以用 owner.parseString(jstring) var func = loadcode(code) return jvm.string( func() ) },"aardio","string(string)") var helloworld = HelloworldApp();console.log( "Java 函数返回值",helloworld.test_aardio() );console.pause()

Java 类 HelloworldApp (在范例中可以找到)中如下声明 aardio 函数:

static native String aardio(String code);

aardio 直接运行 jar 程序

您仅需数句代码可以将 jar 导入 aardio 生成软件件。以 Java 编写的软件 FFDec 为例,原来只能自己去下载安装 JRE,现在不用这么做了,我用 aardio 写了个例子:

Java 快速开发几 MB 独立 EXE,写图形界面很方便(java怎么开发exe程序)

这个扩展库 java.ffdec 的源代码只有几句:

Java 快速开发几 MB 独立 EXE,写图形界面很方便(java怎么开发exe程序)

aardio 调用 jar 的 main 函数

我们还可以直接调用 jar 的 main 函数来运行 Java 程序,以 YUICompressor 为例:

import java;import java.yuiCompressor;java.addClassPath("~libjavayuiCompressor.resyuicompressor.jar")var jvm = java();YUICompressor = jvm.import( "com.yahoo.platform.yui.compressor.YUICompressor");var ret = YUICompressor.main({"d:test.js", "-o","d:testmin.js"})

Java 函数签名

原本调用 Java 函数要写签名,但这个签名写起来是有些累的。所以 aardio 已经把这个事情完全给优化掉了,aardio 调用 Java 一般不用再去写签名。

但是 aardio 仍然允许以声明普通静态 API 函数的语法指定 Java 函数签名 —— 然后由 aardio 自动翻译为 Java 函数签名。

举个例子:

import java;var jvm = java();//导入 Java 类HelloworldApp = jvm.import( "aardio.sample.HelloworldApp"); //getMethod 用于获取一个函数,参数 @2 指定函数签名var main = HelloworldApp.getMethod("main","string(string[])");//通过声明导入的函数,如果参数是字符串,可以把参数展开写var result = main("test1","test2")

但是上面的函数签名一般可以省略,可以简化为下面的代码:

HelloworldApp.main( { "aaa字符串数组1","bbb字符串数组2"} )

上面的示例需要的 Java 类,可以在​ aardio 自带范例里找到:

Java 快速开发几 MB 独立 EXE,写图形界面很方便(java怎么开发exe程序)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023年4月27日 上午10:38
下一篇 2023年4月27日 上午10:54

相关推荐

  • 软件开发与项目管理

    软件开发与项目管理 随着信息技术的不断发展,软件开发和项目管理已经成为了企业竞争的重要优势。在软件开发和项目管理中,软件开发与项目管理的重要性越来越受到重视。本文将介绍软件开发与项…

    科研百科 2024年9月25日
    24
  • 施工进度计划怎么做

    施工进度计划是项目管理中非常重要的一部分,它是为了确保项目按时完成,并在预定时间内交付给客户。一份好的施工进度计划需要经过认真的策划和实施,以下是一些制作施工进度计划的建议。 一、…

    科研百科 2025年1月10日
    0
  • qpcr实验步骤

    qpcr实验步骤qpcr实验步骤:1)指进入互联网企业,运用计算机程序进行计算或设计程序;2)指进入互联网企业,从事计算机工作;3)指进入互联网企业的计算机工作。qp2015n.机…

    科研百科 2024年11月19日
    0
  • 高校c1级科研项目是哪些高校c1级科研项目是哪些

    高校c1级科研项目是指那些在学术界和工业界都享有很高声誉,并且在其领域拥有广泛影响力的重要科研项目。这些项目通常由高水平的学者和研究团队组成,拥有先进的研究设备和充足的研究资源。 …

    科研百科 2024年9月4日
    36
  • 道一云低代码应用搭建

    道一云是一种低代码应用搭建平台,它为企业提供了一种简单、快速、高效的方式来开发和部署应用程序。低代码应用搭建是一种新兴的开发模式,它通过可视化的方式,将应用程序的开发过程简化为拖拽…

    科研百科 2024年3月5日
    111
  • 临洮县着力提升非公经济组织党建工作质量(如何加强非公经济组织党建工作)

    近年来,临洮县围绕创建“双抓双促型”基层党组织的总体目标,紧扣党组织政治核心作用发挥,画好非公党建“线、面、圆”,着力推动非公经济组织党建工作全面过硬、全面进步。 深化学习教育延伸…

    科研百科 2023年3月10日
    150
  • 交通运输行业重大科研项目清单交通运输行业重大科研项目清单

    交通运输行业是现代社会的重要组成部分,其发展对于人类的生产和生活都有着深远的影响。随着科技的不断进步和交通的日益繁忙,交通运输行业也面临着越来越多的挑战和机遇。 为了应对这些挑战,…

    科研百科 2024年6月13日
    88
  • 什么是低代码?(什么是低代码开发平台)

    什么是低代码? 低代码的定义:低代码是一种软件开发技术,衍生于软件开发的高级语言,让使用者通过可视化的方式以更少的编码、更快速地构建和交付应用软件,全方位降低软件的开发配置部署和培…

    科研百科 2024年5月13日
    63
  • 中国十大直播平台,第一名反而不是抖音(中国十大直播平台,第一名反而不是抖音主播)

    近几年,网络直播作为一种新兴的社交媒体,在我国是越来越火,你知道哪个平台最火吗? 排排榜 排名 直播平台名称 综合指数 1 淘宝直播 91.5 2 抖音直播 91.2 3 快手直播…

    科研百科 2024年7月25日
    53
  • 工程项目会议管理制度

    工程项目会议管理制度 在工程项目的发展过程中,会议管理是一项至关重要的工作。通过合理的会议管理,项目团队可以更好地协调沟通,更好地完成项目任务。本文将介绍一种工程项目会议管理制度,…

    科研百科 2024年10月29日
    0