简单的Java Web框架

50

是否有像Sinatra(适用于Ruby)或Web.py(适用于Python)一样简单的Java Web框架?

14个回答

52

如果你想要一个严格的Java框架,Spark可能是一种选择:

import static spark.Spark.*;

public class HelloWorld {
   public static void main(String[] args) {
      get("/hello", (req, res) -> "Hello World");
   }
}

3
玩起来看起来很棒,但它看起来是一个全栈框架。Sinatra不打算成为一个全栈框架,而Spark看起来更接近于Sinatra的简洁性。 - Jeff Wigal
3
Spark也支持Java 8的Lambda表达式:get("/hello", (request, response) -> { .. }); - micha
1
Spark不支持任何类型的依赖注入或IoC容器支持,这严重限制了它的使用,我认为。 - TheJediCowboy
我认为Spark没有依赖注入和那些神奇的东西是一个优势。 - nyholku

22

Play。虽然我没有亲自尝试过,但听说它非常优秀,并且对初学者来说相当友好。


3
玩起来很酷,我对教程印象深刻。 - Andreas Dolk
2
我的一个朋友玩了一会儿。他似乎对它感到满意。 - Thomas Owens
6
玩法很棒 - 我在几个项目中都用过。Play提供的重要优点/简化如下:
  1. 自包含的 Web 服务器。无需将其部署为 WAR 到单独的 Web 容器(如 Tomcat)。
  2. 不使用Servlet的MVC。
  3. 修改源代码、保存、刷新浏览器 - 无需部署新的war。=非常快速的开发。
  4. 非常简单易学。
  5. 使用 ORM(默认为 Hibernate)来简化数据库交互。
- Mark S
3
Play 是基于控制器和路由配置文件的概念。Sinatra 则是基于内部 DSL 来定义动词和 URL 的处理程序。它们并不很匹配。http://www.sparkjava.com/ 看起来更加匹配,但我无法保证其成熟度。 - Johannes Brodwall
在 Play 框架中,Java 是一个次要的语言。它也违反了 J2EE 开发的规则。绝对不建议使用它。 - Kyle Luke
@KyleLuke 尽管如今情况不同,但在 Play 版本 1 时 Java 是一等公民。 - helpermethod

17

我认为用Java生成网页内容最简单的方法是编写一个Servlet。就像web.py允许您定义GET方法一样,您可以实现Servlet的doGet()方法并将数据直接返回给客户端。

这里是Servlets教程的链接。您还需要知道如何打包和部署Web应用程序;对此,我通常会指向Tomcat手册(参见“第一个Web应用程序”一节)。

编写和部署Java Web应用程序不会像Ruby或Python那样快,但Java并不特别以其简洁性而闻名。

如果您不一定需要Java,请查看Grails。它是一个基于Groovy构建的Web应用程序框架,Groovy是一种类似于Python和Ruby的动态语言,可编译成JVM。


1
+1 推荐Grails。我建议也看看Roo项目。 - Perpetualcoder
3
J2EE已经过时,Java EE依然存在。这是Servlets教程的正确链接:http://java.sun.com/javaee/5/docs/tutorial/doc/bnafd.html。 - BalusC
3
Tomcat远非像web.py那样简单。 - user177800
4
一旦你编写完servlet的代码,它们的简单性就结束了。然后你需要将它们打包成烦人的bundle文件,并运行一个烦人且过于复杂的J2EE servlet容器,它带有一个航天飞机驾驶舱那么多的开关和控制器。虽然可能可以使用Jetty,但它仍然有太多选项。 - Julian Morrison

12

JAX-RS.

Java EE 6服务器,如GlassFish默认捆绑它。

如果您使用Tomcat,您可以使用JerseyApache CXFRestlet实现。

使用JAX-RS注释可以感觉像Sinatra或Merb。顺便说一下,您不必使用Java作为语言,您可以使用Scala、Groovy、JRuby等。


7

7
如果你只是在寻找一个纯Java的演示框架,那么对于我来说,Stripes是Java MVC框架中最接近RoR哲学的:简单、优雅且需要最少的配置。
Stripes开创了Java Web开发中“约定优于配置”的方法。虽然一些其他框架也采用了它的一些原则(如Spring MVC或带插件的Struts2),但我仍然更喜欢Stripes,因为它只做一件事情,并且做得很好。

1
你有在专业环境下使用过它吗?它是否能很好地与 AJAX 和 JavaScript 配合使用? - darpet
1
@darko 是的,与它一起工作很愉快。关于 AJAX 和 JavaScript,请查看官方网站上的 AJAX 部分和各种 用户添加,或者访问 The Stripes Book Blog 获取更多示例。 - Pascal Thivent

5

3
如果您需要开发业务或数据库应用程序,OpenXava 是一个不错的选择。OpenXava 允许您只编写域类,而无需代码生成,便可开发完整的 AJAX Web 应用程序,并生成可立即投入生产的应用程序。少量代码,巨大成果。

2
你能推荐一个相关的教程吗? - Gapchoos
1
OpenXava网站上有一个快速入门教程。 - Chris Snow
1
@Javier,你需要补充说明OpenXava应用程序是作为门户服务器(如Liferay)中的端口部署的。同时,在OpenXava应用程序中创建REST API也不是一件容易的事情。 - joshua

3

3

查看SerfJ:Java中最简单的REST框架

使用SerfJ是开发Java REST Web应用程序的最简单方法。它帮助您在优雅的MVC架构上开发应用程序,更注重约定而非配置,因此,例如,您不必拥有配置文件或注释来指定哪个视图为控制器方法提供服务。但是,SerfJ是非常灵活的库,因此,如果您想跳过这些约定,可以根据自己的喜好配置应用程序的行为。

该框架尝试满足JSR 311规范,但并不遵循该规范的每个要点,因为目的是拥有一个非常直观的库,并且规范的某些方面超出了SerfJ的范围。

SerfJ是开源的,并在Apache许可证第2.0版下发布。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接