成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

2018年排名Top 100的Java類庫——在分析了277,975份源碼之后得出的結(jié)論

開發(fā) 開發(fā)工具
時(shí)間如流水,轉(zhuǎn)眼間2018年已經(jīng)要接近尾聲了,過去的一年,可以說是瘋狂的一年。SpaceX成功發(fā)射了重型獵鷹火箭,蘋果成為首個(gè)突破一萬億美元市值的上市公司。

 時(shí)間如流水,轉(zhuǎn)眼間2018年已經(jīng)要接近尾聲了,過去的一年,可以說是瘋狂的一年。SpaceX成功發(fā)射了重型獵鷹火箭,蘋果成為***突破一萬億美元市值的上市公司。

2018年,在IT圈也發(fā)生了許多大事和喜事,SpringBoot 2發(fā)布、Java發(fā)布了10 和 11兩個(gè)版本、GitHub下嫁MicroSoft、IBM迎娶RedHat等,和往年一樣,我們分析了2018年排名Top 100的Java類庫。

目的是向你展示2018年的風(fēng)云Java類庫,希望可以給正在使用Java的你一些幫助和啟示。不能說榜單中的類庫都是***的,但是至少是目前比較受歡迎的。往期榜單地址:

2017年排名Top 100的Java類庫——在分析了259,885份源碼之后得出的結(jié)論

2016年排名Top 100的Java類庫——在分析了47,251個(gè)依賴之后得出的結(jié)論

***的前20個(gè)Java類庫

 

今年,Top 100 Java類庫的排名發(fā)生了一個(gè)戲劇性的改變,榜首換人了,在此之前,JUnit已經(jīng)蟬聯(lián)了三屆冠軍。而今年,冠軍寶座被fasterXML/Jackson 占據(jù)。 而這個(gè)類庫,2016年排名第14名、2017年排名第18名。

 

Jackson是一個(gè)JSON庫,可以方便的將JSON轉(zhuǎn)化成Java的對象模型,以及把Java的對象模型轉(zhuǎn)換成一串JSON。在往年的榜單中,Jackson就是所有JSON類庫中排名最靠前的。

Jackson所依賴的jar包較少,簡單易用并且性能也要相對高些,并且Jackson社區(qū)相對比較活躍,更新速度也比較快。具有以下特點(diǎn):

  • 容易使用 – jackson API提供了一個(gè)高層次外觀,以簡化常用的用例。
  • 無需創(chuàng)建映射 – API提供了默認(rèn)的映射大部分對象序列化。
  • 性能高 – 快速,低內(nèi)存占用,適合大型對象圖表或系統(tǒng)。
  • 干凈的JSON – jackson創(chuàng)建一個(gè)干凈和緊湊的JSON結(jié)果,這是讓人很容易閱讀。
  • 不依賴 – 庫不需要任何其他的庫,除了JDK。
  • 開源代碼 – jackson是開源的,可以免費(fèi)使用。

去年包攬前三甲的JUnit家族三大成員JUnit、JUnit Runner和junit.framework今年分別位列第三、第四和第五名。

今年排名第二名的是Apache Hadoop,是一款支持?jǐn)?shù)據(jù)密集型分布式應(yīng)用程序并以Apache 2.0許可協(xié)議發(fā)布的開源軟件框架。它支持在商品硬件構(gòu)建的大型集群上運(yùn)行的應(yīng)用程序。Hadoop的框架最核心的設(shè)計(jì)就是:HDFS和MapReduce。HDFS為海量的數(shù)據(jù)提供了存儲(chǔ),而MapReduce則為海量的數(shù)據(jù)提供了計(jì)算。

在我們排名前20的庫中,我們可以找到Eclipse基金會(huì)的Jetty、Apache基金會(huì)的 Shiro 、Netty以及谷歌的Guice庫等。

Jetty

Jetty是一個(gè)純粹的基于Java的網(wǎng)頁服務(wù)器和Java Servlet容器。盡管網(wǎng)頁服務(wù)器通常用來為人們呈現(xiàn)文檔,但是Jetty通常在較大的軟件框架中用于計(jì)算機(jī)與計(jì)算機(jī)之間的通信。

Shiro

Apache Shiro是一個(gè)開源安全框架,提供身份驗(yàn)證、授權(quán)、密碼學(xué)和會(huì)話管理。Shiro框架直觀、易用,同時(shí)也能提供健壯的安全性。

Netty

Netty 是一個(gè)基于NIO的客戶、服務(wù)器端編程框架,使用Netty 可以確保你快速和簡單的開發(fā)出一個(gè)網(wǎng)絡(luò)應(yīng)用,例如實(shí)現(xiàn)了某種協(xié)議的客戶、服務(wù)端應(yīng)用。Netty相當(dāng)于簡化和流線化了網(wǎng)絡(luò)應(yīng)用的編程開發(fā)過程,例如:基于TCP和UDP的socket服務(wù)開發(fā)。

Guice

Guice是Google開發(fā)的一個(gè)輕量級(jí),基于Java5(主要運(yùn)用泛型與注釋特性)的依賴注入框架(IOC)。Guice非常小而且快。Guice是類型安全的,它能夠?qū)?gòu)造函數(shù),屬性,方法(包含任意個(gè)參數(shù)的任意方法,而不僅僅是setter方法)進(jìn)行注入。

除此以外,前20名的榜單中,值得關(guān)注的還有開源日志組件——ch.qos.logback、專門用于代碼微基準(zhǔn)測試的工具套件——org.openjdk.jmh、

除此之外,我們比較熟悉的apache旗下的很多常用類庫,如apache.commons.lang、org.apache.ibatis、org.apache.maven、org.apache.http.client、apache.commons.lang3等也都在前20的榜單中。

被擠出前20的Java類庫

 

為了分析榜單的變化情況,我們對比了2017年top20的類庫和今年的類庫榜單。我們發(fā)現(xiàn),除了JUnit的使用減少以外,還有些類庫排名在下降,有些甚至從前二十名被擠出。

首當(dāng)其沖的是去年位列第四和第五名的Mockito和slf4j,今年被無情的甩出了前20,分別位列第23名和25名。

去年我們重點(diǎn)表揚(yáng)的,排名第6的,幫助編寫用Java語言進(jìn)行軟件測試的框架——Hamcrest 今年慘跌至第37名。

那些值得關(guān)注的后來者

 

我們在今年的結(jié)果中看到的最主要的事情是,一切都可以改變。位于榜單底部的庫可能會(huì)在接下來的一年中名列前茅。這就是為什么我們在2018年的圖表中查看了一些不太受歡迎的類庫,并在2019年對它們進(jìn)行跟蹤,如:

  1. #85 org.objectweb.asm – A simple API for decomposing, modifying, and recomposing binary Java classes 
  2. #86 com.google.common.primitives – Google Guava Primitive Types 
  3. #87 com.datastax.driver – DataStax Java Driver for Apache Cassandra 
  4. #88 org.json – The data interchange format 
  5. #89 org.apache.commons.math3 – The Apache Commons Mathematics Library 
  6. #90 com.netflix.hystrix – A latency and fault tolerance library designed to isolate points of access to remote systems, services and 3rd party libraries. 

 

那些貢獻(xiàn)較大的組織

每年我們都會(huì)從GitHub中提取***的Java庫,然后開始處理這些數(shù)據(jù)。由于需要區(qū)分一個(gè)所有者之下的不同文件夾,所以這種處理的大部分工作都是手工完成的。這就是為什么在我們的列表中有許多com.google.common庫以及org.springframework 和org.apache等等。

今年,我們決定對***Java庫進(jìn)行更廣泛的研究,看看誰是***“所有者”。我們合并了org.eclipse.XX,org.codehaus.YY,io.nedy.ZZ和類似的位于同一個(gè)組織下的類庫,然后我們整理出了下面這份榜單:

 

 

 

 

位居榜首的,就是我們都熟知的,也是在前20的榜單頻繁出現(xiàn)的apche基金會(huì)。

  • 第二名:springframework
  • 第三名:google
  • 第四名:junit
  • 第五名:eclipse

今年的這份榜單中,值得注意的是有一家來自中國的組織貢獻(xiàn)的類庫總數(shù)進(jìn)入了前20,那就是上圖中排名第15的Alibaba。(作為一個(gè)阿里人,作者感到無比驕傲!!!)

在Top 100 Java類庫中,com.alibaba.otter排名第85。otter是一個(gè)基于數(shù)據(jù)庫增量日志解析,準(zhǔn)實(shí)時(shí)同步到本機(jī)房或異地機(jī)房的mysql/oracle數(shù)據(jù)庫. 一個(gè)分布式數(shù)據(jù)庫同步系統(tǒng)。

Alibaba作為一家互聯(lián)網(wǎng)公司,過去得幾年在開源領(lǐng)域做出了很多卓越的貢獻(xiàn)。最近幾年,Alibaba向Apache基金會(huì)捐獻(xiàn)了多個(gè)重量級(jí)開源項(xiàng)目。如JStorm、RocketMQ、Dubbo、Weex等,相信這些項(xiàng)目必將在開源社區(qū)的滋養(yǎng)下成長的更加茁壯!!!

分析方法

 

我們提取數(shù)據(jù)和數(shù)字的方法與去年的方法相似。在OverOps R&D團(tuán)隊(duì)的幫助下,我們主要是用了谷歌的BigQuery和GitHub的API。我們提取了前1000個(gè)存儲(chǔ)庫,從中提取了這些存儲(chǔ)庫使用的Java庫。

BigQuery 是 Google 專門面向數(shù)據(jù)分析需求設(shè)計(jì)的一種全面托管的 PB 級(jí)低成本企業(yè)數(shù)據(jù)倉庫。該服務(wù)讓開發(fā)者可以使用Google的架構(gòu)來運(yùn)行SQL語句對超級(jí)大的數(shù)據(jù)庫進(jìn)行操作。BigQuery 可在幾秒內(nèi)掃描 1 TB 的數(shù)據(jù),在幾分鐘內(nèi)掃描 1 PB 的數(shù)據(jù)。

在從GitHub中提取的277,975個(gè)Java源文件中,我們過濾掉了Android、Arduino、重復(fù)和廢棄的repos。至此,我們只剩下28,021個(gè)Java源文件。經(jīng)過切片和分析,我們得到了***的前100名。

Talk Is Cheap ,Show You The Code

首先,我們創(chuàng)建一個(gè)倉庫表,用來存儲(chǔ)star數(shù)排名靠前的哪些類庫,命名為java_top_repos_filtered:

  1. SELECT 
  2.   full_name 
  3. FROM 
  4.   java_top_repos_1000 
  5. WHERE NOT ((LOWER(full_name) CONTAINS 'android'OR           (LOWER(full_name) CONTAINS 'arduino')) 
  6.       AND ((description IS nullOR           (NOT ((LOWER(description) CONTAINS 'android'OR                 (LOWER(description) CONTAINS 'arduino'OR                 (LOWER(description) CONTAINS 'deprecated')))); 

現(xiàn)在,我們有了排名靠前的類庫的名字,然后我們把他們都拉取下來:

  1. SELECT 
  2.   repo_name, 
  3.   content 
  4. FROM  [bigquery-public-data:github_repos.contents] AS contents 
  5. INNER JOIN
  6.   SELECT 
  7.     id, 
  8.     repo_name 
  9.   FROM    [bigquery-public-data:github_repos.files] AS files 
  10.   INNER JOIN 
  11.     java_top_repos_filtered AS top_repos 
  12.   ON 
  13.     files.repo_name = top_repos.full_name 
  14.   WHERE 
  15.     path LIKE '%.java'AS files_filtered 
  16. ON 
  17.   contents.id = files_filtered.id; 

至此,我們有了每個(gè)項(xiàng)目的源代碼,我們就要把去重后的import的語句過濾出來,然后在提取包名稱。

  1. SELECT  package, 
  2.   COUNT(*) count 
  3. FROM( //extract package name (exclude last point of data) and group with repo name (to count each package once per repo) 
  4.   SELECT 
  5.     REGEXP_EXTRACT(import_line, r' ([a-z0-9\._]*)\.') package, 
  6.     repo_name 
  7.   FROM  ( //extract only 'import' code lines from *.java files 
  8.     SELECT 
  9.       SPLIT(content, '\n') import_line, 
  10.       repo_name 
  11.     FROM 
  12.       java_relevant_data 
  13.     HAVING 
  14.       LEFT(import_line, 6) = 'import' 
  15.   ) 
  16.   GROUP BY    package, 
  17.     repo_name)GROUP BY  packageORDER BY 
  18.   count DESC

***,我們再進(jìn)行一次過濾,確保沒有Android, Arduino、過時(shí)的或者Java提供的原生的類庫。

  1. SELECT  *FROM 
  2.   java_top_package_count 
  3. WHERE 
  4.   NOT ((LEFT(package, 5) = 'java.'OR       (LOWER(package) CONTAINS 'android'))ORDER BY 
  5.   count DESC

至此,你就得到了一份2017年排名Top 100的Java類庫的列表了。

***的一點(diǎn)想法

 

Java在過去的幾個(gè)月里經(jīng)歷了一些變化。它從6個(gè)月的發(fā)布周期開始,最近我們聽說只有OpenJDK構(gòu)建版本可以自由訪問,而Java SE 8公開更新將需要生產(chǎn)使用的商業(yè)許可證。

Java的變化影響了開發(fā)人員,我們可以通過GitHub***Java庫流行程度的變化看出這一點(diǎn)。最近關(guān)于對Java SE更新收費(fèi)的新聞可能會(huì)導(dǎo)致openjdk相關(guān)庫的使用增加,甚至可能會(huì)將數(shù)據(jù)轉(zhuǎn)移到企業(yè)相關(guān)庫。

【本文是51CTO專欄作者Hollis的原創(chuàng)文章,作者微信公眾號(hào)Hollis(ID:hollischuang)】

 

戳這里,看該作者更多好文

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2020-01-13 09:25:58

JavaOracleHDFS

2025-05-22 08:30:00

開源檢測系統(tǒng)主機(jī)入侵

2019-09-10 20:09:13

2018-07-19 12:26:20

Serverless無服務(wù)器平臺(tái)

2020-08-16 08:57:39

Python IDE編程IDE

2020-07-27 09:53:22

FlutterReact NativUI庫

2021-02-19 13:10:27

人工智能機(jī)器學(xué)習(xí)工具

2018-12-04 17:47:07

OpenStack

2012-12-17 15:19:13

2020-05-20 23:35:32

物聯(lián)網(wǎng)應(yīng)用物聯(lián)網(wǎng)IoT)

2018-09-17 14:04:29

AI數(shù)據(jù)科技

2011-02-25 17:26:51

Android應(yīng)用

2018-01-03 18:54:55

數(shù)據(jù)庫排名DB-Engines

2019-07-26 14:12:59

瀏覽器ChromeFirefox

2017-12-04 14:50:57

數(shù)據(jù)分析可視化大數(shù)據(jù)

2018-10-19 10:45:53

中科曙光

2019-03-22 08:12:29

智慧城市物聯(lián)網(wǎng)IoT

2018-06-02 23:54:41

數(shù)據(jù)庫PostgreSQL Oracle

2015-10-26 16:18:19

2021-08-17 08:51:38

機(jī)器學(xué)習(xí)人工智能
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产亚洲欧美另类一区二区三区 | 中文字幕精品一区 | 国产精品一二三区在线观看 | 日韩免费激情视频 | 影音先锋久久 | 国产成年人小视频 | 中文字幕在线三区 | 精品欧美 | 久草网视频 | 伊人看片 | 日本国产欧美 | 欧美一区二区三区在线播放 | 很黄很污的网站 | 九九久久国产 | 黄色成人在线 | 国产精品久久久久久久岛一牛影视 | 激情影院久久 | 一级毛片视频 | 三级免费 | 亚洲国产精久久久久久久 | 免费欧美视频 | 99这里只有精品 | 在线播放中文 | 黑人精品xxx一区一二区 | 成人av一区二区三区 | 日本精品一区二区三区视频 | 免费小视频在线观看 | 国产免费一区二区三区最新6 | 国产亚洲网站 | 久久久成人精品 | h视频在线免费观看 | www.47久久青青 | 久久久精 | 日韩中文字幕区 | 久久久av一区 | 91在线视频免费观看 | 久久99精品久久久97夜夜嗨 | 人人草天天草 | 亚洲精品成人 | 91欧美 | 精品无码久久久久久国产 |