Java應用程序開發相關工具集合

jopen 9年前發布 | 64K 次閱讀 Java Java開發

構建

這里搜集了用來構建應用程序的工具。

  • Apache Maven:Maven使用聲明進行構建并進行依賴管理,偏向于使用約定而不是配置進行構建。Maven優于Apache Ant。后者采用了一種過程化的方式進行配置,所以維護起來相當困難。

    </li>

  • Gradle:Gradle采用增量構建。Gradle通過Groovy編程而不是傳統的XML聲明進行配置。Gradle可以很好地配合Maven進行依賴管理,并且把Ant腳本當作頭等公民。

    </li> </ul>

    字節碼操作

    編程操作Java字節碼的函數庫。

    • ASM:通用底層字節碼操作及分析。

      </li>

    • Javassist:嘗試簡化字節碼編輯。

      </li>

    • Byte Buddy:使用“流式API”進一步簡化字節碼生成。

      </li> </ul>

      代碼分析

      軟件度量和質量評估工具。

      • Checkstyle:對編程規范和標準進行靜態分析。

        </li>

      • FindBugs:通過字節碼靜態分析找出潛在Bug。

        </li>

      • PMD:對源代碼中不良編程習慣進行分析。

        </li>

      • SonarQube:通過插件集成其它分析組件,提供評估最終結果報告。

        </li> </ul>

        編譯器

        創建分析器、解釋器和編譯器的框架。

        • ANTLR:功能完備的自頂向下分析復雜框架。

          </li>

        • JavaCC:相對ANTLR更具體,上手略為簡單。支持語法語法超前預測(syntactic lookahead)。

          </li> </ul>

          持續集成

          支持持續集成、測試和應用發布的工具。

          • Bamboo:Atlassian的持續集成(CI)解決方案,包含很多其它產品。

            </li>

          • CircleCI:提供托管服務,可免費試用。

            </li>

          • Codeship:提供托管服務,提供有限免費計劃。

            </li>

          • Go:ThoughtWork開源持續集成解決方案。

            </li>

          • Jenkins:提供基于服務器的部署服務。

            </li>

          • TeamCity:JetBrain持續集成方案,提供免費版。

            </li>

          • Travis:提供托管服務,常用于開源項目。

            </li> </ul>

            數據庫

            簡化數據庫交互的工具、庫。

            • Flyway:使用Java API輕松完成數據庫遷移。

              </li>

            • H2:小型SQL數據庫,以內存操作著稱。

              </li>

            • JDBI:便捷的JDBC抽象。

              </li>

            • jOOQ:基于SQL schema生成類型安全代碼。

              </li>

            • Presto:針對大數據的分布式SQL查詢引擎。

              </li>

            • Querydsl:針對Java的類型安全統一查詢。

              </li> </ul>

              日期和時間

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

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

                </li>

              • Time4J:Java高級日期、時間函數庫。

                </li> </ul>

                依賴注入

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

                • Dagger :編譯期的注入框架,沒有使用反射,主要用于Android開發。

                  </li>

                • Guice:輕量級注入框架,功能強大可與Dagger媲美。

                  </li> </ul>

                  開發庫

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

                  • AspectJ:面向切面編程擴展,與程序無縫連接。

                    </li>

                  • Auto:源代碼生成器集合。

                    </li>

                  • DCEVM:通過修改JVM,在運行時可無限次重定義已加載的類。OpenJDK 7、8已提供支持,詳情可查看這個分支(fork)

                    </li>

                  • JRebel:商用軟件,無需重新部署可即時重新加載代碼及配置。

                    </li>

                  • Lombok:代碼生成器,旨在減少Java冗余代碼。

                    </li>

                  • RxJava:使用JVM中可觀察序列,創建異步、基于事件應用程序的函數庫。

                    </li>

                  • Spring Loaded:另一個JVM類重載代理。

                    </li>

                  • vert.x:JVM多語言事件驅動應用框架。

                    </li> </ul>

                    分布式應用

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

                    • Akka:構建并發、分布式和具有容錯功能的事件驅動應用程序所需的工具包和運行時。

                      </li>

                    • Apache Storm:分布式實時計算系統。

                      </li>

                    • Apache ZooKeeper:為大型分布式系統,使用分布式配置、同步和命名注冊提供協調服務。

                      </li>

                    • Hazelcast:分布式、高可擴展性內存網格。

                      </li>

                    • Hystrix:為分布式系統提供延遲和容錯處理。

                      </li>

                    • JGroups:一組提供可靠消息傳輸的工具包,可用來創建集群。集群中的節點可互相發送消息。

                      </li>

                    • Quasar:為JVM提供輕量級線程和Actor。

                      </li> </ul>

                      發布

                      使用本機格式分發Java應用程序的工具。

                      • Bintray:對二進制發布進行版本控制,可與Maven或Gradle配合使用。

                        </li>

                      • IzPack:為跨平臺部署建立授權工具。

                        </li>

                      • Launch4j:將JAR包裝為小巧的Windows可執行文件。

                        </li>

                      • packr:將程序JAR、資源和JVM打包成Windows、Linux和Mac OS X的本機文件。

                        </li> </ul>

                        文檔處理

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

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

                          </li>

                        • jOpenDocument:處理OpenDocument格式文檔。

                          </li> </ul>

                          游戲開發

                          游戲開發框架。

                          • jMonkeyEngine:支持現代3D開發的游戲引擎。

                            </li>

                          • libGDX:全面的跨平臺高級開發框架。

                            </li>

                          • LWJGL:抽象了OpenGL、CL、AL等函數庫的健壯框架。

                            </li> </ul>

                            GUI

                            用來創建現代圖形用戶界面的函數庫。

                            • JavaFX:Swing的繼承者。

                              </li>

                            • Scene Builder:JavaFX虛擬布局工具。

                              </li> </ul>

                              高性能

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

                              • Disruptor:線程間消息函數庫。

                                </li>

                              • fastutil:快速緊湊的Java類型安全集合。

                                </li>

                              • GS Collections:受Smalltalk啟發的集合框架。

                                </li>

                              • hftc:Hash set和hash map。

                                </li>

                              • HPPC:基本類型集合。

                                </li>

                              • Javolution:針對實時嵌入式系統的函數庫。

                                </li>

                              • Trove:基本類型集合。

                                </li> </ul>

                                IDE

                                視圖簡化開發的集成開發環境。

                                • Eclipse:后臺做了很多工作,以其豐富插件著稱。

                                  </li>

                                • IntelliJ IDEA:支持很多JVM語言,為Android開發提供了很多不錯的選項。其商業版本主要面向企業用戶。

                                  </li>

                                • NetBeans:集成了很多Java SE和Java EE特性,包括數據庫訪問、服務器、HTML5以及AngularJS。

                                  </li> </ul>

                                  圖像處理

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

                                  • Picasso:Android下載圖像和圖像緩存函數庫。

                                    </li>

                                  • ZXing:多種格式的一維、二維條形碼處理函數庫。

                                    </li> </ul>

                                    JSON

                                    簡化JSON處理的函數庫。

                                    • Gson:將Java對象序列化為JSON及反向操作。使用時提供了很好的性能。

                                      </li>

                                    • Jackson:與GSON類似,但如果需要頻繁初始化Jackson庫會帶來性能問題。

                                      </li> </ul>

                                      JVM和JDK

                                      目前的JVM、JDK實現。

                                      • JDK 9:JDK 9早期訪問版本。

                                        </li>

                                      • OpenJDK:開源實現。

                                        </li> </ul>

                                        日志

                                        記錄應用程序的日志函數庫。

                                        • Apache Log4j 2:對之前版本進行了完全重寫。現在的版本具備一個強大的插件和配置架構。

                                          </li>

                                        • kibana:對日志進行分析并進行可視化。

                                          </li>

                                        • Logback:Log4j原班人馬作品。被證明是一個強健的日志函數庫,通過Groovy提供了很多有意思的配置選項。

                                          </li>

                                        • logstash:日志文件管理工具。

                                          </li>

                                        • SLF4J:日志抽象層,需要與某個具體日志框架配合使用。

                                          </li> </ul>

                                          機器學習

                                          提供具體統計算法的工具。其算法可從數據中學習。

                                          • Apache Hadoop:對商用硬件集群上大規模數據存儲和處理的開源軟件框架。

                                            </li>

                                          • Apache Mahout:專注協同過濾、聚類和分類的可擴展算法。

                                            </li>

                                          • Apache Spark:開源數據分析集群計算框架。

                                            </li>

                                          • h2o:用作大數據統計的分析引擎。

                                            </li>

                                          • Weka:用作數據挖掘的算法集合,包括從預處理到可視化的各個層次。

                                            </li> </ul>

                                            消息

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

                                            • Apache ActiveMQ:實現JMS的開源消息代理(broker),可將同步通訊轉為異步通訊。

                                              </li>

                                            • Apache Kafka:高吞吐量分布式消息系統。

                                              </li>

                                            • JBoss HornetQ:清晰、準確、模塊化且方便嵌入的消息工具。

                                              </li>

                                            • JeroMQ:ZeroMQ的純Java實現。

                                              </li> </ul>

                                              其它

                                              其它資源。

                                              • Design Patterns:實現并解釋了最常見的設計模式

                                                </li>

                                              • Jimfs:內存文件系統。

                                                </li>

                                              • Lanterna:類似curses的簡單console文本GUI函數庫。

                                                </li>

                                              • LightAdmin:可插入式CRUD UI函數庫,可用于快速應用開發。

                                                </li>

                                              • Metrics:創建自己的軟件度量或者為支持框架添加度量信息,通過JMX或HTTP進行發布或者發送到數據庫。

                                                </li>

                                              • OpenRefine:用來處理混亂數據的工具,包括清理、轉換、使用Web Service進行擴展并將其關聯到數據庫。

                                                </li>

                                              • RoboVM:Java編寫原生iOS應用。

                                                </li> </ul>

                                                自然語言處理

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

                                                • Apache OpenNL:處理類似分詞等常見任務的工具。

                                                  </li>

                                                • CoreNLP:斯坦佛的CoreNLP提供了一組基礎工具,可以處理類似標簽、實體名識別和情感分析這樣的任務。

                                                  </li>

                                                • LingPipe:一組可以處理各種任務的工具集,支持POS標簽、情感分析等。

                                                  </li>

                                                • Mallet:統計學自然語言處理、文檔分類、聚類、主題建模等。

                                                  </li> </ul>

                                                  網絡

                                                  網絡編程函數庫。

                                                  • Netty:構建高性能網絡應用程序開發框架。

                                                    </li>

                                                  • OkHttp :一個Android和Java應用的HTTP+SPDY客戶端。

                                                    </li> </ul>

                                                    ORM

                                                    處理對象持久化的API。

                                                    • EclipseLink:支持許多持久化標準,JPA、JAXB、JCA和SDO。

                                                      </li>

                                                    • Hibernate:廣泛使用、強健的持久化框架。Hibernate的技術社區非常活躍。

                                                      </li>

                                                    • Ebean:支持快速數據訪問和編碼的ORM框架。

                                                      </li> </ul>

                                                      PDF

                                                      用來幫助創建PDF文件的資源。

                                                      • Apache FOP:從XSL-FO創建PDF。

                                                        </li>

                                                      • Apache PDFBox:用來創建和操作PDF的工具集。

                                                        </li>

                                                      • DynamicReports:JasperReports的精簡版。

                                                        </li>

                                                      • iText:一個易于使用的PDF函數庫,用來編程創建PDF文件。注意,用于商業用途時需要許可證。

                                                        </li>

                                                      • JasperReports:一個復雜的報表引擎。

                                                        </li> </ul>

                                                        REST框架

                                                        用來創建RESTful 服務的框架。

                                                        • Dropwizard:偏向于自己使用的Web框架。用來構建Web應用程序,使用了Jetty、Jackson、Jersey和Metrics。

                                                          </li>

                                                        • Jersey:JAX-RS參考實現。

                                                          </li>

                                                        • RESTEasy:經過JAX-RS規范完全認證的可移植實現。

                                                          </li>

                                                        • Retrofit:一個Java類型安全的REST客戶端。

                                                          </li>

                                                        • Spark:受到Sinatra啟發的Java REST框架。

                                                          </li>

                                                        • Swagger:Swagger是一個規范且完整的框架,提供描述、生產、消費和可視化RESTful Web Service。

                                                          </li> </ul>

                                                          科學

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

                                                          • SCaVis:用于科學計算、數據分析和數據可視化環境。

                                                            </li> </ul>

                                                            搜索

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

                                                            • Apache Solr :一個完全的企業搜索引擎。為高吞吐量通信進行了優化。

                                                              </li>

                                                            • Elasticsearch:一個分布式、支持多租戶(multitenant)全文本搜索引擎。提供了RESTful Web接口和無schema的JSON文檔。

                                                              </li> </ul>

                                                              安全

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

                                                              • Apache Shiro:執行認證、授權、加密和會話管理。

                                                                </li>

                                                              • Cryptomator:在云上進行客戶端跨平臺透明加密。

                                                                </li>

                                                              • Keycloak:為瀏覽器應用和RESTful Web Service集成SSO和IDM。目前還處于beta版本,但是看起來非常有前途。

                                                                </li>

                                                              • PicketLink:PicketLink是一個針對Java應用進行安全和身份認證管理的大型項目(Umbrella Project)。

                                                                </li>

                                                              • Spring Security:專注認證、授權和多維度攻擊防護框架。

                                                                </li> </ul>

                                                                序列化

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

                                                                • FlatBuffers:序列化函數庫,高效利用內存,無需解包和解析即可高效訪問序列化數據。

                                                                  </li>

                                                                • Kryo:快速和高效的對象圖形序列化框架。

                                                                  </li>

                                                                • MessagePack:一種高效的二進制序列化格式。

                                                                  </li> </ul>

                                                                  服務器

                                                                  用來部署應用程序的服務器。

                                                                  • Apache Tomcat:針對Servlet和JSP的應用服務器,健壯性好且適用性強。

                                                                    </li>

                                                                  • Apache TomEE:Tomcat加Java EE。

                                                                    </li>

                                                                  • GlassFish:Java EE開源參考實現,由Oracle資助開發。

                                                                    </li>

                                                                  • Jetty:輕量級、小巧的應用服務器,通常會嵌入到項目中。

                                                                    </li>

                                                                  • WildFly:之前被稱作JBoss,由Red Hat開發。支持很多Java EE功能。

                                                                    </li> </ul>

                                                                    模版引擎

                                                                    對模板中表達式進行替換的工具。

                                                                    • Apache Velocity:提供HTML頁面模板、email模板和通用開源代碼生成器模板。

                                                                      </li>

                                                                    • FreeMarker:通用模板引擎,不需要任何重量級或自己使用的依賴關系。

                                                                      </li>

                                                                    • Handlebars.java:使用Java編寫的模板引擎,邏輯簡單,支持語義擴展(semantic Mustache)。

                                                                      </li>

                                                                    • JavaServer Pages:通用網站模板,支持自定義標簽庫。

                                                                      </li>

                                                                    • Thymeleaf:旨在替換JSP,支持XML文件。

                                                                      </li> </ul>

                                                                      測試

                                                                      測試內容從對象到接口,涵蓋性能測試和基準測試工具。

                                                                      • Apache JMeter:功能性測試和性能評測。

                                                                        </li>

                                                                      • Arquillian:集成測試和功能行測試平臺,集成Java EE容器。

                                                                        </li>

                                                                      • AssertJ:支持流式斷言提高測試的可讀性。

                                                                        </li>

                                                                      • JMH:JVM微基準測試工具。

                                                                        </li>

                                                                      • JUnit:通用測試框架。

                                                                        </li>

                                                                      • Mockito:在自動化單元測試中創建測試對象,為TDD或BDD提供支持。

                                                                        </li>

                                                                      • Selenium:為Web應用程序提供可移植軟件測試框架。

                                                                        </li>

                                                                      • Selenide:為Selenium提供精準的周邊API,用來編寫穩定且可讀的UI測試。

                                                                        </li>

                                                                      • TestNG :測試框架。

                                                                        </li>

                                                                      • VisualVM:提供可視化方式查看運行中的應用程序信息。

                                                                        </li> </ul>

                                                                        工具類

                                                                        通用工具類函數庫。

                                                                        • Apache Commons:提供各種用途的函數,比如配置、驗證、集合、文件上傳或XML處理等。

                                                                          </li>

                                                                        • Guava:集合、緩存、支持基本類型、并發函數庫、通用注解、字符串處理、I/O等。

                                                                          </li>

                                                                        • javatuples:正如名字表示的那樣,提供tuple支持。盡管目前tuple的概念還有留有爭議。

                                                                          </li> </ul>

                                                                          網絡爬蟲

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

                                                                          • Apache Nutch :可用于生產環境的高度可擴展、可伸縮的網絡爬蟲。

                                                                            </li>

                                                                          • Crawler4j:簡單的輕量級爬蟲。

                                                                            </li>

                                                                          • JSoup :刮取、解析、操作和清理HTML。

                                                                            </li> </ul>

                                                                            Web框架

                                                                            用于處理Web應用程序不同層次間通訊的框架。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!