原文地址.
Dropwizard 跨越了 作为库和框架 之间的界限.(Dropwizard straddles the line between being a library and a framework.)
它的目标是为生产就绪的(production-ready) web 应用 提供高性能, 可靠的实现.
因为此功能被提取到一个可重用的库中, 所以你的应用程序能够 保持精简和专注, 减少了上市时间(time-to-market)和维护负担.
1 通过 Jetty 使用 HTTP
因为一个 web 应用不能没有 HTTP, Dropwizard 使用 Jetty HTTP 库将一个 HTTP server 直接嵌入的你的项目中.
Dropwizard 没有将你的应用程序交给一个复杂的应用程序服务器, 而是使用一个 main 方法来启动(spins up) 一个 HTTP 服务器.
将你的应用程序作为一个简单的过程运行, 消除了 Java 在生产中许多令人讨厌的方面(unsavory aspects), 比如: 没有PermGen问题, 没有应用程序服务器配置和维护, 没有神秘的(arcane)部署工具, 没有类加载器问题, 没有隐藏的应用程序日志, 没有尝试调整单个垃圾收集器以处理多个应用程序工作负载.
Dropwizard 允许你使用所有现有的 Unix 进程管理工具.
2 通过 Jersey 实现 REST
对于构建 RESTful web 应用, 我们发现没有任何东西可以在 功能和性能方面 胜过 Jersey (JAX-RS参考实现).
它允许您编写干净, 可测试的类, 这些类将 HTTP 请求 优雅地映射到简单的 Java 对象.
它支持流式输出, 矩阵URI参数(matrix URI parameters), 条件 GET 请求等等.
3 通过 Jackson 使用 JSON
在数据格式方面, JSON 已经成为 web 的通用语(lingua franca), 而 Jackson 是 JVM 上的 JSON 之王.
除了闪电般的速度(lightning fast), 它还有一个精密的(sophisticated) 对象映射器, 允许你直接导出域模型(domain model).
4 用于监控的 Metrics
Metrics 库可以完美完成监控任务(rounds things out), 为你提供 对生产环境中代码行为 的 无与伦比的(unparalleled) 洞察力.
5 其他集成的工具
除了Jetty, Jersey 和 Jackson 之外, Dropwizard 还包括许多库,帮助快速高效的开发.
-
Hibernate Validator 是 JSR 349 参考实现, 提供了一个简单的声明性的框架, 用于验证用户输入同时生成有用且 i18n 友好的错误信息( i18n-friendly error message).
-
Apache HttpClient 和 Jersey 客户端库允许与其他 web 服务(web service) 进行低和高层交互(low- and high-level interaction).
-
JDBI 是在 Java 中 使用关系型数据库的最直接方式.
-
Liquibase 是一个 在开发和发布周期中检查数据库模式(database schema)的 好方法. 它应用高级数据库重构而不是一次性 DDL 脚本(one-off DDL scripts).
-
Freemarker 和 Mustache 是简单的模板系统, 适用于面向用户的应用程序.
-
Joda Time 是一个非常完整的, 明智的(sane)库, 用于处理日期和时间.
Now that you’ve gotten the lay of the land, let’s dig in!
现在你已经了解情况, 那就让我们深入挖掘吧!
这是使用 Dropwizard 实现的一个 hello world 程序, 可以从这里开始.