值得關注的開源軟件推薦

看了值得關注的開源軟件推薦,感受很不錯,做者接觸開源軟件十幾年,協做開發了10多個開源項目,對開源軟件的認識和實踐確實讓人大開眼界。html

應用類:框架、企業應用、編輯器前端

數據類:數據科學、大數據、機器學習、汽車機器人java

服務類:雲計算、數據庫、消息隊列、服務器linux

系統類:操做系統、編譯器、虛擬機、編程語言git

做者按上面四類介紹了45個開源軟件的特性和要點,包括目前工做中經常使用到的JVM、Nginx、Tomcat、Kafka等,估計是工做技術棧緣由,裏面沒有講到Spring、Spring Boot、SpringCould、Redis等也很經常使用的開源項目。github

看過文章才感受我的技術視野的狹窄,工做中主要關注框架應用層的技術,對如今流行的數據類、雲計算基礎實施類的技術瞭解大少。之後在加深工做中應用技術深度的同時,也要注意擴展本身技術的廣度才行。數據庫

https://github.com/huihoo/wiki有相關開源技術的資料索引,有時間要學習一下。編程

最後摘錄一下做者列出的45個開源軟件的特性要點,感興趣的朋友建議看原文更精彩。vim

1. Django後端

Django和Flask是使用最普遍的Python Web框架;

Django提供Web一站式解決方案:會話、緩存、ORM、驗證、表單處理、後臺管理等,但系統耦合度高,替換內置功能比較麻煩,學習曲線較陡;

Django和Flask都基於WSGI,這是同步阻塞接口,不能使用異非阻塞的編程模式,你可考慮使用Klein微框架,用法很像Flask,能夠異步方式編寫Web應用。

2. Meteor

一個面向Web和App的應用框架和構建平臺;

Meteor 7大原則;

超過12000個包的生態系統。

3. Qt

Qt核心:元對象系統、屬性系統、對象模型、對象樹、信號槽(Signal/Slot),Qt的Signal/Slot很好解決了對象間通信的問題,被其它語言框架借鑑;

Qt使用QML定義用戶界面,使用C++編寫業務邏輯;

Qt在在汽車行業有普遍應用,是GENIVI汽車聯盟的推薦技術。

4. odoo

odoo不只僅是開源ERP/CRM;

仍是一套伴隨企業成長可擴展的商業運營支撐系統;

一個巨大的應用生態系統,有近12500個Apps可供選用。

5. iDempiere

iDempiere = OSGi + Adempiere;

OSGi是Java模塊化一個領先的解決方案;

Adempiere是一個世界級的集成的ERP/CRM開源軟件。

6. Moqui

Apache OFBiz做者的又一力做;

快速的企業應用原型系統開發;

一個框架、一個生態系統。

7. Emacs

Emacs是迄今爲止功能最爲強大的文本編輯器,Emacs是一種信仰,它是神通常的編輯器;

Emacs是模塊化的,遵循do one thing, and do it well原則,須要什麼就安裝什麼,你能夠像搭積木的方式搭建本身的環境和系統;

Everything Emacs,你能夠在Emacs完成你幾乎全部的工做:編程、寫做、瀏覽網頁、收發郵件、日程、娛樂遊戲、它是我的操做系統。

8. Vim

Vim模式:普通模式,插入模式,可視模式,命令行模式;

Vim的使用主要放在定位和操做上;

常見定位命令如:上下左右的操做,k 上行、j 下行、h 左、l 右;定位後就是操做,vim操做命令是原子性的,可隨意組合操做命令,如:daw(delete a word)、caw(change a word)。

9. Atom

Atom由GitHub開發維護;

Atom使用的Electron framework已有一個龐大的生態系統;

微軟Visual Studio Code和Facebook Nuclide都基於Atom/Electron框架構建。

10. Jupyter

Jupyter is the new front end for data science and AI.

Jupyter的操做過程可存檔、傳播、分享;

Jupyter的核心是IPython,Jupyter是將來。

11. Pandas

在數據科學領域,Pandas是一個很是重要的Python軟件包;

Pandas基於NumPy構建,讓以NumPy爲中心的應用變得更簡單;

Pandas使用的兩個主要數據結構:Series和DataFrame。

12. Anaconda

Anaconda是一個企業級Python發行版,面向大規模數據處理、預測分析和科學計算;

Anaconda 以 Red Hat 和 Debian Linux 發行版的方式來分發 Python;

Anaconda 包含近500個最流行的科學、數學、工程和數據分析的Python軟件包。

13. HDP

Hortonworks公司擁有最多的Apache大數據相關項目開發者和貢獻者,開發、發行100%開源的大數據平臺;

Hortonworks Data Platform (HDP)和Hortonworks DataFlow (HDF)是兩大產品;

經過整合、交付統一的 Apache Spark 和 Hadoop,將 Spark 驅動的敏捷分析工做流程與 Hadoop 的海量數據集和經濟性相結合,企業可使用行業最佳安全性、管制和運營能力來部署 Apache Spark。

14. CDH

CDH多是商業化運做最好的大數據平臺和解決方案;

開發維護了多個流行大數據開源軟件,是HDP最主要的競爭對手;

Impala一個C++開發的Hadoop實查詢引擎,值得關注。

15. HPCC

一套C++開發的大數據處理和分析平臺;

ECL (Enterprise Control Language) 和KEL (Knowledge Engineering Language) 是兩個High Level的腳本語言;

HPCC比Apache Hadoop歷史更加悠久,在並行架構上也有本身的獨到之處:Data Parallelism、Pipeline Parallelism、System Parallelism

16. Caffe(Caffe2)

Caffe2 是賈揚清對Caffe的從新思考和重構,目前在Facebook,是Caffe2的核心開發者;

Caffe2對移動端的良好支持,15行代碼Support WatchOS build 確實夠簡單;

Caffe2可在手機與樹莓派上訓練和部署模型。

17. MXNet

比TensorFlow更加輕量、高效小巧,更適合自定義需求高的公司和研究者;

MXNet容許用戶自由把圖計算和過程計算混合起來使用;

MXNet正在Apache基金會孵化,相信很快孵化成頂級項目。

18. TensorFlow

TensorFlow體格龐大,代碼量大,抽象層多,深度自定義會很困難;

TensorFlow也是一個商業行爲,背後是Google,它帶來的可行度和高質量;

一個事實:Google內部版的TensorFlow和Google Cloud深度綁定優化與開源的TensorFlow在速度和性能上會又巨大差別,美國的大廠都或多或少的在拒絕它。

19. Automotive Grade Linux(AGL)

Automotive Grade Linux(AGL) 是 Linux基金會發布的開源Linux車載系統,AGL 基於 Tizen 構建;

AGL + Tizen IVI + GENIVI = AGL UCB(Unified Code Base));

Qt Automotive Suite based on GENIVI or Automotive Grade Linux。

20. ROS

ROS是一個普遍使用的機器人操做系統和軟件框架,ROS的基本原理是無需改動就能在不一樣的機器人上覆用代碼;

隨着ROS 2.0的開發,ROS可以兼容除Linux以外的更多操做,如Windows、Android;可以支持從工業計算機到Adruino開發板等各類硬件;

百度無人車阿波羅平臺基於ROS構建。

21. Apollo Auto

百度 Apollo(阿波羅)是一個開放的、完整的的平臺,將幫助汽車行業及自動駕駛領域的合做夥伴結合車輛和硬件系統,快速搭建一套屬於本身的自動駕駛系統,採用Apache v2許可協議;

阿波羅平臺基於ROS構建;

阿波羅核心核心基於Linux Kernel 4.4.32構建。

22. OpenStack

OpenStack是開源雲平臺的事實標準;

OpenStack + Kubernetes 開啓雲計算的新時代;

OpenStack儘管很是好,國內也有不少廠商是自研雲計算平臺的,如:騰訊。

23. OpenShift

OpenShift is Enterprise-Ready Kubernetes;

Docker容器和Kubernetes容器編排已成爲企業交付軟件和服務的行業標準,OpenShift可直接做爲企業DevOps & CI/CD的基礎設施, 成爲部署微服務的多租戶平臺;

OpenShift是BlockApps區塊鏈平臺的PaaS基礎設施。

24. SaltStack

SaltStack提供了一種全新的基礎設施管理方式,部署輕鬆,在幾分鐘內可運行起來,擴展性好,很容易管理上萬臺服務器,速度快,服務器之間秒級通信;

SaltStack使用ZeroMQ,帶來極高的通信效率;

SaltStack或許是構建、管理、運營雲計算基礎設施的最佳方式,它支持普遍的雲平臺。

25. Riak

Riak 是使用 Erlang 開發的開源(Apache V2) 分佈式 NoSQL 鍵/值(K/V) 存儲數據庫系統;

有 Riak Core、Riak KV 鍵值存儲、Riak TS 時序存儲、Riak S2 對象存儲的完整產品線;

Riak擁有Erlang語言帶來的分佈式、消息、併發、可伸縮、容錯方面的自然優點。

26. OrientDB

OrientDB 是一個Java開發的開源(Apache v2)NoSQL文檔和圖形數據庫,也經過 OrientDB SQL 支持 SQL;

OrientDB是一個擁有對象模型 鍵/值模型 文檔模型 圖模型的多模型數據庫;

多範式編程語言(面向對象、模板、函數式編程、過程式 )C++帶來極高的生產力,多模型數據庫OrientDB可否也帶來相似效果。

27. Apache Kylin

Apache Kylin:商業數據倉庫、商業OLAP引擎的替代品;

Kylin是爲減小在Hadoop上百億規模數據查詢延遲而設計,Kylin爲Hadoop提供標準SQL支持大部分查詢功能,經過Kylin,用戶能夠與Hadoop數據進行亞秒級交互;

一個開源數據倉庫、商業智能生態系統。

28. RabbitMQ

RabbitMQ是Advanced Message Queuing Protocol (AMQP)標準的Erlang語言實現;

RabbitMQ是部署最普遍的開源消息代理;

能夠把ZeroMQ看做RabbitMQ這類消息隊列系統的補充,而不是替代品。

29. Apache Kafka

Apache Kafka:下一代分佈式消息系統;

Apache Kafka 是一個高吞吐量的分佈式消息系統,使用 Scala 開發,最初被用於 LinkedIn;

Apache Kafka 解耦企業應用的複雜性,是信息和流數據的交換樞紐。

30. Ejabberd

與RabbitMQ實現的AMQP相比,XMPP普遍應用於即時通訊領域;

Ejabberd是XMPP Server的首選;

Ejabberd支持Elixir編程語言

31. Nginx

epoll(freebsd的kqueue)網絡IO模型是Nginx高性能的根本理由;

與Apache相比較,最核心的區別在於Apache是同步多進程模型,一個鏈接對應一個進程;Nginx是異步的,多個鏈接能夠對應一個進程;

對於後端動態服務來講,好比Java和PHP。這類服務器(如JBoss和PHP-FPM)的IO處理能力每每不高。Nginx有個好處是它會把Request在讀取完整以前buffer住,這樣交給後端的就是一個完整的HTTP請求,從而提升後端的效率,而不是斷斷續續的傳遞(互聯網上鍊接速度通常比較慢)。一樣,Nginx也能夠把response給buffer住,一樣也是減輕後端的壓力。(此條信息來自:知乎叔度

32. Jetty

Eclipse Jetty,一個更輕量、更易擴展和定製的Java Web Server;Jetty架構基於Handler,擴展更容易,而Tomcat是基於容器設計,不易擴展;

Google GAE選擇Jetty,定製足夠小的Java Web Server支撐GAE業務;

Apache Tomcat和Eclipse Jetty背後是兩大開源基金會的合做與競爭。

33. Cowboy

Cowboy適合構建嵌入式應用,它沒有配置文件,也不會生成日誌,一切都由Erlang控制。

Cowboy支持的協議有:HTTP/二、HTTP/1.一、WebSocket、HTTP/1.0、SPDY/3.一、SPDY/3;

Erlang很適合開發Web server,可基於Cowboy作擴展和定製;

34. GNU/Linux

Linux基金會不只僅有Linux項目,還有衆多其它的開源項目,如AGL;

可更多關注相似Robot Operating System(ROS)這樣的機器人操做系統和嵌入式系統;

相比Android系統,OpenWrt被認爲是更加適合智能設備和機器人的軟件平臺。

35. XNU/Darwin

XNU是XNU is Not Unix的首字母縮寫,GNU是GNU's Not Unix的縮寫;

XNU/Darwin與FreeBSD都有着BSD的血統,蘋果會持續投資和推進FreeBSD項目?

更深刻的學習、研究iOS和macOS,就從Hack XNU開始吧。

36. FreeBSD

FreeBSD TCP/IP協議棧實現是個經典;

Facebook的WhatsApp是一個FreeBSD + Erlang 的公司,大量的路由器、交換機、防火牆、金融系統在使用FreeBSD,SONY PS4遊戲機操做系統基於FreeBSD構建;

蘋果與FreeBSD的關係應該是最密切的。

37. GCC

GCC:最重要的開源軟件(從1987的1.0到2017年7.2歷經30年,對整個自由、開源軟件貢獻卓著),後來者LLVM(14歲)很出色,前途無量;

GCC的基本語言是C語言,整個編譯系統由C編程程序開始,而後逐漸加入其它語言的支持;

C++是C語言的直接擴展,它是GCC的第一個附加語言。C++可以完成的全部事情C語言均可以作到,因此編譯器的後端保持不變,只需在前端加入一個新的語法語義分析器就能夠了。一旦產生中間語言,編譯程序的其它部分就和C語言徹底同樣了,其它語言的處理方式也相似。

38. LLVM

FreeBSD從10.0開始,使用LLVM替換GCC做爲默認的編輯器,除了一些技術的考量外,GCC的GPL v3與FreeBSD項目的不兼容性,LLVM/Clang的許可協議是BSD,兼容FreeBSD;

Azul Systems推出Falcon,一個基於LLVM的新的Java即時編譯器

Clang是LLVM的前端,用來編譯C,C++,Objective-C。

39. Babel

Babel 下一代 JavaScript 編譯器(轉譯器);

簡單講,Babel 就是把一個版本的 JavaScript 轉變爲其餘版本的 JavaScript;

The Super Tiny Compiler多是最小的編譯器,先感覺和普及下JavaScript編譯器的知識。

40. JVM

JVM是最大規模的編程語言虛擬機生態系統,有超過200多種編程語言運行在JVM上;

Android Dalvik VM不是一個Java虛擬機,它沒有遵循JVM規範,不能直接運行Java Class文件,它執行的Dex(Dalvik Executable)可經過Class文件轉換而來;

由John Rose領導的the Da Vinci Machine Project正致力於讓JVM成爲動態語言的最佳歸宿。

41. .NET Core

.NET Core 是一個通用目的、模塊化、跨平臺的 .NET 開源實現;

核心項目:.NET Core Libraries (CoreFX)、.NET Core Runtime (CoreCLR)、.NET Compiler Platform (Roslyn);

.NET Core 會包含 .NET Framework 的類庫,但與 .NET Framework 不一樣的是 .NET Core 採用包 (Packages) 的管理方式,應用程序只須要獲取須要的組件便可,與 .NET Framework 大包式安裝的做法大相徑庭,同時各包也有獨立的版本線 (Version line),再也不硬性要求應用程序跟隨主線版本。

42. Erlang VM(BEAM)

Elixir是一門運行在Erlang VM上的編程語言;

可在Erlang VM建立本身的語言

可關注下Erjang:A JVM-based Erlang VM。

43. Erlang

Erlang的世界觀是一切都是進程(一個Erlang進程包括PCB進程控制塊和堆棧只有幾K),進程經過消息傳遞相互通信;

Erlang是參與者模型(Actor model)最佳實踐;

可在一臺筆記本上輕鬆跑出幾百萬個Erlang進程。

44. Clojure

Clojure 是一種運行在 Java 平臺上的 Lisp 方言;

Clojure is about Data, Scala is about Types, Java is about Objects;

ClojureScript: Clojure to JavaScript compiler。

45. F

F#和OCaml是ML函數式編程語言的兩種主要方言;

F# = Objects + Functional ,F#混合面向對象和函數式編程,可「對應」JVM平臺的Scala語言;

F#支持高階函數、柯里化、惰性求值、Continuations、模式匹配、閉包、列表處理和元編程,F#做爲一門適合於金融和計算密集型的語言而聞名。

相關文章
相關標籤/搜索