java - 服务器端和客户端框架

标签 java jsf gwt primefaces client-server

我知道这是一个相当常见的问题,但读了很多书后我仍然无法理解这个概念。

到目前为止,我所理解的是,服务器端和客户端语言的主要区别在于,第一个语言需要由服务器解释才能发送到浏览器,而第二个则不需要。

我曾使用过 Vaadin,我知道这是一个服务器端框架,因为 java 代码需要解释为 HTML 和 Javascript 才能发送到浏览器。但后来我读到 GWT 是客户端,我不明白为什么,因为我们使用 Java 小部件设计所有页面元素,并且它们需要解释为 HTML 和 Javacript,对吧?那么,GWT 不应该是一个服务器端框架吗?

那么 JSF 呢?我正在与 Primefaces 合作,并开发使用 beans 来获取服务器信息的 xhtml 文件。这意味着 xhml 文件是客户端而 Java bean 是服务器端,对吗?

谢谢!

最佳答案

这与编写代码的语言无关,而与代码的运行位置有关。

GWT 是一种客户端技术,就像 TypeScript 或 CoffeeScript 一样:它们首先必须被编译或转译(对于 GWT 来说是真正的编译)为 JavaScript。编译必须在构建时完成,然后再将应用程序部署到服务器。一旦编译为 JavaScript,您就不需要服务器:脚本可以打包到浏览器扩展、移动应用程序中,或者只是在文件系统之外运行(或者部署到 Node.js 服务器以作为服务器端代码运行! ).
您可以与 Dart 进行类比:dart2js 将 Dart 代码转换为 JavaScript,以便它可以在浏览器中运行,并且/或者您可以在服务器端的 DartVM 中运行 Dart 代码。

JSF 是一种服务器端技术:事物在服务器中运行并生成由浏览器(客户端)解释的代码(HTML、JavaScript、CSS)。

我无法真正区分 Vaadin,因为我不知道它的架构。如果 GWT Widget 必须预先编译,那么它将是一种服务器端技术,生成高度动态的网页(因此它们甚至可以离线运行)。如果它即时编译 GWT 小部件,那么它会介于两者之间;但它主要是一种服务器端技术。

关于java - 服务器端和客户端框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25809772/

相关文章:

jsf - 如何在 JSF 验证器中传递第二个值?

jsf - 如何在新选项卡中打开 PDF 文件

jsf - c:for每个项目都没有从支持bean更新

java - GWT 中两个 MultiUploader 出现错误

java - GWT 计时器生命周期

java - JSF 弹出页面到父(开启)页面

java - 服务占用太多内存

Java ConcurrentHashmap 问题

java - 在 Windows 7 中运行 Play 应用程序时为 "RuntimeException: Problems with NPM resolution"

java - 在 Eclipse 中处理 GWT super 源