轻量级Java Web框架 - 特定要求

emb*_*oss 21 java frameworks

我第一次遇到例如Ruby的Sinatra框架或PHP的Zend框架时,我想知道Java中是否有足够的东西,这一切看起来都很臃肿.虽然周围有无数的框架,但到目前为止我还没有找到任何框架,我认为这对于我想要实现的架构是完美的.

我想设计一个对Javascript很重要的Web应用程序,在客户端上实现大多数应用程序逻辑,Java后端或多或少只是用作数据存储或执行复杂的计算.

我确实在这里查看了相关的问题,但我找不到完美的答案,每个建议的解决方案都有一个不符合要求的怪癖.

所以这就是我要寻找的,一个具有以下功能的开源框架:

  • 约定优于配置
  • 除了web.xml之外没有XML配置
  • 纯Java(没有Scala,没有Groovy,......)
  • 自然的REST风格的URL,例如/ news/2011/7月(没有.do,没有.jsp,...)
  • REST感知
  • 它不应该强迫我在应用服务器上部署(例如EJB应该是可选的)
  • 会话支持会很好,但不是强制性的
  • 像Rails中的代码生成将是很棒但不是强制性的
  • 最小的依赖性,总体规模小
  • MVC会很好,但是
    • 我希望能够选择M部分,自己选择持久性库(没有捆绑).
    • 没有自动生成的视图代码,HTML,Javascript和CSS
    • 一个集成的模板语言会很好,但它应该是简约的(简单的控制流,访问模板变量)
    • 布局支持(即您可以为类似视图指定通用模板)
    • 自由选择视图的Javascript框架

基本上这意味着MVC框架为我做路由并为视图提供模板支持,但其余的是完全模块化的,没有魔力.是否有任何简约框架可以提供这种(或者至少是模块化的,以便以这种方式配置)?

Dan*_*ath 15

如何玩框架

约定优于配置

Play只有很少的配置文件.其大多数结构是按惯例.例如,基本结构如下:

|
+---/app - All executable artifacts go here (java files, conf files and view templates). 
|     |
|     +---/model  - Your model Java classes.
|     |
|     +---/view   - Your view templates.
|     |
|     +---/controller - Your controller classes
|     
|---/conf - Contains all configuration files for the application. Initially contains application configuration and routing table.
|     
|---/lib  - Libraries your appliaction needs. Added automatically to classpath.
|     
|---/log  
|     
|---/public - Public stuff are your static assets that your server gives directly
|     
|---/test
|     
|---/tmp  - All your temporarily compiled .class files are here
Run Code Online (Sandbox Code Playgroud)

除了web.xml之外没有XML配置

Play没有XML配置,包括没有web.xml.它有一个路由文件.请参阅下面的示例,它用于路由.

纯Java(没有Scala,没有Groovy,......)

它是纯Java,但您可以通过插件使用Scala或Groovy.

  • 自然的REST风格的URL,例如/ news/2011/7月(没有.do,没有.jsp,...)
  • REST感知

从网站:
Play is a real "Share nothing" system. Ready for REST, it is easily scaled by running multiple instances of the same application on several servers.

实际上,以类似Rest的方式进行路由非常简单:

 # Play 'routes' configuration file…

 # Method   URL path         Controller

GET        /                Application.index
GET        /about           Application.about
POST       /item            Item.addItem
GET        /item/{id}       Item.getItem
GET        /item/{id}.pdf   Item.getItemPdf
Run Code Online (Sandbox Code Playgroud)

一旦你习惯了玩一下,就不难猜出哪个会去哪里.

  • 它不应该强迫我在应用服务器上部署(例如EJB应该是可选的)

它没有.实际上,您可以通过保存文件进行部署.EJB是完全可选的.war,.ear也是其他形式的部署.

像Rails中的代码生成将是很棒但不是强制性的

我认为它不会产生太多的代码,但我不是100%的代码.它会自动创建所有必需的文件夹并实例化一个基本的示例页面.我不知道Rails是否会产生任何其他东西......

MVC会很好,但是
- 我希望能够选择M部分,自己选择持久性库(没有捆绑).
- 没有自动生成的视图代码,HTML,Javascript和CSS
- 集成的模板语言会很好,但它应该是简约的(简单的控制流,

请参阅Play中的MVC

  • 认为这是一个小小的反击点.Play模型必须使用JPA或扩展Play附带的某些Model类.有关详细信息,请参阅Play框架模型.
  • 它不会生成HTML虽然你可以使用你的模板语言的内部.html,.css,.js和其他文件来创建动态页面.
  • 我有基于Groovy模板语言的内置模板语言,例如

    You have ${emails.unread ?: 'no'} ${emails.unread?.pluralize('email')} !

其他优点:

  • 编程非常有趣.
  • 我是否提到了允许您通过保存源文件重新部署应用程序的hotswap?
  • 伟大的错误日志.

缺点:

  • 这是51MB不确定这是否符合轻量级:/