Github 上其实有个类似的文章,我也整理一下我自己的列表吧,大部分都是我在用的或者曾经用过的。
JVM环境
JVM语言
- Groovy 语法最接近 Java 的 JVM 语言,但是是动态语言,做 DSL 非常方便,GroovyClassLoader 也可以直接做 Java 的 HotSwapClassLoader。
- Scala 可能是语法最复杂的语言,有 FP 有 OO,语法糖非常多,应该算现在最流行的 JVM 语言,也为 JVM 语言提供了很多很高质量的库。
- Clojure JVM 上的 Lisp,老实说我没啥了解。
打包工具
- Apache Maven 很成熟的打包、项目管理、依赖管理工具。
- Gradle 基于Groovy的新一代的Maven,语法更简洁易懂,多项目管理,插件开发更加简单。
IDE
- IntelliJ IDEA 毫无疑问当前最好的 Java 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 的子项目。
集合
- Highly Scalable Java 据说 Dr. Cliff Click 是首个 Lock-Free Wait-Free HashTable 的大神。2007年的Presentattion
工具包
- 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 把整个项目都搞复杂了。
模板引擎
- Beetl 国人出品的模板引擎,几年前我写 ChaosBlog 的时候就用了。
- FreeMarker
- Velocity
同人逼死官方
- 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。