標籤:
推薦!國外程式員整理的Java資源大全 構建
這裡搜集了用來構建應用程式的工具。
- 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 | 中文版
播客
可以一邊編程一邊聽的東西。
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 技術)
原文連結: github akullpp
推薦!國外程式員整理的Java資源大全