Java桌面开发能找到工作吗?(完结)




Java 桌面开发能找到工作吗?(完结)
前言
不得不承认,现在已经是 Web 时代,或者移动互联网时代,PC 的桌面应用开发大部分也
都局限在行业应用软件上,比如说生产力效率提升的工具类的桌面应用(postman、
Intellij IDEA 等等)。
那 Web 盛行的今天,桌面应用开发还有意义吗?
当然有意义啦,因为我们在用的很多工具都属于桌面应用开发的范畴,比如说前面提到的
postman、Intellij IDEA 等。
包括最近要替代 postman 的国产软件 apipost 等等,都属于桌面应用。
• Mail(outlook 等)
• IDE(IntelliJ/WebStorm/VSCode/PyCharm……)
• 浏览器(chrome/Firefox/opera……)
• 办公套装(MSOffice/WPS/Adobe 系列/PDF 查看批注……)
• 本地工具( Navicat/SwitchHost/Typora/Postman )
• 笔记思绪( OneNote/Xmind/各种 TodoList…… )
• 媒体播放( 网易云音乐/qq 音乐…… )
• 生产/工业控制(CAD,各种车间操作台…… )
• PC 游戏(绝地求生、孤岛危机、极品飞车……)
桌面应用开发常见的技术框架
框架/类库
Qt(C++图形用户界面应用程序开发框架)
WPF(微软用户界面框架)
WinForm
MFC(微软类库)
Swing/JavaFx/SWT
NW.js(node-webkit)
Electron
就上面这些技术框架来看,Electron 是非常有潜力的,因为只要熟悉 JavaScript、HTML、
CSS 就能构建出跨平台的桌面应用程序,尤其是 VSCode、Postman 这些背书。
• 基于 Chromium 和 Node.js
• 由 OpenJS 基金会和一个活跃的贡献者社区管理的开源项目
• 兼容 Mac、Windows 和 Linux,可以构建出三个平台的应用程序
官方文档也有中文版,比较容易入门:https://www.electronjs.org/zh/docs/latest/
和 Web 开发非常相似,看这个熟悉的影子:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -->
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-
src 'self'">
<title>Hello World!</title>
</head>
<body>
<h1>Hello World!</h1>
We are using Node.js <span id="node-version"></span>,
Chromium <span id="chrome-version"></span>,
and Electron <span id="electron-version"></span>.
</body>
</html>
再加上一些 JavaScript 代码就可以了。
const { app, BrowserWindow } = require('electron');
const createWindow = () => {
const win = new BrowserWindow({
width: 800,
height: 600,
});
win.loadFile('index.html');
};
app.whenReady().then(() => {
createWindow();
app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) {
createWindow();
}
});
});
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
});
在控制台运行后就可以看到这样的窗口应用,哈哈哈,不错不错:
fc9cd391-a68a-4c9d-94be-991f11c30ad8.png
针对 Java 同学,如果要走桌面应用路线,可选项就是 Swing/JavaFx/SWT。我们一起来看
下。
Swing/JavaFx/SWT
因为有 Eclipse/Intellij IDEA 做背书,以至于发生了这样一个奇妙的现象。
王二狗:“学校真特么垃圾,竟然还教我们学 Swing/AWT”!
王二黑:“你恐怕不是脑残吧!Intellij IDEA/Eclipse 就是用 Swing/AWT 写的啊”!
早期,Intellij IDEA 应该叫 Java IDE,它的雏形是一个叫 JBuilder 编辑器的插件 IntelliJ
Renamer。那经过二十多年的发展(Intellij IDEA 第一个 release 版本是在 2001 年),
jetbrains 也确实牛逼,不断重写 swing 的组件,造就了伟大的 jetbrains 全家桶,吊打其
他 IDE。
要知道,2000 年的时候 Qt 3.0 还没出来,要等到 2001 年 Qt 3.0 才支持 MacOS。
那想要做跨平台的 IDE,不选 Java 的 Swing 还是真的是没得选。如果真的想学 swing,不
妨看一下这个仓库:
https://github.com/itsonglin/wechat_desktop
4e8d58c7-da56-447d-af30-d1e553e0b714.png
那为什么 JB 不弃坑,选择其他桌面开发工具包呢?比如前文提到的 Electron。
一是早期的电脑性能都很垃圾,根本跑不动。二是,JB 也在研发自己的 UI 框架:
https://www.jetbrains.com/zh-cn/lp/compose-mpp/
788fd512-c461-413d-bc46-7db460473d37.png
这玩意不仅能开发桌面应用,还可以开发 Web 应用。
• Compose for Desktop 为使用 Kotlin 创建桌面应用的用户提供了一种声明和反应式方
法。并且以 JVM 为目标,通过利用强大的原生 Skia 图形库,支持 macOS、Windows
和 Linux。
a8f6ef2b-39d8-4433-bbe9-98dfd08dba55.png
• Compose for Web 提供了多种在 Kotlin 代码中声明用户界面的方式,使开发者可以利
用声明性 DOM API 来完全控制您的网站布局。
dc6f1618-ac4b-48eb-a94c-2e2a21ba3a9f.png
教程在这里:https://github.com/JetBrains/compose-jb
再来说说 JavaFX。
JavaFX 是一个开源的下一代客户端应用平台,适用于基于 Java 构建的桌面、移
动端和嵌入式系统。 它是许多个人和公司的共同努力的成果,目的是为开发丰
富的客户端应用提供一个现代、高效、功能齐全的工具包。
官网:https://openjfx.cn/
Spring Boot+JavaFX2 能开发出来这样的效果,和 WEB 一样风格的 GUI。
67702d9d-b81b-4f85-878e-8e3f5b981247.png
这里还有一个网站收集了很多 GUI 教程(包括 QT、SWT 之类的):
https://www.kancloud.cn/apachecn/zetcode-zh/1950227
JavaFX 在 GitHub 上还有一个星标 6k+ 的库:JFoenix:
https://github.com/sshahine/JFoenix
不少项目在用:
47e162ca-0e66-4a48-8d12-b9e06c450d09.png
A JavaFX Github desktop client(一个 JavaFX 做的 GitHub 桌面版客户端),挺好看的。
2a1e9180-7601-467f-872e-69732adb91f2.png
有一说一
不过说真的,Java 桌面开发的就业环境就不太理想了,除非是去 jetbrains 比较前途,国
内,我到 boss 直聘上搜了一下 Java 桌面开发,呵呵呵
几乎找不到岗位。
Electron 就比较乐观了,薪资待遇真不错。
cbd18d37-3f3d-4dbb-b1a9-c70c6f3e7ba1.png