JAVA學習資源一覽

JavaDog發表於2019-01-20

構建

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

  • 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

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

高效能

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

  • 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:對日誌進行分析並進行視覺化。
  • Logbacklog4j原班人馬作品。被證明是一個強健的日誌函式庫,通過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應用程式。

資源

社群

活躍的討論區。

有影響的書籍

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

播客

可以一邊程式設計一邊聽的東西。

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、演講者。

網站

值得閱讀的網站。

來源:https://juejin.im/post/5c4459f4f265da614b124424

相關文章