资源大全系列(1):Java

2,004 阅读9分钟
原文链接: blog.jobbole.com

很多程序员应该记得 GitHub 上有一个 Awesome – XXX 系列的资源整理。awesome-java 英文版(中文版的GitHub主页地址)就是 akullpp 发起维护的 Java 资源列表,内容包括:构建工具、数据库、框架、模板、安全、代码分析、日志、第三方库、书籍、Java 站点等等。

Awesome 系列虽然挺全,但基本只对收录的资源做了极为简要的介绍,如果有更详细的中文介绍,对相应开发者的帮助会更大。这也是我们发起这个开源项目的初衷。

我们要做什么?

  • 基于 awesome-java 资源列表,翻译成中文并添加更多中文相关的资源。
  • 对每个资源进行更详细的整理,并发布在伯乐在线资源频道。可参考已整理的示例:

PgCli:支持自动补全和语法高亮的 PostgreSQL 工具

Wireshark:开源的网络数据包分析软件

tcpdump:运行在命令行下的嗅探工具

如何参与本项目?

从下面的目录来看,本项目的工作量小不了,所以非常期待能有更多程序员一起来参与。

不过加入前,有几个小要求:

  • 英文还不错,能读懂英文并用自己的话复述;
  • 了解 Java 开发;

如有兴趣,请加 QQ:50872495。加 Q 时请注明「Java大全」

古董级工具

这些工具伴随着Java一起出现,在各自辉煌之后还在一直使用。

构建工具

构建及应用依赖关系处理工具。

  • Apache Maven :Maven是一款声明式构建及依赖管理工具,采用约定优于配置方式进行管理。相对Apache Ant更推荐使用Maven,前者采用了过程式管理,维护相对困难。
  • Bazel:来自Google的构建工具,可以快速、可靠地构建代码。
  • Gradle:使用Groovy(非XML)进行增量构建,可以很好地与Maven依赖管理配合工作。

字节码操作

编程方式操作字节码的开发库。

集群管理

在集群内动态管理应用程序的框架。

  • Apache Aurora:Apache Aurora是一个Mesos框架,用于长时间运行服务和定时任务(cron job)。
  • Singularity:Singularity是一个Mesos框架,方便部署和操作。它支持Web Service、后台运行、调度作业和一次性任务。

代码分析

测量代码指标和质量工具。

编译器生成工具

用来创建解析器、解释器或编译器的框架。

  • ANTLR:复杂的全功能自顶向下解析框架。
  • JavaCC:JavaCC是更加专门的轻量级工具,易于上手且支持语法超前预测。

外部配置工具

支持外部配置的开发库。

  • config:针对JVM语言的配置库。
  • owner:减少冗余配置属性。

约束满足问题求解程序

帮助解决约束满足问题的开发库。

持续集成

CSV解析

简化CSV数据读写的框架与开发库

  • uniVocity-parsers:速度最快功能最全的CSV开发库之一,同时支持TSV与固定宽度记录的读写。

数据库

简化数据库交互的相关工具。

数据结构

时间日期工具库

处理时间和日期的开发库。

  • Joda-Time:在Java 8发布前,Joda-Time是实际使用的时间日期库标准。
  • Time4J:高级时间和日期库。

依赖注入

帮助实现依赖翻转范式的开发库。

开发流程增强工具

从最基本的层面增强开发流程。

分布式应用

用来编写分布式容错应用的开发库和框架。

分布式数据库

对应用程序而言,在分布式系统中的数据库看起来就像是只有一个数据源。

发布

以本机格式发布应用程序的工具。

  • Bintray:发布二进制文件版本控制工具。可以于Maven或Gradle一起配合使用。提供开源免费版本和几种商业收费版本。
  • Central Repository:最大的二进制组件仓库,面向开源社区提供免费服务。Apache Maven默认使用Central Repository,也可以在所有其他构建工具中使用。
  • IzPack:为跨平台部署建立创作工具(Authoring Tool)。
  • JitPack:打包GitHub仓库的便捷工具。可根据需要构建Maven、Gradle项目,发布可立即使用的组件。
  • Launch4j:将JAR包装为轻量级本机Windows可执行程序。
  • Nexus:支持代理和缓存功能的二进制管理工具。
  • packr:将JAR、资源和JVM打包成Windows、Linux和Mac OS X本地发布文件。

文档处理工具

处理Office文档的开发库。

函数式编程

函数式编程支持库。

  • Cyclops:支持一元(Monad)操作和流操作工具类、comprehension(List语法)、模式匹配、trampoline等特性。
  • Fugue:Guava的函数式编程扩展。
  • Functional Java:实现了多种基础和高级编程抽象,用来辅助面向组合开发(composition-oriented development)。
  • Javaslang:一个函数式组件库,提供持久化数据类型和函数式控制结构。
  • jOOλ:旨在填补Java 8 lambda差距的扩展,提供了众多缺失的类型和一组丰富的顺序流API。

游戏开发

游戏开发框架。

GUI

现代图形化用户界面开发库。

高性能计算

涵盖了从集合到特定开发库的高性能计算相关工具。

IDE

简化开发的集成开发环境。

图像处理

创建、评价和操作图片的支持库。

JSON

简化JSON处理的开发库。

  • Genson:强大且易于使用的Java到JSON转换开发库。
  • Gson:支持在对象与JSON之间双向序列化,性能良好且可以实时调用。
  • Jackson:与GSON类似,在频繁使用时性能更佳。
  • LoganSquare:基于Jackson流式API,提供对JSON解析和序列化。比GSON与Jackson组合方式效果更好。

JVM与JDK

目前的JVM和JDK实现。

  • JDK 9:JDK 9的早期访问版本。
  • OpenJDK:JDK开源实现。

基于JVM的语言

除Java外,可以用来编写JVM应用程序的编程语言。

  • Scala:融合了面向对象和函数式编程思想的静态类型编程语言。
  • Groovy:类型可选(Optionally typed)的动态语言,支持静态类型和静态编译。目前是一个Apache孵化器项目。
  • Clojure:可看做现代版Lisp的动态类型语言。
  • Ceylon:RedHat开发的面向对象静态类型编程语言。
  • Kotlin:JetBrain针对JVM、安卓和浏览器提供的静态类型编程语言。

日志

记录应用程序行为日志的开发库。

机器学习

提供具体统计算法的工具。其算法可从数据中学习。

消息传递

在客户端之间进行消息传递,确保协议独立性的工具。

杂项

未分类其它资源。

应用监控工具

监控生产环境中应用程序的工具。

原生开发库

用来进行特定平台开发的原生开发库。

  • JNA:不使用JNI就可以使用原生开发库。此外,还为常见系统函数提供了接口。

自然语言处理

用来专门处理文本的函数库。

网络

网络编程函数库。

ORM

A处理对象持久化的API。

PDF

用来帮助创建PDF文件的资源。

性能分析

性能分析、性能剖析及基准测试工具。

响应式开发库

用来开发响应式应用程序的开发库。

REST框架

用来创建RESTful 服务的框架。

  • Dropwizard:偏向于自己使用的Web框架。用来构建Web应用程序,使用了Jetty、Jackson、Jersey和Metrics。
  • Feign:受Retrofit、JAXRS-2.0和WebSocket启发的HTTP客户端连接器(binder)。
  • Jersey:JAX-RS参考实现。
  • RESTEasy:经过JAX-RS规范完全认证的可移植实现。
  • RestExpress:一个Java类型安全的REST客户端。
  • RestX:基于朱洁处理和编译时源码生成的框架。
  • Retrofit:类型安全的REST客户端。
  • Spark:受到Sinatra启发的Java REST框架。
  • Swagger:Swagger是一个规范且完整的框架,提供描述、生产、消费和可视化RESTful Web Service。

科学计算与分析

用于科学计算和分析的函数库。

搜索引擎

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

安全

用于处理安全、认证、授权或会话管理的函数库。

序列化

用来高效处理序列化的函数库。

应用服务器

用来部署应用程序的服务器。

模板引擎

在模板中替换表达式的工具。

测试

测试内容从对象到接口,涵盖性能测试和基准测试工具。

通用工具库

通用工具类函数库。

网络爬虫

用于分析网站内容的函数库。

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)。
  • Ninja:Java全栈Web开发框架。非常稳固、快速和高效。
  • Pippo:小型、高度模块化的类Sinatra框架。
  • Play:使用约定而非配置,支持代码热加载并在浏览器中显示错误。
  • PrimeFaces:JSF框架,提供免费和带支持的商业版本。包括若干前端组件。
  • Ratpack:一组Java开发函数库,用于构建快速、高效、可扩展且测试完备的HTTP应用程序。
  • Spring Boot:微框架,简化了Spring新程序的开发过程。
  • Spring:旨在简化Java EE的开发过程,提供依赖注入相关组件并支持面向切面编程。
  • Vaadin:基于GWT构建的事件驱动框架。使用服务端架构,客户端使用Ajax。

资源

社区

有影响力的书

具有广泛影响且值得阅读的Java经典书籍。

播客

可以一边编程一边听的东西。