gwt-2.8.2下载
InfoQ自豪地展示了《 GWT Pro Web 2.0应用程序开发》一书的摘录以及作者Jeff Dwyer的访谈。1.随着时间的流逝,GWT似乎在Java社区中获得了更大的发展。 因此,已经有很多关于使用GWT开发Web应用程序的出版物。 您的书与其他书有何不同? 您认为它的优点是什么?
我对编程书籍的一般批评是,他们将前半部分花在了一些基础知识上,这些基本知识可以通过快速浏览API和文档来轻松学习,然后下半部分则提供了一些有趣的小示例,介绍了如何执行特定的高级功能。 他们是一本不错的书,但是当您坐下来开发应用程序时,您意识到您不知道如何解决围绕技术的一些基本集成问题。 我更喜欢通过示例学习,因此我一直希望我可以将源代码下载到一个大型站点。 学习GWT时,如果我花了X倍的时间来弄清楚GWT,那么我花了3倍的时间来将其与Maven,Spring Security和MVC,Hibernate&SiteMesh集成,而花了5倍的时间来弄清楚正确的架构模式。 普通香草GWT很容易。 集成细节很复杂。 这就是这本书。 通过ToCollege.net源代码的15,000行进行的徒步旅行。 我希望这本书应该能够帮助人们更快地克服困难。 对于GWT,我认为最难解决的问题之一是如何将应用程序分解为可重用的组件。 有很多不同的方法可以做到这一点,并且有很多相互矛盾的建议。 我认为值得一提的是,在您实施自己的方法之前,先了解一种方法在整个站点中如何发挥作用。
2. GWT是使用Java开发Web 2.0应用程序的一种方法。 是什么让您从其他选项中选择的呢?
我的第一个创业公司(MyHippocampus)是我尝试使用通用知识存储设备,有点类似于Chandler(来自Dreaming in Code),但是它具有很多关于可视化的想法。 最初,丰富的可视化是Flash应用程序,但是这离我的舒适区还有很长的路要走,我讨厌将Java服务器连接到Flash应用程序的笨拙之处。 我之前做过很多Swing工作,因此GWT感觉很自然,我喜欢能够在客户端和服务器上重用相同的对象。 我不确定GWT是否能够处理我扔给它的所有类似Flash的UI,但它只是把它吃光了。
3. GWT 1.5最近发布,您的书基于1.5版本。 在最新版本的GWT中,对您来说最有价值的补充是什么?
我认为答案随着时间的推移而不断变化。 最初,GWT 1.5实际上只是开始使用Java 1.5的一种方式。 现在,它只是一个了不起的版本。 编译器的优化令人震惊。 这是GWT的口头禅,因为随着GWT编译器的改进,随着时间的流逝,您的代码将越来越快而无需更改行。 请参阅雷·克伦威尔(Ray Cromwell)出色的GWT Extreme演示。 http://timepedia.blogspot.com/2008/06/google-io-gwt-extreme-presentation.html,以了解这会产生什么样的影响。 ImageBundles并不完全是新的,但是当您第一次使用它们时,它们会把您的袜子打掉。 一个HTTP请求中有30个图像可以永久缓存,而不会给您带来沉重负担? 是的,请。 由于支持注释,它们已在1.5中进行了清理,孵化器中有一些很棒的代码,可让您将这个想法扩展到其他类型的资源。
4.在您的书中,有一章专门介绍了如何为搜索引擎优化GWT网站。 使AJAX应用程序可搜索是一项必须忘记很多次或未正确实施的要求。 对于使用GWT构建Web应用程序的开发人员,您认为为了利用该工具包和Web 2.0的全部功能,他必须密切注意哪些最重要的问题?
好吧,SEO显然是某些应用程序所必须具备的功能,而对于功能丰富的应用程序而言,这是很难做到的。 我认为ToCollege.net解决方案是一种轻量级且无干扰的方式,可将RIA开放给搜索引擎。 本书中的另一个主要概念是我对命令模式的大量使用。 这是一个反复出现的主题,因为它允许我使用相同的体系结构来防御XSRF攻击,与Hibernate集成,添加客户端缓存,并且是使您的网站能够使用Google Gears脱机的自然方法。 最后,由于我认为这也是一个被忽略的主题,因此本书在安全性上花费了大量时间。
5.对于GWT及其作为代码生成器的功能,存在一些批评,认为如果您用另一种语言(JavaScript)用另一种语言(Java)进行编程,则会失去目标语言的所有好处。 您对此有何看法?
这是一个很好的问题。 老实说,当我第一次开始研究如何构建富Web 2.0应用程序时,我对JavaScript并不了解。 我真的以为我不得不写大量浏览器特定的代码来解决IE6错误,这让我感到非常害怕。 最近,我为PatientLikeMe的新工作做了更多JavaScript工作,我不得不说,联合JavaScript状态比我想象的要好得多。 有了时间和开放的胸怀,您就可以纠正一些真正干净,通俗JavaScript。 不过,您还是花时间探索最佳实践。 这是一种有趣的语言,但是如果您只是尝试用JavaScript编写Java,那么您会讨厌它。 对于优秀的开发人员而言,JavaScript可能是一件很棒的事情。创建GWT的原因是Google发现JavaScript无法扩展到大型项目。 他们拥有遵循最佳实践的最优秀和最聪明的开发人员,但是当应用程序变大时,他们发现真正可靠的工具支持开始胜过纯熟JavaScript。 我认为在考虑采用GWT时记住这一点是很好的。 它并不是为初学者开发的EZ-AJAX而创建的,它也不是帮助无法打扰学习JavaScript的人的工具。 之所以创建它,是因为Google的才华横溢的程序员发现他们发疯了,并且试图开发更大的富互联网应用程序而大发雷霆。
6.大多数使用GWT的开发人员都称赞的功能之一是,他们可以避免检查所有不同的浏览器怪癖。 您认为这是GWT最强的优势吗?
并不是的。 正如我之前所说,当我来到GWT时,这是一个很大的卖点,但老实说,我认为我高估了这个问题。 是的,在这方面使用GWT很高兴,但是JavaScript解决方案还不错。 那里有很多先前的示例,还有很多非常可靠的框架。 是的,您有时需要考虑将愚蠢的填充元素放在弹出窗口后面,这样表单元素就不会流失,是的,有些陷阱,但是总的来说,跨浏览器开发的真正困难在于CSS,而不是JavaScript。 原型/ JQuery / etc是很棒的库。 所以是的,GWT在这方面很出色,但是我不希望人们为了使用非常基本的东西(例如Script.aculo.us)而跑到GWT上。 如果您只是在做一个简单的网站,那么GWT可能就太过分了。
7.使用GWT生成JavaScript文件后,是否经常需要在各种浏览器中调试应用程序? 您认为这有多容易?
自1.3以来,我不需要在每个浏览器的基础上调试生成JavaScript,即使那样,它还是非常可靠的,并且95%的时间都是我的错。 GWT可以正常工作。 实际上,它比这更好。 GWT还使您摆脱了许多有趣的内存问题,即使是熟练JavaScript开发人员也会错过这些问题。 GWT甚至在您不知不觉中就将您从这类陷阱中解救出来。CSS完全是另一回事,为此,我最终进行了编译。 我的基本工作流程是首先使其在托管模式下工作,以便可以使用该功能,而我只需要等待几秒钟即可在两次代码更改之间进行刷新。 接下来,我在Firefox中进行编译和查看,以便可以使用Firebug帮助我正确设置CSS。 完成之后,我将把CSS移回到项目中,并查看需要做些什么才能使IE看起来也正确。 但是,不,我不需要很长一段时间就以漂亮的模式输出生成JavaScript。
8.许多人认为,创建代码生成器(例如GWT或什至是精心设计JavaScript框架)表明,传统的“ Web平台”已经发挥了最大的潜力,应该用更现代的东西代替。 您对此有何看法?
现在这是一个问题! 我不得不说,我认为这是有好处的。 这很有趣并且有点讽刺,但是我认为我对REST的日益喜爱实际上鼓励了这样一种观点,即我们知道的Web平台阻碍了我们的发展。 REST确实是一种使用上的乐趣,但是我经常觉得在服务器只关心运行REST服务而客户端负责与UI有关的所有工作中,这样做会更好。 客户端越丰富,在两个地方重写功能的难度就越大,而将应用程序逻辑放在服务器上的感觉就越陌生。 InfoQ上有关SOFEA和ThinServerArchitecture的文章确实影响了我对此的思考。 我认为GWT非常适合这张照片。 您将获得一个在客户端和服务器上均可使用的代码库,并且可以将MVC堆栈移至客户端并从服务器移出,这对于可伸缩性和用户体验非常有用。 但是最初的问题是我们是否需要新的东西。 我想我不明白为什么。 我要说的是,我们可能正在服务器上达到应用程序逻辑的尽头,但在浏览器上却不能达到用户代理的目的。 该浏览器无处不在,而GWT可以让您大惊小怪,如果您需要更多,Google Gears将永远存在。 最后,如果您需要超越此限制,那么像Java WebStart这样的工具(最终)是一个不错的选择。
9.随着GWT工具包的发展,您希望在将来的版本中看到哪些新功能?
嗯,你要我做梦吗? 我很想让GWT致力于动态语言源。 是的,我知道,您将失去出色的重构支持以及GWT给大型团队带来的一些优势,但是开发GUI只是对动态语言的尖叫。 能够将Groovy与GWT项目中一些更动态的元素混合在一起真的很有趣。
翻译自: https://www.infoq.com/articles/progwt/?topicPageSponsorship=c1246725-b0a7-43a6-9ef9-68102c8d48e1
gwt-2.8.2下载