Java RAD 组件/架构 - 给 .NET 开发人员的建议?
Posted
技术标签:
【中文标题】Java RAD 组件/架构 - 给 .NET 开发人员的建议?【英文标题】:Java RAD components/architecture - advice for a .NET developer? 【发布时间】:2011-01-05 01:00:27 【问题描述】:我是 Java 新手(但有相当多的 .NET 经验)。
我需要让 Java 应用程序快速启动并运行,因此我在这里寻找的是有关组件的建议,这些组件将简化或减少常见任务的痛苦,并且它们的回报将是立竿见影的,或者至少可以用最少的投资获得花时间学习如何使用该组件。我没有几周的时间来掌握复杂或广泛的框架——我正在寻找易于使用的插件,并消除使用原始 API 的一些问题。但是,如果原始 API 是这些任务的最佳选择,那很好,请告诉我...
数据层 我想为 mysql、MSSQL、Postgres 编写特定的提供程序,但是数据访问非常简单。我可能需要交易。你有什么建议?是否说 Spring Data Access 提供了比 JDBC 更有价值的东西?还有什么我需要考虑的吗?我的猜测是像 Hibernate 这样的东西会有点过分,而且需要很长时间才能启动和运行 - 你怎么看?
中间层 松耦合,基于接口的业务层。我需要能够通过 Web 应用程序和桌面应用程序与中间层进行交互 - 公开它的最佳方式是什么?网络服务?
桌面应用 我知道 Swing - 还有其他简单的桌面 UI 组件吗?我需要某种调度组件来运行后台任务。
网络应用 我需要某种缓存,我需要用户会话,我需要动态页面。据我所知,JSP 是 php 或其他服务器端脚本语言的 Java 等价物(并且不支持状态)。除非有一个非常直接可以使用的框架,否则 MVC 框架可能是矫枉过正的?我听说有一个相当于 ASP.NET Web 表单的 Java - 它有什么好处吗?也许 JSP 在这里就足够了?
我正在寻找实用的建议/您对组件的体验,而不是网络链接列表 :)
感谢您的建议..
【问题讨论】:
【参考方案1】:我的答案仅限于 webapp 部分,因为我想回答其他部分的内容已经被其他人回答了。
据我所知,JSP 是 PHP 的 Java 等价物
不完全正确。 JSP 可以做的不止这些。更重要的是,(ab)以 PHP 方式使用 JSP(使用内联 Java 代码作为 scriptlets)被认为是不好的做法。 JSP应该用作模板,您可以在其中使用JSTL等标签库动态控制页面流,并使用Expression Language访问后端数据。
我听说有一个 Java 等价于 ASP.NET 网络表单
它叫做JavaServer Faces (JSF)。但是有竞争,例如Apache Struts 和 Spring MVC。
- 有什么好处吗?也许 JSP 在这里就足够了?
JSF(与任何其他体面的 MVC 框架一样)将您在普通 MVC 应用程序中需要考虑的所有内容抽象出来,以便您最终得到一个 Xhtml(或 JSP)文件和一个 Javabean 类。这样您就不需要控制请求(自定义 Servlet 等)、处理请求参数(request.getParameter() 等)、基本验证/转换(需求、字符串/数字/日期输入类型转换)、更新模型值(在 javabeans 中设置已处理/转换/验证的参数)等。MVC 框架将透明地处理所有无聊的工作。
如果您只需要为每个 Saldo 开发几页,JSP 可能就足够了。但是,如果您想开发更多的页面或 Web 应用程序,那么您希望已经有一个框架,这样您就不需要一次又一次地重新发明通常的工作。
【讨论】:
【参考方案2】:AppFuse 是一个可以使用最佳实践启动和预配置各种 java 项目的工具。生成的代码也可用于实例学习。
对于数据层:JPA(Hibernate,或其他 JPA 提供程序) 对于中间层:Spring - 它非常强大,提供了许多东西,如事务支持、调度等。它可以很容易地与 Apache CXF 一起使用来公开 Web 服务。李> 对于 Web 应用程序 - JSF、Spring MVC、Struts 对于桌面应用程序 - Swing 完全没问题。它具有处理后台任务的能力。 SwingX - 一堆不错的组件。AppFuse 是一个开源项目和应用程序,它使用构建在 Java 平台上的开源工具来帮助您快速高效地开发 Web 应用程序。它最初的开发目的是消除为客户构建新 Web 应用程序时的启动时间。 AppFuse 的核心是一个项目框架,类似于您在通过向导单击以创建新 Web 项目时由 IDE 创建的框架。
AppFuse 支持以上所有功能。
【讨论】:
【参考方案3】:我会查看 Grails 以了解模型/控制器/视图机制和 Web 前端。它可以让您快速启动并运行 ORM、模型、动态页面等(它是一个 RoR - Ruby-on-Rails - 模型)。
从那里,我会考虑使用Java RMI 与桌面前端进行通信。 RMI 是 Java 的标准配置,非常适合 Java 到 Java 的通信需求。除非您有多语言/平台要求,否则我不会查看 Web 服务。 RMI 的设置非常简单,只需很少的配置。
您的启用 RMI 的服务层必须使用 Grails 提供的模型进行拦截,但这应该是微不足道的。为了减少可能的客户端/服务器不兼容(由界面更改引起),您可以通过(例如)Java Web Start 提供 Java 桌面(您将拥有一个由 Grails 提供的 Web 服务器),它可以来自 same 您的服务器正在运行的代码库。更新后端时会维护最新的部署。
【讨论】:
谢谢布赖恩,一些不错的建议,正是我想要的。用于 Web 前端的 Grails 还有哪些其他替代方案? 好吧,这里的其他答案建议了视图/控制器机制的解决方案(例如 Struts)。但是我建议使用 Grails,因为它通过 ORM 以简单和集成的方式完成了完整的 MVC。如果你选择其他东西,那么你将不得不混合和匹配各种不同的工具(这会起作用,我不反对,但它更努力)以上是关于Java RAD 组件/架构 - 给 .NET 开发人员的建议?的主要内容,如果未能解决你的问题,请参考以下文章
无辜的RAD(RAD是让你去创造和使用可复用的组件,不是让程序员“变白痴”)good
TMS Components for ASP.NET allow a RAD way of web application(也是一种RAD的开发方式)
Android架构组件使用和原理分析:ViewModel+LiveData