Vaadin客户端应用程序理解

时间:2014-09-16 08:57:20

标签: java eclipse vaadin7

我是vaadin框架的新手并且正在浏览Vaadin Book,但却无法理解客户端Vaadin应用程序的流程。如果有人解释Vaadin客户端应用程序的工作,将非常感谢。由于vaadin提供两种开发模型,即客户端和服务器端。

2 个答案:

答案 0 :(得分:4)

other answer并不准确或彻底。所以我会在这个主题上添加自己的看法。

客户端,Schmlient-Side

Vaadin的主要观点是,作为程序员,我们的思维方式类似于构建桌面应用程序。 我们并不担心应用程序的客户端与服务器端。我们认为窗口是打开的(UI实例),带有表单({{3} })和田野&按钮(Layouts)。

纯Java

我们使用纯Java编写所有UI,Layout和Component对象。底层Components框架利用Vaadin将Java代码的用户界面部分转换为JavaScript。该JavaScript代码在运行时透明地传递给Web浏览器。因此,JavaScript用于在屏幕上绘制按钮和字段,用于检测用户何时单击该按钮或在该字段中键入内容。

App Lives On The Server

同时,您的业务逻辑仍然在服务器端的纯Java中。用户单击按钮的事实导致您的一些Java代码在服务器上执行。与在字段中键入相同;键入的文本将自动转发到服务器上的Java代码。从我们这个Java Vaadin应用程序开发人员的角度来看,整个应用程序似乎都是用纯Java运行的。 Vaadin框架自动处理以下的来回沟通:

  

[JavaScript /客户端⇆Java/服务器端]。

因此,使用Vaadin做一个Web应用程序并不像做一个Web应用程序。在大多数情况下,Vaadin开发人员无需关心HTTP,HTML,CSS,DOM,JavaScript / ECMAScript,Servlet / JSP等。所有这些网络技术确实都在使用Vaadin应用程序,但是Vaadin透明,几乎神奇地为我们处理了所有这些。我们只使用纯Java编写,以便在Vaadin中构建非常好的桌面应用程序。

所有业务逻辑,Java业务对象,SQL和数据库连接等仅在服务器上存在。 Web浏览器仅包含足够的数据和JavaScript以显示当前预期的用户界面。我认为这是旧Google Web Toolkit (GWT)的现代转世。 (忽略最后的评论是你太小了,不记得MTV播放音乐视频的时候。)

在网络浏览器上,我们只执行JavaScript。我们的用户无需在其计算机上安装Java。没有涉及Java Applet。

Vaadin "又一个Web应用程序框架"

这可能听起来难以置信或难以掌握。那是因为Vaadin的架构非常不同。 Vaadin当然不是 "而是另一个HTML模板化的Web应用程序框架"。 Vaadin的方法几乎是独一无二的;我所知道的唯一类似架构的Web应用程序开发框架是X Window System

忽略"客户端"学习Vaadin时的谈话

Vaadin团队一直致力于允许Vaadin应用程序脱机工作,而不是连接到Java服务器。但这是最前沿的研发工作,而不是Vaadin的主要目的或用例。当你读到"客户端Vaadin"可能就是在这种背景下。

可能促使你的问题的另一个背景是Vaadin书的Xojo Web Edition章节。基本上这是关于Vaadin的最新版本,为希望在客户端的Web浏览器上更多地控制JavaScript中发生的事情的高级开发人员添加了支持。但我认为这首先会分散人们对Vaadin的主要目的: Not 在客户端的Web浏览器上关注JavaScript。所以我建议在学习Vaadin时跳过那一章。

或者上下文可以指使用GWT在Web浏览器上呈现基于JavaScript的用户界面表示。学习Vaadin时可以忽略这个上下文,因为它只适用于构建自己的用户界面小部件{Vaver}内置的小部件库存{/ 3}。

Client-Side Applications中列出的许多类都是这些与GWT相关的客户端类,在学习Vaadin时应该忽略这些类。对于许多工具,浏览API文档是一种很好的学习方法。但对Vaadin来说,并非如此。在日常工作中,我们只使用列出的一小部分类。我建议改为关注an add-onVaadin API docBook of VaadinDemo site和StackOverflow。

答案 1 :(得分:1)

客户端应用程序只不过是浏览器下载的JavaScript应用程序。执行。此JavaScript应用程序使用Java编写,并由Google Web Toolkit (GWT)编译器编译为JavaScript,该编译器内置于Vaadin使用的IDE库中。

此应用程序可能与服务器上运行的Java应用程序交互,也可能不与之交互。如果没有,那么它是一个客户端应用程序。如果是,那就是服务器端应用程序。

我希望它有所帮助。