有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

轻量级Java web框架特定需求

当我第一次遇到Ruby的Sinatra框架或PHP的Zend框架时,我想知道Java中是否有足够的东西,这里的东西似乎太臃肿了。尽管有无数的框架,但到目前为止,我还没有发现一个适合我想要实现的体系结构

我想设计一个web应用程序,该应用程序将大量使用Javascript,大多数应用程序逻辑都在客户端实现,Java后端将或多或少地充当数据存储或执行复杂的计算

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

这就是我想要的,一个具有以下特性的开源框架:

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

基本上,这将意味着一个MVC框架,为我做路由,并为视图提供模板支持,但其余的是完全模块化的,没有魔力。是否有任何最低限度的框架可以提供这一点(或者至少模块化程度足以以这种方式配置)


共 (3) 个答案

  1. # 1 楼答案

    Spring Roo:我发现开始很容易。它可以生成UI代码,但使用它取决于您

  2. # 2 楼答案

    Play Framework

    Convention over Configuration

    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
    

    No XML configuration except for web.xml

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

    Pure Java (no Scala, no Groovy, ...)

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

    • natural REST-style URLs such as /news/2011/july (no .do, no .jsp, ...)
    • REST-aware

    从网站:
    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
    

    一旦你习惯了打球,就不难猜到哪一个会去哪里

    • it shouldn't force me to deploy on an application server (e.g. EJB should be optional)

    事实上,你是通过保存文件来部署的。EJB是完全可选的,.war.ear和其他形式的部署也是可选的

    code generation as in Rails would be awesome but not mandatory

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

    MVC would be nice, but
    - I'd like to be able to choose the M part, choose the persistence libraries on my own (no bundling).
    - No automatically generated code for the view, neither HTML, Javascript, nor CSS
    - An integrated template language would be nice, but it should be minimalistic (simple control flow,

    MVC in Play

    • 我认为这是一个次要的反驳。游戏模型必须使用JPA或扩展游戏附带的特定模型类。更多信息请参见Play framework-model
    • 它不会生成HTML,尽管您可以在.html.css.js和其他文件中使用模板语言来创建动态页面
    • 我有基于Groovy模板语言的内置模板语言

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

    其他优点:

    • 编程很有趣
    • 我有没有提到hotswap,它允许你通过保存源文件来重新部署你的应用程序
    • 巨大的错误日志

    缺点:

    • 51MB不确定这是否符合轻量级要求:
  3. # 3 楼答案

    过去,我在几个项目中使用过Stripes框架,听起来它符合您的所有/大部分标准,尤其是配置方面的约定。没有XML配置——只有一个配置。具有常规行为配置的属性文件(它是类路径的一次性添加)。对网络进行一次性编辑。配置“Stripes Dispatcher”需要xml,这是一个将请求路由到相应操作bean的过滤器。ActionBeans是自动发现的,所以你甚至不需要更新你的网站。添加更多操作bean时使用xml。您的URL都是使用action Bean上的注释、rest支持的动态ActionBean绑定、服务器端验证以及通过简单类型的内置注释进行的转换来设置的,并且能够为复杂类型创建自己的验证处理程序和转换器。使用JSP和自定义JS/CSS库。文档和支持论坛很棒。如果你遵循他们的指导,学习起来很快