【轉載】國外程式員整理的Java資源大全

來源:互聯網
上載者:User

標籤:buffers   office   hand   log4   monkey   utf8   工具類   ppc   logstash   

以下轉載自: 推薦!國外程式員整理的Java資源大全中文版    https://github.com/akullpp/awesome-java英文版

Java 幾乎是許多程式員們的入門語言,並且也是世界上非常流行的程式設計語言。國外程式員 Andreas Kull 在其 Github 上整理了非常優秀的 Java 開發資源,推薦給大家。

  譯文由 ImportNew- 唐尤華翻譯完成。

  以下為具體資源清單。

  構建

  這裡搜集了用來構建應用程式的工具。

  • Apache Maven:Maven 使用聲明進行構建並進行依賴管理,偏向於使用約定而不是配置進行構建。Maven 優於 Apache Ant。後者採用了一種過程化的方式進行配置,所以維護起來相當困難。
  • Gradle:Gradle 採用增量構建。Gradle 通過 Groovy 編程而不是傳統的 XML 聲明進行配置。Gradle 可以很好地配合 Maven 進行依賴管理,並且把 Ant 指令碼當作頭等公民。

  位元組碼操作

  編程操作 Java 位元組碼的函數庫。

  • ASM:通用底層位元組碼操作及分析。
  • Javassist:嘗試簡化位元組碼編輯。
  • Byte Buddy:使用“流式 API”進一步簡化位元組碼產生。

  程式碼分析

  軟體度量和品質評估工具。

  • Checkstyle:對編程規範和標準進行靜態分析。
  • FindBugs:通過位元組碼靜態分析找出潛在 Bug。
  • PMD:對原始碼中不良編程習慣進行分析。
  • SonarQube:通過外掛程式整合其它分析組件,提供評估最終結果報告。

  編譯器

  建立分析器、解譯器和編譯器的架構。

  • ANTLR:功能完備的自頂向下分析複雜架構。
  • JavaCC:相對 ANTLR 更具體,上手略為簡單。支援文法文法超前預測(syntactic lookahead)。

  持續整合

  支援持續整合、測試和應用發布的工具。

  • Bamboo:Atlassian 的持續整合(CI)解決方案,包含很多其它產品。
  • CircleCI:提供託管服務,可免費試用。
  • Codeship:提供託管服務,提供有限免費計劃。
  • Go:ThoughtWork 開源持續整合解決方案。
  • Jenkins:提供基於伺服器的部署服務。
  • TeamCity:JetBrain 持續整合方案,提供免費版。
  • Travis:提供託管服務,常用於開源項目。

  資料庫

  簡化資料庫互動的工具、庫。

  • Flyway:使用 Java API 輕鬆完成資料庫遷移。
  • H2:小型 SQL 資料庫,以記憶體操作著稱。
  • JDBI:便捷的 JDBC 抽象。
  • jOOQ:基於 SQL schema 組建類型安全的程式碼。
  • Presto:針對大資料的分布式 SQL 查詢引擎。
  • Querydsl:針對 Java 的型別安全統一查詢。

  日期和時間

  處理日期和時間的函數庫。

  • Joda-Time:Java 8 出現之前,它是日期、時間處理的標準函數庫。
  • Time4J:Java 進階日期、時間函數庫。

  依賴注入

  協助代碼實現 控制反轉模式的函數庫。

  • Dagger:編譯期的注入架構,沒有使用反射,主要用於 Android 開發。
  • Guice:輕量級注入架構,功能強大可與 Dagger 媲美。

  開發庫

  從基礎層次上改進開發流程。

  • AspectJ:面向切面編程擴充,與程式無縫串連。
  • Auto:原始碼產生器集合。
  • DCEVM:通過修改 JVM,在運行時可無限次重定義已載入的類。OpenJDK 7、8 已提供支援,詳情可查看 這個分支(fork)。
  • JRebel:商用軟體,無需重新部署可即時重新載入代碼及配置。
  • Lombok:代碼產生器,旨在減少 Java 冗餘代碼。
  • RxJava:使用 JVM 中可觀察序列,建立非同步、基於事件應用程式的函數庫。
  • Spring Loaded:另一個 JVM 類重載代理。
  • vert.x:JVM 多語言事件驅動應用程式框架。

  分布式應用

  用來開發分布式、具有容錯性應用程式的函數庫和架構。

  • Akka:構建並發、分布式和具有容錯功能的事件驅動應用程式所需的工具包和運行時。
  • Apache Storm:分布式即時計算系統。
  • Apache ZooKeeper:為大型分布式系統,使用分布式配置、同步和命名註冊提供協調服務。
  • Hazelcast:分布式、高可擴充性記憶體網格。
  • Hystrix:為分布式系統提供延遲和容錯處理。
  • JGroups:一組提供可靠訊息傳輸的工具包,可用來建立叢集。叢集中的節點可互相發送訊息。
  • Quasar:為 JVM 提供輕量級線程和 Actor。

  發布

  使用原生格式分發 Java 應用程式的工具。

  • Bintray:對二進位發布進資料列版本設定,可與 Maven 或 Gradle 配合使用。
  • IzPack:為跨平台部署建立授權工具。
  • Launch4j:將 JAR 封裝為小巧的 Windows 可執行檔。
  • packr:將程式 JAR、資源和 JVM 打包成 Windows、Linux 和 Mac OS X 的本機檔案。

  文檔處理

  用來處理 Office 格式文檔的函數庫。

  • Apache POI:支援 OOXML (XLSX、DOCX、PPTX)以及 OLE2 (XLS, DOC or PPT)格式的文檔。
  • jOpenDocument:處理 OpenDocument 格式文檔。

  遊戲開發

  遊戲開發架構。

  • jMonkeyEngine:支援現代 3D 開發的遊戲引擎。
  • libGDX:全面的跨平台進階開發架構。
  • LWJGL:抽象了 OpenGL、CL、AL 等函數庫的健壯架構。

  GUI

  用來建立現代圖形化使用者介面的函數庫。

  • JavaFX:Swing 的繼承者。
  • Scene Builder:JavaFX 虛擬布局工具。

  高效能

  與高效能運算有關的資源,包括集合以及很多具體功能的函數庫。

  • Disruptor:線程間訊息函數庫。
  • fastutil:快速緊湊的 Java 型別安全集合。
  • GS Collections:受 Smalltalk 啟發的集合架構。
  • hftc:Hash set 和 hash map。
  • HPPC:基本類型集合。
  • Javolution:針對即時嵌入式系統的函數庫。
  • Trove:基本類型集合。

  IDE

  視圖簡化開發的整合式開發環境。

  • Eclipse:後台做了很多工作,以其豐富外掛程式著稱。
  • IntelliJ IDEA:支援很多 JVM 語言,為 Android 開發提供了很多不錯的選項。其商業版本主要面向企業使用者。
  • NetBeans:整合了很多 Java SE 和 Java EE 特性,包括資料庫訪問、伺服器、HTML5 以及 AngularJS。

  影像處理

  用來協助建立、評估或操作圖形的函數庫。

  • Picasso:Android 下載映像和映像緩衝函數庫。
  • ZXing:多種格式的一維、二維條碼處理函數庫。

  JSON

  簡化 JSON 處理的函數庫。

  • Gson:將 Java 對象序列化為 JSON 及反向操作。使用時提供了很好的效能。
  • Jackson:與 GSON 類似,但如果需要頻繁初始化 Jackson 庫會帶來效能問題。

  JVM 和 JDK

  目前的 JVM、JDK 實現。

  • JDK 9:JDK 9 早期訪問版本。
  • OpenJDK:開源實現。

  日誌

  記錄應用程式的日誌函數庫。

  • Apache Log4j 2:對之前版本進行了完全重寫。現在的版本具備一個強大的外掛程式和配置架構。
  • kibana:對日誌進行分析並進行可視化。
  • Logback:Log4j 原班人馬作品。被證明是一個強健的日誌函數庫,通過 Groovy 提供了很多有意思的配置選項。
  • logstash:記錄檔管理工具。
  • SLF4J:日誌抽象層,需要與某個具體日誌架構配合使用。

  機器學習

  提供具體統計演算法的工具。其演算法可從資料中學習。

  • Apache Hadoop:對商用硬體叢集上大規模資料存放區和處理的開源軟體架構。
  • Apache Mahout:專註協同過濾、聚類和分類的可擴充演算法。
  • Apache Spark:開來源資料分析叢集計算架構。
  • h2o:用作大資料統計的分析引擎。
  • Weka:用作資料採礦的演算法集合,包括從預先處理到可視化的各個層次。

  訊息

  在用戶端之間進行訊息傳遞,確保協議獨立性的工具。

  • Apache ActiveMQ:實現 JMS 的開源訊息代理(broker),可將同步通訊轉為非同步通訊。
  • Apache Kafka:高輸送量分布式訊息系統。
  • JBoss HornetQ:清晰、準確、模組化且方便嵌入的訊息工具。
  • JeroMQ:ZeroMQ 的純 Java 實現。

  其它

  其它資源。

  • Design Patterns:實現並解釋了最常見的設計模式。
  • Jimfs:記憶體檔案系統。
  • Lanterna:類似 curses 的簡單 console 文本 GUI 函數庫。
  • LightAdmin:可插入式 CRUD UI 函數庫,可用於快速應用開發。
  • Metrics:建立自己的軟體度量或者為支援架構添加度量資訊,通過 JMX 或 HTTP 進行發布或者發送到資料庫。
  • OpenRefine:用來處理混亂資料的工具,包括清理、轉換、使用 Web Service 進行擴充並將其關聯到資料庫。
  • RoboVM:Java 編寫原生 iOS 應用。

  自然語言處理

  用來專門處理文本的函數庫。

  • Apache OpenNL:處理類似分詞等常見任務的工具。
  • CoreNLP:斯坦佛的 CoreNLP 提供了一組基礎工具,可以處理類似標籤、實體名識別和情感分析這樣的任務。
  • LingPipe:一組可以處理各種任務的工具集,支援 POS 標籤、情感分析等。
  • Mallet:統計學自然語言處理、文檔分類、聚類、主題建模等。

  網路

  網路編程函數庫。

  • Netty:構建高效能網路應用程式開發架構。
  • OkHttp:一個 Android 和 Java 應用的 HTTP+SPDY 用戶端。

  ORM

  處理對象持久化的 API。

  • EclipseLink:支援許多持久化標準,JPA、JAXB、JCA 和 SDO。
  • Hibernate:廣泛使用、強健的持久化架構。Hibernate 的技術社區非常活躍。
  • Ebean:支援快速資料訪問和編碼的 ORM 架構。

  PDF

  用來協助建立 PDF 檔案的資源。

  • Apache FOP:從 XSL-FO 建立 PDF。
  • Apache PDFBox:用來建立和操作 PDF 的工具集。
  • DynamicReports:JasperReports 的精簡版。
  • iText:一個便於使用的 PDF 函數庫,用來編程建立 PDF 檔案。注意,用於商業用途時需要許可證。
  • JasperReports:一個複雜的報表引擎。

  REST 架構

  用來建立 RESTful 服務的架構。

  • Dropwizard:偏向於自己使用的 Web 架構。用來構建 Web 應用程式,使用了 Jetty、Jackson、Jersey 和 Metrics。
  • Jersey:JAX-RS 參考實現。
  • RESTEasy:經過 JAX-RS 規範完全認證的可移植實現。
  • Retrofit:一個 Java 型別安全的 REST 用戶端。
  • Spark:受到 Sinatra 啟發的 Java REST 架構。
  • Swagger:Swagger 是一個規範且完整的架構,提供描述、生產、消費和可視化 RESTful Web Service。

  科學

  用於科學計算和分析的函數庫。

  • SCaVis:用於科學計算、資料分析和資料視覺效果環境。

  搜尋

  文檔索引引擎,用於搜尋和分析。

  • Apache Solr:一個完全的企業搜尋引擎。為高輸送量通訊進行了最佳化。
  • Elasticsearch:一個分布式、支援多租戶(multitenant)全文本搜尋引擎。提供了 RESTful Web 介面和無 schema 的 JSON 文檔。

  安全

  用於處理安全、認證、授權或會話管理的函數庫。

  • Apache Shiro:執行認證、授權、加密和會話管理。
  • Cryptomator:在雲上進行用戶端跨平台透明加密。
  • Keycloak:為瀏覽器應用和 RESTful Web Service 整合 SSO 和 IDM。目前還處於 beta 版本,但是看起來非常有前途。
  • PicketLink:PicketLink 是一個針對 Java 應用進行安全和身份認證管理的大型項目(Umbrella Project)。
  • Spring Security:專註認證、授權和多維度攻擊防護架構。

  序列化

  用來高效處理序列化的函數庫。

  • FlatBuffers:序列化函數庫,高效利用記憶體,無需解包和解析即可高效訪問序列化資料。
  • Kryo:快速和高效的對象圖形序列化架構。
  • MessagePack:一種高效的二進位序列化格式。

  伺服器

  用來部署應用程式的伺服器。

  • Apache Tomcat:針對 Servlet 和 JSP 的應用伺服器,健壯性好且適用性強。
  • Apache TomEE:Tomcat 加 Java EE。
  • GlassFish:Java EE 開源參考實現,由 Oracle 資助開發。
  • Jetty:輕量級、小巧的應用伺服器,通常會嵌入到項目中。
  • WildFly:之前被稱作 JBoss,由 Red Hat 開發。支援很多 Java EE 功能。

  模版引擎

  對模板中運算式進行替換的工具。

  • Apache Velocity:提供 HTML 頁面模板、email 模板和通用開原始碼產生器模板。
  • FreeMarker:通用模板引擎,不需要任何重量級或自己使用的依賴關係。
  • Handlebars.java:使用 Java 編寫的模板引擎,邏輯簡單,支援語義擴充(semantic Mustache)。
  • JavaServer Pages:通用網站模板,支援自訂標籤庫。
  • Thymeleaf:旨在替換 JSP,支援 XML 檔案。

  測試

  測試內容從對象到介面,涵蓋效能測試和基準測試載入器。

  • Apache JMeter:功能性測試和效能評測。
  • Arquillian:整合測試和功能行測試平台,整合 Java EE 容器。
  • AssertJ:支援流式斷言提高測試的可讀性。
  • JMH:JVM 微基準測試載入器。
  • JUnit:通用測試架構。
  • Mockito:在自動化單元測試中建立測試對象,為 TDD 或 BDD 提供支援。
  • Selenium:為 Web 應用程式提供可移植軟體測試架構。
  • Selenide:為 Selenium 提供精準的周邊 API,用來編寫穩定且可讀的 UI 測試。
  • TestNG:測試架構。
  • VisualVM:提供可視化方式查看運行中的應用程式資訊。

  工具類

  通用工具類函數庫。

  • Apache Commons:提供各種用途的函數,比如配置、驗證、集合、檔案上傳或 XML 處理等。
  • Guava:集合、緩衝、支援基本類型、並發函數庫、通用註解、字串處理、I/O等。
  • javatuples:正如名字表示的那樣,提供 tuple 支援。儘管目前 tuple 的概念還有留有爭議。

  網路爬蟲

  用於分析網站內容的函數庫。

  • Apache Nutch:可用於生產環境的高度可擴充、可伸縮的網路爬蟲。
  • Crawler4j:簡單的輕量級爬蟲。
  • JSoup:刮取、解析、操作和清理 HTML。

  Web 架構

  用於處理 Web 應用程式不同層次間通訊的架構。

  • Apache Tapestry:基於組件的架構,使用 Java 建立動態、強健的、高度可擴充的 Web 應用程式。
  • Apache Wicket:基於組件的 Web 應用程式架構,與 Tapestry 類似帶有狀態顯示 GUI。
  • Google Web Toolkit:一組 Web 開發工具集,包含在用戶端將 Java 代碼轉為 JavaScript 的編譯器、XML 解析器、RCP API、JUnit 整合、國際化支援和 GUI 控制項。
  • Grails:Groovy 架構,旨在提供一個高效開發環境,使用約定而非配置、沒有 XML 並支援混入(mixin)。
  • Play: 使用約定而非配置,支援代碼熱載入並在瀏覽器中顯示錯誤。
  • PrimeFaces:JSF 架構,提供免費版和帶支援人員的商業版。包含一些前端組件。
  • Spring Boot:微架構,簡化了 Spring 新程式的開發過程。
  • Spring:旨在簡化 Java EE 的開發過程,提供依賴注入相關組件並支援面向切面編程。
  • Vaadin:基於 GWT 構建的事件驅動架構。使用服務端架構,用戶端使用 Ajax。
  • Ninja:Java 全棧 Web 開發架構。非常穩固、快速和高效。
  • Ratpack:一組 Java 開發函數庫,用於構建快速、高效、可擴充且測試完備的 HTTP 應用程式。

  社區

  活躍的討論區。

  • r/java:Java 社區的 Subreddit。
  • stackoverflow:問答平台。

  有影響的書籍

  具有廣泛影響且值得閱讀的 Java 經典書籍。

  • Effective Java (2nd Edition)
  • Java Concurrency in Practice Java 並發編程實戰
  • Thinking in Java 中文版

  播客

  可以一邊編程一邊聽的東西。

  • The Java Posse

  Twitter

  值得關注的帳號。

  • Adam Bien:自由工作者、作家、JavaONE 明星演講者、顧問、Java Champion。
  • Antonio Goncalves:Java Champion、JUG Leader、Devoxx France、Java EE 6/7、JCP、作家。
  • Arun Gupta:Java Champion、JavaONE 明星演講者、JUG Leader、Devoxx4Kids 成員、Red Hatter。
  • Bruno Borges:Oracle 產品經理、Java Jock。
  • Ed Burns:Oracle 技術團隊顧問。
  • Eugen Paraschiv:Spring 安全課程作者。
  • James Weaver:Java、JavaFX、IoT 開發人員、作者和演講者。
  • Java EE:Java EE Twitter 官方帳號。
  • Java Magazine:Java 雜誌官方帳號。
  • Java.net:Java.net 官方帳號。
  • Java:Java Twitter 官方帳號。
  • Javin Paul:知名 Java 部落格作者。
  • Lukas Eder:Data Geekery(jOOQ)創始人兼 CEO。
  • Mario Fusco:RedHatter、JUG 協調、活躍講師和作者。
  • Mark Reinhold:Oracle 首席架構師、Java 平台開發組。
  • Martijn Verburg:London JUG co-leader、演講者、作家、Java Champion 等。
  • OpenJDK:OpenJDK 官方帳號。
  • Reza Rahman:Java EE、GlassFish、WebLogic 傳道者、作家、演講者、開源駭客。
  • Simon Maple:Java Champion、virtualJUG 創始人、LJC leader、RebelLabs 作者。
  • Stephen Colebourne: Java Champion、演講者。
  • Tim Boudreau:作家、NetBeans 大牛。
  • Trisha Gee:Java Champion、演講者。

  網站

  值得閱讀的網站。

  • Google Java Style
  • InfoQ
  • Java Code Geeks
  • Java.net
  • Javalobby
  • JavaWorld
  • RebelLabs
  • The Java Specialist’ Newsletter
  • TheServerSide.com
  • Thoughts On Java
  • ImportNew(ImportNew 專註 Java 技術)

  參與貢獻

  熱烈歡迎參與貢獻此列表!

【轉載】國外程式員整理的Java資源大全

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.