与Joonas Lehtinen讨论Vaadin 7

最初在3月的《 JAX杂志》上 ,我们与Vaadin的创建者兼首席执行官进行了交谈,介绍了该团队进行了18个月的发布以及他们对Google Web Toolkit的承诺。

JAX杂志:对于那些不知道的人,Vaadin到底是什么?

Joonas Lehtinen:作为起点,Vaadin是用于构建富Web应用程序的框架。 基本思想是,只需在服务器端编写Java,就可以编写完全现代化的富Web应用程序。 因此,当您在服务器端运行Java时,从根本上讲,这意味着您拥有所有工具,所有库,所有框架-您已经在使用并且已经知道的所有内容。 所有这些都对您可用。 Vaadin然后在浏览器端自动创建UI。

因此,它试图在两者之间找到中间立场?

如果考虑构建富Web应用程序的原始方法,那么您已经在客户端用HTML和JavaScript构建了基本的用户界面,那么您已经决定要发布的某种Web API,即REST API。 接下来,您将构建服务器端服务层,在其中为用户界面进行所有后端生成。 在大多数情况下,您拥有一个真正的后端层,可以执行其他操作。 在Vaadin中,您可以构建服务器端层。 其余的将自动提供。

那么,目前有多少人使用Vaadin?

统计上,我们正在最仔细地查看在社区方面看到的唯一身份访问者人数,目前每月有105,000。

您最初创建Vaadin的原因是什么,这些核心价值观今天仍然适用吗?

最初的原因是我在1997年领导一个正在构建医院系统的团队。 那是我们在Perl和当今工具中构建的一个非常复杂的Web应用程序。 最终,它变成了一大堆意大利面条,因为我们没有合适的工具或库,因此实际上我们在2000年就开始考虑Vaadin。

首先,我们想为自己创建一个工具,然后我们有点爱上该工具,并决定将其开源,并在2002年通过发行版将其发布给公众。我想构建Vaadin的原因仍然存在,我们在2000年的价值观仍然存在。 我们仍然试图降低复杂度。 我们仍然尝试尽可能简单地为Web构建美观的UI。 这是在业务环境中,而不是用于编写网站的工具。 它是用于编写业务应用程序的工具。 但是,正如您所听到的那样,历史已经很长了-它已经有12年的历史了,这就是我们要构建Vaadin 7的部分原因。

您能解释一下Vaadin背后的核心概念吗?

这是一个UI库,因此您看到的所有内容都集中在UI组件上。 基本思想是仅通过由现成的组件组成整个UI即可构建整个UI。 像Swing这样的UI框架很少,它们只是将组件放在其他组件中,然后将它们连接起来,并开始表现为用户界面。 我们一直非常专注于将思想集中在UI层和Web上。 从那里扩展,我们具有从UI层到各种数据源的数据绑定。 我们有不同的工具可用于自定义用户体验-外观,行为方式等,但核心仍然是UI组件。

我要说的是,这让Vaadin与大多数UI组件实际上都驻留在服务器端内存上的竞争大为不同。 您可以在服务器端仅使用纯Java或实际上可以使用任何JVM语言编写,并希望在服务器端为您处理所有用户交互。 您不必考虑这些用户交互实际上是如何通过有线方式发送到Web浏览器的,它们是如何呈现的以及浏览器的行为如何不同。 大多数时候,您可以在树,表和选项卡中进行更高层次的思考。 不像HTML元素和CSS样式。

我认为您在此涉及到了什么–您与其他JVM框架有何不同?

它主要由相当大的项目使用。 我们试图在开发人员摘要与您需要多少帮助来控制演示文稿之间找到一个很好的平衡,但是仍然保持UI的构建和UI的维护相对容易和紧凑。

似乎也有混合和匹配的能力–似乎非常可定制。 您也想过这个目标吗?

绝对是 我们几年前引入的最强大的概念之一是组件目录。 因此,现在我们有了一个目录,社区可以在其中发送自己的组件,以便人们可以重复使用它们。 令人高兴的是,我们确实确定了组件的包装,组件的分布以及开始使用它们的方式。 社区现在已经在其中提交了300个组件,例如将Maven定义添加到pom文件中或下载该组件,然后Vaadin接管并将该组件自动集成到您的应用程序中。

Google Web Toolkit现在位于Vaadin 7中,它将扮演什么角色?

实际上,我们已经在Vaadin的关键部分使用GWT了5年了,到目前为止,我们主要将其用作渲染层。 因此,我们一直在自己内部使用GWT,也将其用作小部件作者构建自己的Vaadin小部件的工具。 但是现在在Vaadin 7中,我们正在做一些不同的事情。 我们已经将整个Google Web工具包合并到了Vaadin中,并将其直接打包在Vaadin产品中。

这有两个不同的含义。 第一个是Vaadin中根本没有额外的依赖项。 它不依赖于Google Web Toolkit外部的任何东西-一切都在一个包中。 这意味着我们可以修复错误,并且可以将其作为统一解决方案提供。 对我们的另一个含义是,虽然Vaadin现在纯粹是服务器端框架,但Vaadin内置了一个非常强大的客户端模型。 您在GWT中拥有的所有作品都已内置到Vaadin 7中。

因此,它带来了一些新概念,将您带入了一个新的高度?

我们发现在Vaadin中可以使用三种不同的抽象级别。 传统的,我想说最有效的一种是在服务器端编写Java代码。 这是由组件组成的UI,但是现在当我们还内置了GWT时,您还可以执行客户端UI。 您可以编写Java,将其编译为JavaScript并在客户端运行。 在某些情况下,当您想要自定义更多内容或希望降低延迟或构建脱机应用程序时,这确实很强大。 第三个抽象级别是通过纯GWT并用JavaScript编写HTML5层。 力量所在的地方是,如果您确实想要的话,您必须经过这些层次。 大多数时候,您可以保持最高的抽象级别,如果不需要,则不必接触这些底层。

您能解释一下Vaadin如何支持其他JVM语言吗?

所有Vaadin组件,仅是纯Java对象(PO​​JO)。 您可以用Java做的任何事情,都可以在Vaadin中做。 因此,您基本上可以使用任何JVM语言来构建Vaadin UI。 我们开始看到人们使用Groovy,Scala和Clojure以及那种语言来构建Vaadin UI。

我们的团队越来越多地使用Scala。 看到我们一直在享受着同样的好处,这真是太好了。 我们希望最小化为了在Vaadin中构建良好的UI而必须编写的代码行。 Scala确实非常紧凑,并且还可以最大限度地减少构建任何应用程序所需编写的代码行。 当您将这两件事结合在一起时,实际上您就有一种有效的方式来编写Vaadin接口。

HTML对普通Java开发人员有多重要,或者会变得更大?

我认为,一切都在HTML5之上运行。 该技术本身已经变得如此强大,以至于实际上不再需要构建任何客户端应用程序。 几乎不需要构建Java Swing应用程序或类似的东西。 客户端应用程序仍然唯一存在的地方是iOS和Android的移动空间。

Vaadin在这种情况下如何满足移动开发需求?

您在Vaadin中构建的所有内容都可以用于现代移动浏览器。 它们可以直接在iOS和Android设备上运行,但我们也想设置看起来本机的窗口小部件。 那是一个名为Vaadin TouchKit的库。 它只是向Vaadin添加了具有本机外观的小部件。 如果您对内置于Vaadin核心中的小部件感到满意,则可以完全忽略它。

早在6月,Vaadin成为GWT背后的指导委员会的成员。 希望成为其中一员的背后原因是什么?此后发生了什么?

我们开始听到社区提出的问题,GWT发生了什么? 如果它不能取代GWT,那么Vaadin将会发生的事情就是GWT将以某种方式消失。 我们不得不以某种方式回答这些问题。 我们要么淡化GWT在Vaadin中的角色,要么准备从GWT过渡到其他客户端技术。 或者以某种方式承担更多责任,以确保GWT在未来蓬勃发展。

我们选择了后者。 实际上,当Google希望在同一领域吸引更多玩家时,这真是一件好事。 我不能说封闭的方式来开发GWT,但完全是在Google内部进行的。 他们也想向其他贡献者敞开大门。 对于我们来说,这确实是一个很好的时机,我们可以成为将来使GWT变得更强大的公司之一。

您帮助制作了“未来GWT报告”。 您从中获得的见解有多重要?

我们基本上想看看我们在GWT的情况。 我们询问了大约1,350名人们有关他们如何使用它以及他们希望将来在GWT中看到什么的问题。 我们完全不知所措。

我认为这确实表明,目前GWT的使用非常强大。 它通常在企业中被内部应用程序使用,因此它不像其他面向消费者的Web技术那样可见。 它被预算巨大的大型项目使用。 这些项目不会消失。 这种观点巩固了我们的观点,即我们应该在GWT上进行投资,并在GWT之上越来越多地建立业务。

调查显示,仍有大量的企业支持它,我想您也有同样的感觉吗?

您可能已经看到Vaadin在过去与GWT竞争。 就像我们的建议一样,无论您应该使用GWT还是Vaadin,您都应该在客户端或服务器端进行构建。 现在,通过合并这两件事,我们希望人们不必再做出选择。 他们可以使用Vaadin,并且如果他们认为需要构建客户端应用程序,那么在Vaadin中也可以这样做。

如果GWT报告中有最重要的发现,那是什么?

对我来说,GWT新闻的重要性。 对我来说,最令人惊讶的是,它实际上是以欧洲为中心的。 我期望美国在报告中排名第一。 还有更多的欧洲用户,这令我感到惊讶。

Vaadin 7遇到了一些延迟–为什么会发生这种情况?

Vaadin 6在2009年对我们来说确实非常成功,我们在Vaadin 6的基础上构建了8个次要发行版。就像每年2到3个次要发行版一样,我们在此新增功能上建立了很长时间。 同时,我们将所有向后兼容性都保留在API中,如果我们真的可以对API进行一些更改,我们就开始在Vaadin中进行大量希望更改的事情。

积压的数量已经增长了很多年,与此同时,Vaadin的内部结构也越来越老了。 有些内部结构与我在2002年编写的内部结构完全相同,因此它们的历史悠久。

我们有一个很大的愿望清单,我们希望在Vaadin 7中实现,而当我们在18个月前开始时,我们有很多事情我们真的很想纳入清单。 我们最终为自己建立的清单太长了。 我们预计要实现这些功能需要花一年的时间,但我们确实失败了。 我们都从列表中删除了一些非常重要的功能,并将这些功能推迟到了Vaadin 7.1,同时,我们在其他里程碑中也有所降低。 实施这些计划所需的时间比我们预期的要长。

但是问题的一部分还在于我们是否想在JavaOne上交付它,或者是否会失败,Devoxx,而我们实际上都失败了。 但是现在看来,它非常可靠,可以在2月4日在JFokus上发布。

因此,对您来说,这似乎是一个很大的发布-Vaadin 7的一些主要功能是什么?

在Vaadin 7中,我们有三个不同的主题。我们希望以这样的方式来拥抱开发人员:我们可以使开发人员在必须这样做时可以更轻松地通过抽象级别。 在Vaadin 6中,我们一直在引导开发人员采用服务器端开发模型,并使某些不必要的事情难以完成。 我们试图消除框架中内置的任何障碍。 那就是GWT进来的地方。

另一个是我们对附加系统的爆炸感到非常满意,因此我们希望使Vaadin的构建新扩展和新组件变得更加容易。 我们在Vaadin中添加了很多扩展点,但是我们还更新了将客户端连接到服务器端的通信层,这种方式现在编写新的插件要容易得多。 我们还使包装现有JavaScript组件变得更加容易。 我要说的第三件事是我们在Vaadin 7中进行了一次相当大的Spring清理。

听起来像!

最大的例子之一是表单API。 应用程序充满了表单和编辑器,在Vaadin 6中,我们有一个非常强大的表单概念。 麻烦在于它不能完全自定义,当人们构建这些表单时,他们想自定义外观和验证方式。 然后,您结束了在Vaadin 6中默认表单之上的非常复杂的自定义的接线。在Vaadin 7中,我们以基本构建显式表单的方式来解决了这一问题,然后提供了一些帮助程序类来将这些表单绑定到后端数据源。 因此,您可以首先将自定义项直接放入代码中,而不必在创建表单后尝试更改默认值。

感谢Joonas与我们交谈!

该采访最初出现在《 JAX杂志:现实检查》中。 在这里找到更多有关该问题的信息


翻译自: https://jaxenter.com/discussing-vaadin-7-with-joonas-lehtinen-106257.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值