Github 上其实有个类似的文章,我也整理一下我自己的列表吧,大部分都是我在用的或者曾经用过的。

JVM环境

  • jenv 很方便安装 Java,JVM 语言,版本切换以及各类 Java 工具,无论开发环境还是生产环境都适合。开发者的微博

JVM语言

  • Groovy 语法最接近 Java 的 JVM 语言,但是是动态语言,做 DSL 非常方便,GroovyClassLoader 也可以直接做 Java 的 HotSwapClassLoader。
  • Scala 可能是语法最复杂的语言,有 FP 有 OO,语法糖非常多,应该算现在最流行的 JVM 语言,也为 JVM 语言提供了很多很高质量的库。
  • Clojure JVM 上的 Lisp,老实说我没啥了解。

打包工具

  • Apache Maven 很成熟的打包、项目管理、依赖管理工具。
  • Gradle 基于Groovy的新一代的Maven,语法更简洁易懂,多项目管理,插件开发更加简单。

IDE

ByteCode

  • ASM Java ByteCode 底层库。
  • Javassist ASM 的封装,写起来跟写 Java 一样简单。
  • Byte Buddy ASM 的封装,看起来跟 Javassist 差不多。

序列化与反序列化

  • Jackson 曾经性能最好的 json 序列化/反序列化库,现在还支持 Avro, CBOR, CSV, Smile, XML 和 YAML。
  • fastjson 在去年我测试过是性能最好的 json 序列化/反序列化库。
  • Protocol Buffer Google 的跨平台二进制序列化协议,在游戏界广泛使用多年。
  • protostuff 支持多种协议的序列化/反序列化,支持 runtime protobuf。
  • FlatBuffers Google 新一代跨平台二进制序列化协议,时间效率上比 Protocol Buffer 要好。
  • Avro 一种二进制序列化协议,Hadoop 的子项目。

集合

工具包

  • Guava 简化集合操作,各种工具类。这个小项目几乎可顶一整个 Apache Commons。
  • Apache Commons Apache Commons 啥都有。

日志

  • SLF4J Logging Facade,Format 简直不能更爽。你可能还需要 jcl-over-slf4j 来让 Spring 依赖于 SLF4J。
  • logback 你还在用被作者 Ceki Gülcü 抛弃 log4j

网络IO

  • Netty Java 首选 NIO 服务端框架,用来做游戏服务器多年,用来做 WebServer 有奇效。
  • spray Scala Http 框架,跟 Akka 完美整合。
  • OkHttp 简单易用的 http client。
  • unirest 一个易用的 REST client,依赖与Apache Commons Http。

分布式应用框架

  • vert.x 分布式 JVM 语言应用框架。
  • akka Scala 默认 Actor 实现,Actor 框架,支持分布式。我之前的游戏服务器就用这个。
  • Apache Storm 分布式流式计算框架。很适合做日志分析。
  • Hadoop 不解释。
  • Spark 并行计算框架。

机器学习

NLP

  • Apache UIMA 非结构化数据分析框架,我们现在的产品有一个 DEMO 就用他来做 NLP,好重好重。
  • Stanford CoreNLP 啥,你不知道 CoreNLP。
  • FNLP 中文 NLP 库,据说是现在中文 NLP 最好的开源库。复旦邱锡鹏老师开发。

搜索引擎

  • lucene Hadoop, Solr, Nutch 之前都是 lucene 的子项目。
  • elasticsearch ES 是你另外一个选择。

测试

数据库

  • druid 为监控而生的数据库连接池!温少加油。
  • Commons DbUtils 我就喜欢用这种轻量级的东西,错误不会爆得乱七八糟。
  • H2 Java 的嵌入式数据库。

新一代 J2EE

  • Grails 看名字就知道是山寨谁的。
  • Play Framework Play1 出来的时候相当惊艳,Play2的步子迈得有点大,扯到蛋了。
  • Lift 没用过,不评价。
  • Ninja 没用过,不评价。
  • JFinal 试用过一下,不错。Route 那里的设计依旧不是很理想,可能是作者为了避免使用 Annotation。JFinal 的插件作者 Dreampie 的另外一个项目resty的 Route 的设计就好多了,不过 resty 把整个项目都搞复杂了。

模板引擎

同人逼死官方

  • Joda Time Joda Time 还需多介绍吗? Java8 之前的唯一选择。
  • lyra 一个 recovery 做得更好的 RabbitMQ Client。
  • redisson 一个新的 Java Redis 客户端,值得 Star 观望。

其他

  • jersey RESTful Web Services 老实说我只用了他的 Annotation 定义。
  • Spring 我不喜欢Spring。
  • Guice Google 的依赖注入。
  • Spring Loaded Spring 的 HotSwap Class Loader。
  • Apache POI 读写 MS Office 库。恩,我喜欢他的命名规则,Horrible XX Format。
  • Jetty Web容器,可以做嵌入式 HttpServer。