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年12月27日
    0
  • 长沙软件园有限公司官网(长沙管理软件)

    长沙管理软件 长沙管理软件是指用于管理企业或组织的软件系统。这些系统可以帮助企业或组织实现各种目标,包括财务管理,供应链管理,人力资源管理,客户服务,销售管理等等。 长沙管理软件行…

    科研百科 2024年9月1日
    28
  • 免费办公协同

    免费办公协同:让工作更高效 随着现代企业的快速发展,工作压力越来越大,传统的工作方式已经无法满足现代办公的需求。因此,免费办公协同工具成为了现代办公的重要选择。本文将介绍免费办公协…

    科研百科 2025年1月3日
    0
  • 合同管理工作怎么样(合同管理简介)

    合同管理简介 合同管理是管理合同的过程,包括合同的起草、审查、签署、执行和解决纠纷等步骤。合同管理可以帮助组织确保合同的有效性和合法性,并减少合同执行过程中的风险和纠纷。 合同管理…

    科研百科 2024年6月5日
    76
  • 无人机工程进度规划、施工管理解决方案(无人机项目实施方案)

    应用场景:施工现场监测、工程进度规划、施工现场测绘、制作三维视图、计划道路定位线或轨道 如今工程建设领域长期采用的人工作业,不仅人员劳动强度大,而且速度慢、效率低,借助无人机的低成…

    科研百科 2022年7月30日
    822
  • jira如何收费

    jira如何收费jira如何收费:jian da dao jian dao jian ]10. make sb of sth 某些帮助某人11. prevention n.名声;名…

    科研百科 2024年11月19日
    0
  • 科室或学科团队名称

    呼吸科团队 呼吸科团队是医院中最重要的科室之一,主要负责治疗呼吸系统疾病,包括哮喘、慢性阻塞性肺疾病、肺炎、肺动脉高压、呼吸衰竭等。我们的团队成员由一群富有经验和热情的医生和护士组…

    科研百科 2024年10月10日
    16
  • 收到科研经费会计分录(收到科研项目款要交税吗吗)

    收到科研项目款是否要交税,这个问题并不简单,因为涉及到不同的国家和地区的税收政策。一般情况下,如果收到科研项目款的方式是直接支付到个人或公司的账户上,那么需要根据当地的税收政策来判…

    科研百科 2024年4月10日
    133
  • 目前为止,最通俗易懂的介绍项目管理的PPT(项目管理的概述)

    近期热文: 百万年薪PMO&项目经理职场影响力是如何炼成的?【精华笔记】 PMO&项目经理如何高效解决问题看这篇文章就够了 一图掌握项目管理的核心工具WBS工作分解…

    科研百科 2022年10月5日
    147
  • Oracle项目管理系统之质量管理(oracle 项目管理)

    卷首语 质量管理是指工程项目从项目可研到项目竣工验收全生命周期内全面的质量控制和管理。 质量管理 质量管理是指工程项目从项目可研到项目竣工验收全生命周期内全面的质量控制和管理。包括…

    科研百科 2023年8月8日
    126