现在Java桌面应用程序能做到什么程度(SpringBoot+JavaFX2开发)

内容目录

  • Spring Boot – JavaFX 2.0应用
  • 技术背景 – Java 8的新特性之JavaFX2.0
  • Spring Boot+JavaFX2 Demo介绍
  • 示例代码

Spring Boot – JavaFX 2.0应用

很多人对Java开发native程序第一反应还停留在暗灰色单一风格的Java GUI界面,开发方式还停留在AWT或者Swing。本文主要基于SpringBoot和JavaFX开发一个Demo给你展示Java Native应用可以做到什么样的程度。当然JavaFX 2.0没有流行起来也是有原因的,而且目前native的选择很多,前端是个框架都会搞个native… @pdai

技术背景 – Java 8的新特性之JavaFX2.0

全新现代主题:Modena

新的Modena主题来替换原来的Caspian主题。不过在Application的start()方法中,可以通过setUserAgentStylesheet(STYLESHEET_CASPIAN)来继续使用Caspian主题。

参考http://fxexperience.com/2013/03/modena-theme-update/

用于 CSS 结构的公共 API

  • CSS 样式设置是 JavaFX 的一项主要特性
  • CSS 已专门在私有 API 中实现(com.sun.javafx.css 软件包)
  • 多种工具(例如 Scene Builder)需要 CSS 公共 API
  • 开发人员将能够定义自定义 CSS 样式

WebView 增强功能

  • Nashorn JavaScript 引擎 https://blogs.oracle.com/nashorn/entry/open_for_business
  • WebSocket http://javafx-jira.kenai.com/browse/RT-14947
  • Web Workers http://javafx-jira.kenai.com/browse/RT-9782

JavaFX Scene Builder 2.0

可视化工具,加速JavaFX图形界面的开发:

JavaFX Scene Builder如同NetBeans一般,通过拖拽的方式配置界面,待完成界面之後,保存为FXML格式文件,此文件以XML描述物件配置,再交由JavaFX程式处理,因此可減少直接以JavaFX编写界面的困難度。

JavaFX Scene Builder 2.0新增JavaFX Theme预览功能,菜单「Preview」→「JavaFX Theme」选择不同的主題,包括:

  • Modena (FX8).
  • Modena Touch (FX8).
  • Modena High Contrast – Black on White (FX8).
  • Modena High Contrast – White on Black (FX8).
  • Modena High Contrast – Yellow on Black (FX8).
  • Caspian (FX2).
  • Caspian Embedded (FX2).
  • Caspian Embedded QVGA (FX2).

JavaFX 3D

在JavaFX8中提供了3D图像处理API,包括Shape3D (Box, Cylinder, MeshView, Sphere子类),SubScene, Material, PickResult, LightBase (AmbientLight 和PointLight子类),SceneAntialiasing等。Camera类也得到了更新。从JavaDoc中可以找到更多信息。

富文本

强化了富文本的支持

TreeTableView

TreeTable支持

日期控件DatePicker

增加日期控件

Spring Boot+JavaFX2 Demo介绍

程序加载 – Loader

和WEB一样风格的GUI

对话框 – Popup

Web应用嵌入 – Webview

多种主题切换 – Theme

消息及配置悬浮框 – Message/Configuration…

全屏最大化最小化 – FullScreen/Max/Min/Close

包括全屏是基于JavaFX的一个组件,不是原生。

PC桌面客户端软件开发工具

PC桌面软件系统曾经是软件的主要展现形式,工作中常用的office软件就是最常见的桌面客户端。虽然现在浏览器软件已经非常多见,但桌面客户端仍然占有很重要的位置。在一些对网络要求高且稳定性有一定要求的场景还是使用桌面客户端。今天和大家分享这方面的知识,希望大家能够喜欢。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。

PC桌面软件开发工具有很多,下面列举几个常用的工具及其特点:

1. Visual Studio是微软公司推出的一款集成开发环境(IDE),支持多种编程语言,如C++、C#、VB.NET等。Visual Studio具有强大的调试功能、智能提示、代码重构等特点,适合开发大型软件系统。

2. Eclipse:是一款开源的集成开发环境,支持多种编程语言,如Java、C++、Python等。Eclipse具有丰富的插件和扩展功能,可以满足不同开发需求。

3. NetBeans:是一款开源的集成开发环境,主要用于Java开发。NetBeans具有强大的代码编辑器、调试器、GUI设计器等功能,适合开发Java桌面应用程序。

4. Qt Creator:是一款跨平台的集成开发环境,主要用于C++开发。Qt Creator具有丰富的GUI设计器、调试器、代码编辑器等功能,适合开发跨平台的桌面应用程序。

5. Delphi:是一款集成开发环境,主要用于Pascal语言开发。Delphi具有强大的可视化设计工具、调试器、代码编辑器等功能,适合开发Windows桌面应用程序。

以上是几个常用的PC桌面软件开发工具,每个工具都有其独特的特点和优势,开发者可以根据自己的需求选择合适的工具进行开发。

Java 快速开发几 MB 独立 EXE,写图形界面很方便

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

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

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

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

默认只要在 aardio 中调用

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

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

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

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

就可以在软件中嵌入一个精简版的 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 范例( 可以直接运行 )。

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

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

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

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

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

示例:

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

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

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

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

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

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

举个例子:

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

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

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。