我为什么使用Linux做开发
目前市面上主流的桌面操作系统在大多数人眼里只有Windows和MacOS,那为什么我没选择它们两呢? 首先,不选MacOS的原因,就是太贵。当然这是我的原因不是苹果的原因,我最早使用Linux写代码的时候是2018年,那时候刚毕业上班不久,根本买不起Mac(虽然现在也觉得有点贵)。 在没有接触Linux之前,我也是使用Winows的。众所周知,其实Windows也是收费的,那时候用的基本是破解版本的Windows系统。虽然当时买笔记本电脑会预装Windows系统,但是预装的基本都是家庭版。依稀记得当时Windows家庭版无法开启某些Windows功能(没记错的话当时是无法开启Windows的虚拟化功能),所以就算我买了预装Windows系统的笔记本电脑,依然还是需要自行重装Windows专业版系统,那时候就是使用激活软件破解Windows专业版。但是作为程序员,我个人是很反感破解软件的,因为我不想以后我写的软件也被别人破解。然后在某些机缘巧合之下,我加入了一些Linux爱好者社区,慢慢开始接触Linux桌面。 我第一次接触Linux是大学的课程,那时候教学用的是Centos。那时候在我印象中Linux就是黑乎乎的命令行窗口,只能部署一些服务端的的程序,毕业以后从事Java后端开发,接触的Linux也是服务端版本,所以我根本不知道Linux还有桌面环境! 直到一次偶然的机会,在B站刷到一位大佬自己整活的Linux桌面,相当个性化,让我深受震撼。然后就开始根据视频信息去搜索Linux桌面相关的知识,也因此加入了一些Linux社区,从此开始我的Linux桌面探险之旅。 在开始介绍我的Linux探险之旅前,先简单说一下Linux的组成,Linux的组成部分可以分为以下三个主要部分: Linux内核和发行版以及桌面环境的组合提供了所需的完整Linux桌面系统。用户可以根据自己的需要选择合适的发行版和桌面环境,以满足个人偏好和特定用途。 这里再顺便提一下GNU和Linux的关系,可能大家经常会看到”GNU/Linux“这样的词汇。 GNU和Linux是两个密切相关但各自独立的概念,它们共同构成了现代Linux操作系统的基础: 「 今天谈论的Linux操作系统,通常指的是"GNU/Linux"系统,它是指使用Linux内核和GNU软件及工具的操作系统。Linux提供了操作系统的核心,即内核,而GNU提供了构建完整操作系统所需的许多基本工具和库。 但是大多数情况下,通常将整个操作系统简称为"Linux",但严格来讲,当包括了大量GNU软件的时候,它应该被称为"GNU/Linux"。 上面给大家说了,在安装Linux的时候我们需要考虑三个部分,Linux内核、发行版、桌面环境(DE)。但是发行版其实就是Linux内核+工具集,所以发行版是依赖Linux内核才能运行的。因此大多数时候你选择了一个发行版里面就包含了内核,就不需要再选择Linux内核了(安装完成后可以更换内核)。 而我第一款Linux桌面系统是Ubuntu+GNOME(DE 桌面环境)的组合。至于为什么是Ubuntu+GNOME,因为在那时候我只接触过Centos和Ubuntu。而我去网上搜索Centos和Ubuntu的桌面版本时,大多数网站都是建议Ubuntu桌面,事实上也是如此。而Ubuntu桌面版默认的桌面环境(DE)就是GNOME。 这么多年过去了,我陆续使用过很多Linux发行版和DE的不同组合。发行版使用过Manjaro、大蜥蜴、Debian、Deepin(非UOS)、Arch、CutfishOS等,桌面环境使用过GNOME、KDE、XFCE、DDE(国产Deepin DE)、I3等。目前(2024-03-11)使用的是Arch+KDE,在写这篇文章的时候刚好KDE6发布了,这几天也折腾了一下KDE6,给大家看看效果: 上面讲了我是如何选择Linux桌面的,接下来讲讲大家可能最关心的问题,那就是Linux桌面能不能像Windows和MacOS那样正常办公或者开发? Linux桌面相比Windows和MacOS目前最大的问题就是生态,我记得我刚开始使用Linux桌面的时候国内很多软件都没有Linux版本,大多数情况下都是使用Wine等技术来兼容使用Windows版本。目前情况改善了很多,目前主流的国产办公软件都有Linux版本了,比如我们常用的钉钉、飞书、腾讯会议等。QQ、微信也都出了Linux原生版本。 这里不得不吐槽一下腾讯了,QQ是2023年开始推出全平台重构版本的,在这之前的QQ Linux版本几乎就不可用;而微信截至目前(2024-3-11)还只有一个原生Linux测试版本,而且还有白名单限制仅限UOS和麒麟系的Linux发行版使用。反观人家WPS,Linux版本的WPS一直都没有广告,虽然前不久WPS也官宣Windows版本去掉广告了,而且WPS Linux版本一直活跃更新,功能也不比Windows版本少。 而开发相关的软件,作为Java后端常用的Idea、DataGrip、Navicat等都有Linux版本,其他的开发工具大多数也都有Linux版本,比如VsCode。这里不得不说国外的软件在全平台支持上确实要比国内软件好太多了。 这里给大家列一下我常用的一些软件: 在这里总结一下我认为的Linux桌面的优点和缺点。 上面的优缺点我认为是对所有人都适用的,我作为Java后端使用Linux开发还有其他的优势: 以上就是我分享的为什么使用Linux做开发的经验,当然也不是劝大家使用Linux桌面,这个根据个人情况自己决定,本文只是纯经验分享。 本文使用
系统选择
重新认识Linux
Linux桌面
Linux内核(Kernel)
」
: Linux内核是操作系统的核心,负责管理硬件资源,提供系统服务,以及允许软件应用进行控制硬件的基础。它是一个由Linus Torvalds在1991年首次发布的开源软件项目,至今仍在不断的发展和更新中。
GitHub - torvalds/linux: Linux kernel source tree
。
Linux发行版(Distributions)
」
: Linux发行版是基于Linux内核的操作系统,包括了内核以及一套完整的软件和应用程序,如GNU工具集、桌面环境、办公软件等。每个发行版都可能有不同的包管理系统、默认桌面环境、预装软件、用户界面以及独特的安装和配置工具。常见的Linux发行版包括Ubuntu、Fedora、Debian、CentOS、Arch Linux、Red Hat Enterprise Linux等。
桌面环境(Desktop Environment, DE)
」
: 桌面环境是提供图形用户界面(GUI)的软件集合,使得用户可以通过图形窗口和菜单进行交互,而不是仅通过命令行。桌面环境通常包括窗口管理器、图标、工具栏、文件管理器、终端模拟器等组件。常见的桌面环境有GNOME、KDE Plasma、XFCE等。
GNU
」
: GNU是一个自由软件操作系统项目,由Richard Stallman在1983年启动,目的是创建一个完全由自由软件组成的操作系统。"GNU"是"GNU's Not Unix"的递归缩写,表明GNU虽然类似于Unix,但不包含任何Unix代码。GNU项目创建了许多用于操作系统的核心组件,如GNU Compiler Collection (GCC)、GNU C Library (glibc)和GNU Core Utilities (coreutils)。GNU项目也提倡自由软件哲学,推动了GNU通用公共许可证(GPL)的编制和普及。
那些年我折腾过的Linux桌面
使用Linux遇到的问题?
功能
软件名称
官方地址
截图
Flameshot
https://flameshot.org/
邮件
Mailspring
https://www.getmailspring.com/
文件管理
Spacedrive
https://github.com/spacedriveapp/spacedrive
文档处理
Wps
https://www.wps.com/office/linux/
看图
Gthumb
https://github.com/GNOME/gthumb
SSH
Xterminal
https://xterminal.cn/
视频剪辑
Kdenlive
https://kdenlive.org/zh/
字幕
Arctime
https://arctime.org/
Java IDE
IntelliJ IDEA
https://www.jetbrains.com/idea/
DataBase IDE
DataGrip
https://www.jetbrains.com/datagrip/
Vpn
V2raya
https://v2raya.org/
输入法
Rime + Fcitx5
https://rime.im/
文本编辑
Neovim
https://neovim.io/
系统备份
Timeshift
https://github.com/linuxmint/timeshift
接口测试
Insomnia
https://insomnia.rest/
Redis客户端
Redisinsight
https://github.com/RedisInsight/RedisInsight
终端
Warp
https://www.warp.dev/
Linux桌面的优缺点
markdown.com.cn
排版