Java 框架选择题

Posted

技术标签:

【中文标题】Java 框架选择题【英文标题】:Java Framework Choice Question 【发布时间】:2011-03-04 23:32:47 【问题描述】:

我们确实有许多可用的 Java 框架。 Struts、Swing、JSF 2.0、Spring 等按其优先级使用。其实我也不知道有多少!

但是,由于我对 Java 比较陌生,即使学习了他们的架构,我也无法决定哪个框架可以用于什么类型的项目!

另外,我对混合使用 Spring + JSF 等框架感到困惑。它有什么好处?

让我感到困惑的另一件事是市场上可用的 UI 组件。就像,我们确实有 Primefaces、Ice-faces、MyFaces、Rich-faces。他们可能支持也可能不支持内置 AJAX。它们也可能包含一些错误。可以直接为任何项目提供最佳解决方案的Framework + UI组件的最佳选择是什么?

【问题讨论】:

JSF 主要是表示层。 Spring 还为其他应用程序层提供了一些东西(如果您正在考虑 MVC,则为模型和控制器)。 【参考方案1】:

没错。看起来问题是关于一切的。特别是它在逗号上提到了 Struts 和 Swing。我确信 Swing 也是一项农事,但这是许多非 Web UI 框架之一。还有 ORM 框架和许多其他类型的。我们可以称之为 EJB 和 Spring 框架吗?我打赌我们可以。不好的是,虽然在直观的层面上我们可能经常判断某物是否是一个框架,但我从未见过任何关于软件框架是什么的好的定义。 在大约 50% 的情况下,我们谈论的是 Web 框架,例如 Struts、JSF、Wicket、Velocity、HybridaJava 或 Spring 的 MVC 部分。 Java web 框架中只有大约 50 个,它们的性质和价值都非常不同,但是比较它们确实令人头疼。最近,我注意到***上有一个关于 Web 框架的新页面,而且还在不断增长。迟到了,但现在拥有它真是太好了。那里的表是一个很好的开始。

【讨论】:

【参考方案2】:

我们确实有许多可用的 Java 框架。 Struts、Swing、JSF 2.0、Spring 等按其优先级使用。其实我也不知道有多少!

Swing 不是基于 Web 的框架。它是一个桌面 UI 框架。您可能对 Spring MVC 感到困惑。

所有这些框架都可以分为两种:

    基于请求的 MVC 框架(Struts、Spring MVC)。 基于组件的 MVC 框架(JSF、Wicket)。

基于组件的 MVC 框架被视为基于请求的 MVC 框架的进一步发展。如果您想要更多抽象,请选择基于组件的 MVC 框架(即您基本上以视图和模型结束)。如果您想对控制器部分进行更多控制,请选择基于请求的 MVC 框架。

另见

Struts2 or JSF Component based vs Request based Java frameworks Choosing a Java web framework now

但是,由于我对 Java 比较陌生,即使学习了他们的架构,我也无法决定哪个框架可以用于什么类型的项目!

作为个人的意见,选择 JSF 2.0。

另见

Sun JSF 2.0 tutorial Coreservlets JSF 2.0 tutorial Simple JSF 2.0 CRUD example

另外,我对混合使用 Spring + JSF 等框架感到困惑。它有什么好处?

Spring 更像是一个注入(控制反转)框架。有人可能会说,它是 EJB 的替代方案。 Spring MVC 是一个基于请求的框架。

另请参阅:

Wikipedia: Inversion of Control Spring vs others

让我感到困惑的另一件事是市场上可用的 UI 组件。就像,我们确实有 Primefaces、Ice-faces、MyFaces、Rich-faces。他们可能支持也可能不支持内置 AJAX。它们也可能包含一些错误。可以直接为任何项目提供最佳解决方案的Framework + UI组件的最佳选择是什么?

MyFaces 是另一个 JSF 实现,对于其余部分,您只提到 JSF 组件库。这些旨在在JSF 实现的顶部 使用。选择哪一个取决于哪一个最适合您的功能要求(可换肤性、可扩展性、可增强性等)。

作为个人意见,PrimeFaces 2.0 看起来最好。

另请参阅:

What's the difference between JSF implementations and component libraries What's the difference between JSP/Servlet/JSF

【讨论】:

【参考方案3】:

有针对不同类型问题的框架。

JSF 是一个基于 Servlets/JSP 并为您处理 Web 前端的 Web 框架(或者更好的是 Web 框架的 API),而 Spring 是一个用于配置应用程序并将应用程序组件绑定在一起的框架一个正在运行的应用程序。

因此,您可以构建使用 JSF 框架创建 Web-UI 并与用户交互的小组件,使用 Hibernate 存储和检索数据库中的数据,并将它们与 Spring 绑定在一起以创建一个成熟的网络应用程序。

由于 JSF 只是一个 API,因此您需要一个实现,例如 IceFaces。如果您清楚地遵循规范,则可以轻松替换实现。因此,您无需重写整个应用程序即可从 IceFaces 切换到 MyFaces。

【讨论】:

【参考方案4】:

没有银弹。

如果您无法选择其中之一,请让您的软件架构师根据您的需要进行选择。或者你必须和他们一起玩。

【讨论】:

+1 绝对。这取决于您的项目,您的里程可能会有所不同。找到您需要解决的问题,然后将解决方案与您的问题相匹配。

以上是关于Java 框架选择题的主要内容,如果未能解决你的问题,请参考以下文章

为什么选择 Spring 作为 Java 框架

为什么选择 Spring 作为 Java 框架?

WebDriver+java z中怎么处理Element+vue框架的下拉选择框的选择操作?

Java 微服务框架新选择:Spring 5

面试官问你:为什么选择spring作为Java框架,你该怎么回答?

如何选择一个Flex框架