我为什么使用Linux做开发

这篇具有很好参考价值的文章主要介绍了我为什么使用Linux做开发。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系统选择


目前市面上主流的桌面操作系统在大多数人眼里只有Windows和MacOS,那为什么我没选择它们两呢?

首先,不选MacOS的原因,就是太贵。当然这是我的原因不是苹果的原因,我最早使用Linux写代码的时候是2018年,那时候刚毕业上班不久,根本买不起Mac(虽然现在也觉得有点贵)。

在没有接触Linux之前,我也是使用Winows的。众所周知,其实Windows也是收费的,那时候用的基本是破解版本的Windows系统。虽然当时买笔记本电脑会预装Windows系统,但是预装的基本都是家庭版。依稀记得当时Windows家庭版无法开启某些Windows功能(没记错的话当时是无法开启Windows的虚拟化功能),所以就算我买了预装Windows系统的笔记本电脑,依然还是需要自行重装Windows专业版系统,那时候就是使用激活软件破解Windows专业版。但是作为程序员,我个人是很反感破解软件的,因为我不想以后我写的软件也被别人破解。然后在某些机缘巧合之下,我加入了一些Linux爱好者社区,慢慢开始接触Linux桌面。

重新认识Linux


我第一次接触Linux是大学的课程,那时候教学用的是Centos。那时候在我印象中Linux就是黑乎乎的命令行窗口,只能部署一些服务端的的程序,毕业以后从事Java后端开发,接触的Linux也是服务端版本,所以我根本不知道Linux还有桌面环境!

直到一次偶然的机会,在B站刷到一位大佬自己整活的Linux桌面,相当个性化,让我深受震撼。然后就开始根据视频信息去搜索Linux桌面相关的知识,也因此加入了一些Linux社区,从此开始我的Linux桌面探险之旅。

Linux桌面


在开始介绍我的Linux探险之旅前,先简单说一下Linux的组成,Linux的组成部分可以分为以下三个主要部分:

  1. Linux内核(Kernel): Linux内核是操作系统的核心,负责管理硬件资源,提供系统服务,以及允许软件应用进行控制硬件的基础。它是一个由Linus Torvalds在1991年首次发布的开源软件项目,至今仍在不断的发展和更新中。GitHub - torvalds/linux: Linux kernel source tree。
  2. Linux发行版(Distributions): Linux发行版是基于Linux内核的操作系统,包括了内核以及一套完整的软件和应用程序,如GNU工具集、桌面环境、办公软件等。每个发行版都可能有不同的包管理系统、默认桌面环境、预装软件、用户界面以及独特的安装和配置工具。常见的Linux发行版包括Ubuntu、Fedora、Debian、CentOS、Arch Linux、Red Hat Enterprise Linux等。
  3. 桌面环境(Desktop Environment, DE): 桌面环境是提供图形用户界面(GUI)的软件集合,使得用户可以通过图形窗口和菜单进行交互,而不是仅通过命令行。桌面环境通常包括窗口管理器、图标、工具栏、文件管理器、终端模拟器等组件。常见的桌面环境有GNOME、KDE Plasma、XFCE等。

Linux内核和发行版以及桌面环境的组合提供了所需的完整Linux桌面系统。用户可以根据自己的需要选择合适的发行版和桌面环境,以满足个人偏好和特定用途。

这里再顺便提一下GNU和Linux的关系,可能大家经常会看到”GNU/Linux“这样的词汇。

GNU和Linux是两个密切相关但各自独立的概念,它们共同构成了现代Linux操作系统的基础:

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操作系统,通常指的是"GNU/Linux"系统,它是指使用Linux内核和GNU软件及工具的操作系统。Linux提供了操作系统的核心,即内核,而GNU提供了构建完整操作系统所需的许多基本工具和库。

但是大多数情况下,通常将整个操作系统简称为"Linux",但严格来讲,当包括了大量GNU软件的时候,它应该被称为"GNU/Linux"。

那些年我折腾过的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桌面的,接下来讲讲大家可能最关心的问题,那就是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。这里不得不说国外的软件在全平台支持上确实要比国内软件好太多了。

这里给大家列一下我常用的一些软件:

功能 软件名称 官方地址
截图 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桌面的优缺点


在这里总结一下我认为的Linux桌面的优点和缺点。

  • 优点:
    1. 开源免费,无论是Windows还是MacOS都是收费的,而Linux是开源免费的,开源项目总比闭源项目在安全性上更可靠。
    2. 发行版众多,Linux有很多发行版,可以根据自己的喜好选择不同的发行版,不会像Windows和MacOS那样被一家公司或者组织束缚。
    3. 自由度高,Linux上面你可以随便折腾,一个发行版可以换不同的桌面环境,不会像Windows和MacOS那样只有一个桌面环境,而且桌面环境可以高度个性化。
    4. 稳定性好,Linux的稳定性比Widnows要好很多,这也是服务器操作系统大多数都是Linux的原因之一。
    5. 技术支持好,这个跟发行版有很大的关系,比如我正在使用的Arch Linux,有非常完善的Wiki系统,而且有非常活跃的社区。当你在使用中出现问题,绝大多数情况下你都可以在Arch wiki上找到解决方案,极少数找不到解决方案的问题你也可以在Arch社区发帖提问,会有很多热心的大佬给你提供建议和帮助。这点我想如果你不是Widnows企业用户的话估计很难得到技术支持。
  • 缺点:
    1. 软件生态差,目前Linux相比Windows和MacOS最大的问题就是软件应用生态不足了,但是如果只是普通办公和开发也完全足够了。
    2. 对新手不友好,虽然Linux桌面环境已经在努力改善了,但是依然会出现很多和开发相关的名词和知识,对于非计算机行业的朋友可能不太友好。
    3. 游戏支持差,对于喜欢玩游戏的朋友来说,Linux就不适合了,虽然Steam也有Linux版,但是里面可玩的游戏很少。

上面的优缺点我认为是对所有人都适用的,我作为Java后端使用Linux开发还有其他的优势:

  1. 容器化技术原生支持,比如Docker,就是使用Linux命名空间(namespaces)和资源隔离(CGroups)实现的。
  2. Linux上写的Java代码直接部署在Linux服务器上能避免一些操作系统差异引起的bug,虽然Java号称跨平台的,但是还是可能会因为一些操作系统上的差异导致的bug。比如Tomcat默认端口是80,如果你在Widnows上开发是能正常运行的,但是你将写好的程序打包到Linux上以非root用户是无法运行的,因为Linux上1024以下的端口是普通用户无法使用的。
  3. 能学习更多的Linux知识,对于工作中需要使用Linux的人来说,这确实能提升技术能力。

以上就是我分享的为什么使用Linux做开发的经验,当然也不是劝大家使用Linux桌面,这个根据个人情况自己决定,本文只是纯经验分享。

本文使用 markdown.com.cn 排版文章来源地址https://www.toymoban.com/news/detail-838610.html

到了这里,关于我为什么使用Linux做开发的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 为什么超过500万开发者选择了ASP.NET Core?

    为什么超过500万开发者选择了ASP.NET Core?

    ASP.NET Core 是一个新的开源和跨平台的框架,用于构建如 Web 应用、物联网(IoT)应用和移动后端应用等连接到互联网的基于云的现代应用程序。 ASP.NET Core 应用可运行于 .NET Core 和完整的 .NET Framework 之上。构建它的目的是为那些部署在云端或者内部运行(on-premises)的应用提供

    2024年02月04日
    浏览(11)
  • winform使用SetParent 嵌入excel,打开的excel跟随dpi 25%*125%缩放了两次,目前微软官方没有好的解决方案,为什么

    双重缩放问题在将 Excel 嵌入到 WinForm 中时确实可能会出现,这是因为两个不同的应用程序(WinForm 和 Excel)之间的 DPI 缩放逻辑不一致,导致双重缩放的结果。 在 Windows 操作系统中,DPI 缩放是一种全局的设置,用于适应高 DPI 显示设备,从而提高显示元素的大小。当您将 Ex

    2024年02月14日
    浏览(13)
  • 为什么选择C/C++内存检测工具AddressSanitizer?如何使用AddressSanitizer?

    目录 1、C++程序中的内存问题 2、AddressSanitizer是什么? 3、AddressSanitizer内存检测原理简述

    2024年02月09日
    浏览(9)
  • 为什么 Golang Fasthttp 选择使用 slice 而非 map 存储请求数据

    为什么 Golang Fasthttp 选择使用 slice 而非 map 存储请求数据

    Fasthttp 是一个高性能的 Golang HTTP 框架,它在设计上做了许多优化以提高性能。其中一个显著的设计选择是使用 slice 而非 map 来存储数据,尤其是在处理 HTTP headers 时。 为什么呢? 本文将从简单到复杂,逐步剖析为什么 Fasthttp 选择使用 slice 而非 map,并通过代码示例解释这一

    2024年01月22日
    浏览(11)
  • 为什么不用Go开发操作系统?

    为什么不用Go开发操作系统?

      操作系统 (OS) 是计算机系统的心脏和灵魂,它管理着计算机的硬件和软件资源,并为用户提供与计算机交互的方式。传统上,C 和 Assembly 等语言因其低开销和 “接近机器码” 的特性而被用于开发操作系统。 但诸如 Go 等高级语言的兴起引入了一些特性,这些特性或许可以使

    2024年02月06日
    浏览(19)
  • 为什么很多程序员喜欢linux系统?

    a Linux哪些行业在运用? Linux系统运用极其广泛,不少用户只知道windows,是因为,Linux的运用主要是在企业端。现在科技极其发达,我们手机在手,就能干很多事情,只需点一点屏幕,轻松完成聊天、娱乐、甚至支付功能。这些操作看似简单,但其背后,有一系列复杂请求和响

    2024年02月03日
    浏览(16)
  • 【Linux(0)】为什么要学习Linux,为什么互联网公司在招聘时,会提出要有Linux经验,及其使用;一些Linux常见指令

    【Linux(0)】为什么要学习Linux,为什么互联网公司在招聘时,会提出要有Linux经验,及其使用;一些Linux常见指令

    💓作者简介: 加油,旭杏,目前大二,正在学习 C++ , 数据结构 等👀 💓作者主页:加油,旭杏的主页👀 ⏩本文收录在:再识C进阶的专栏👀 🚚代码仓库:旭日东升 1👀 🌹欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖        在学习完C语言后,紧接着,我们要来 学习Li

    2024年02月05日
    浏览(11)
  • 为什么建议使用虚拟机来安装Linux?

    个人认为,通过虚拟机软件学习是初学者学习 Linux 的最佳方式。 在与部分初学者的交流中,我发现很多初学者都认为,学习 Linux 就必须将自己的电脑装成 Linux 系统或者必须要有真正的服务器设备。而实际上,这是一些机构、书籍或网络文章给大家传导的错误思想。 其实,

    2024年02月08日
    浏览(12)
  • 为什么选择新风机?

    为什么选择新风机?

      现如今,新风机已经是很多场地的熟客了,那大家可能疑惑为什么选择新风机呢?那就让我揭晓答案吧!新风机有很多益处,让我大致简述一下吧。 改善室内空气质量:新风机能够引入新鲜的外界空气,并排除室内的污浊空气,有效净化空气,降低颗粒物、细菌、异味等有

    2024年02月11日
    浏览(15)
  • Java开发手册中为什么禁止使用BigDecimal的equals方法做等值比较已经为什么禁止使用double直接构造BigDecimal

    Java开发手册中为什么禁止使用BigDecimal的equals方法做等值比较已经为什么禁止使用double直接构造BigDecimal

    阿里Java开发手册嵩山版中明确指出: 1、BigDecimal的等值比较应使用compareTo()方法,而不是equals()方法 equals()方法会比较值和精度(1.0与1.00返回结果为false),而compareTo()则会忽略精度 2、禁止使用构造方法BigDecimal(double)的方式把double值转换为BigDecimal对象 BigDecimal(double)存在精度损

    2024年02月07日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包