我爲什麽使用Linux做開發?

數據智能相依偎 2024-04-14 07:11:00

系統選擇

目前市面上主流的桌面操作系統在大多數人眼裏只有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的組成部分可以分爲以下三個主要部分:

Linux內核(Kernel): Linux內核是操作系統的核心,負責管理硬件資源,提供系統服務,以及允許軟件應用進行控制硬件的基礎。它是一個由Linus Torvalds在1991年首次發布的開源軟件項目,至今仍在不斷的發展和更新中。Linux發行版(Distributions): Linux發行版是基于Linux內核的操作系統,包括了內核以及一套完整的軟件和應用程序,如GNU工具集、桌面環境、辦公軟件等。每個發行版都可能有不同的包管理系統、默認桌面環境、預裝軟件、用戶界面以及獨特的安裝和配置工具。常見的Linux發行版包括Ubuntu、Fedora、Debian、CentOS、Arch Linux、Red Hat Enterprise Linux等。桌面環境(Desktop Environment, DE): 桌面環境是提供圖形用戶界面(GUI)的軟件集合,使得用戶可以通過圖形窗口和菜單進行交互,而不是僅通過命令行。桌面環境通常包括窗口管理器、圖標、工具欄、文件管理器、終端模擬器等組件。常見的桌面環境有GNOME、KDE Plasma、XFCE等。

Linux內核和發行版以及桌面環境的組合提供了所需的完整Linux桌面系統。用戶可以根據自己的需要選擇合適的發行版和桌面環境,以滿足個人偏好和特定用途。

這裏再順便提一下GNU和Linux的關系,可能大家經常會看到”GNU/Linux“這樣的詞彙。

GNU和Linux是兩個密切相關但各自獨立的概念,它們共同構成了現代Linux操作系統的基礎:

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。這裏不得不說國外的軟件在全平台支持上確實要比國內軟件好太多了。

這裏給大家列一下我常用的一些軟件:

Linux桌面的優缺點

在這裏總結一下我認爲的Linux桌面的優點和缺點。

優點:

開源免費,無論是Windows還是MacOS都是收費的,而Linux是開源免費的,開源項目總比閉源項目在安全性上更可靠。發行版衆多,Linux有很多發行版,可以根據自己的喜好選擇不同的發行版,不會像Windows和MacOS那樣被一家公司或者組織束縛。自由度高,Linux上面你可以隨便折騰,一個發行版可以換不同的桌面環境,不會像Windows和MacOS那樣只有一個桌面環境,而且桌面環境可以高度個性化。穩定性好,Linux的穩定性比Widnows要好很多,這也是服務器操作系統大多數都是Linux的原因之一。技術支持好,這個跟發行版有很大的關系,比如我正在使用的Arch Linux,有非常完善的Wiki系統,而且有非常活躍的社區。當你在使用中出現問題,絕大多數情況下你都可以在Arch wiki上找到解決方案,極少數找不到解決方案的問題你也可以在Arch社區發帖提問,會有很多熱心的大佬給你提供建議和幫助。這點我想如果你不是Widnows企業用戶的話估計很難得到技術支持。

缺點:

軟件生態差,目前Linux相比Windows和MacOS最大的問題就是軟件應用生態不足了,但是如果只是普通辦公和開發也完全足夠了。對新手不友好,雖然Linux桌面環境已經在努力改善了,但是依然會出現很多和開發相關的名詞和知識,對于非計算機行業的朋友可能不太友好。遊戲支持差,對于喜歡玩遊戲的朋友來說,Linux就不適合了,雖然Steam也有Linux版,但是裏面可玩的遊戲很少。

上面的優缺點我認爲是對所有人都適用的,我作爲Java後端使用Linux開發還有其他的優勢:

容器化技術原生支持,比如Docker,就是使用Linux命名空間(namespaces)和資源隔離(CGroups)實現的。減少代碼部署中的不必要異常,Linux上寫的Java代碼直接部署在Linux服務器上能避免一些操作系統差異引起的bug,雖然Java號稱跨平台的,但是還是可能會因爲一些操作系統上的差異導致的bug。比如Tomcat默認端口是80,如果你在Widnows上開發是能正常運行的,但是你將寫好的程序打包到Linux上以非root用戶是無法運行的,因爲Linux上1024以下的端口是普通用戶無法使用的。能學習更多的Linux知識,對于工作中需要使用Linux的人來說,這確實能提升技術能力。

以上就是我分享的爲什麽使用Linux做開發的經驗,當然也不是勸大家使用Linux桌面,這個根據個人情況自己決定,本文只是純經驗分享。

轉載自:cnblogs.com/lvlaotou/p/18066245

2 阅读:771
评论列表
  • 2024-04-14 19:10

    不知所謂,用Linux,誰關心桌面環境啊

  • 2024-04-21 19:31

    這逼讓你裝的

  • 2024-04-23 11:01

    開發什麽?天天就是安裝系統,配置環境,備份轉移文件了[呲牙笑]

  • 2024-05-27 20:03

    僅僅是工具,除非你要去研究操作系統,不然用啥都無所謂,只要能達到目的

數據智能相依偎

簡介:感謝大家的關注