james java
应用程序开发,无论是客户端服务器,传统Web还是移动Web应用程序,最近的趋势是在客户端和服务器层上都使用诸如Fluid Grid Layout和Responsive Web Design之类的模式以及诸如HTML5,CSS3,JavaScript之类的技术。
同样,用于构建现代Web应用程序(台式机和移动设备)客户端的工具也在Swift发展和变化。 十年前为在服务器上执行HTML UI而构建的所有内容,现在都在客户端上进行了重新构建:MVC框架,模板库,组件库等。jQuery是大多数现代应用程序的基础,因为它提供了一些用于JavaScript。 对于MVC,有很多选择,但是像Backbone.js这样的框架越来越受到关注。 还有许多客户端模板库。 其中一些将在客户端和服务器上运行; 如果某些用户的浏览器中没有现代/快速JavaScript引擎,则此功能非常有用。
TypeSafe的James Ward在今年的JavaOne 2012大会上发表了有关使用HTML5和Java技术开发客户端服务器应用程序的讲话 。
InfoQ采访了James,讨论了他在JavaOne Conference上的演讲以及这种新的应用程序开发趋势。
InfoQ:开发人员在基于JavaHTML5开发框架中应该寻找什么?
詹姆斯:现代Web应用程序的新模型类似于旧的客户端/服务器体系结构,但是这次客户端是具有JavaScript,CSS和HTML的浏览器。 而服务器是RESTful JSON服务。 在寻找现代Java Web框架时,您需要寻找三件事:
- Web框架是否有助于构建客户端和服务器? 现代Web框架通常具有“资产编译器”或“资产管道”,可帮助开发人员编写其JavaScript,CoffeeScript和LESS。 例如,Play Framework包含一个Asset Compiler,它统一了编写服务器代码(Java或Scala)和编写客户端代码(JavaScript,CoffeeScript和LESS)的经验。
- 您可以像管理服务器端依赖项一样管理客户端依赖项吗? 我们越来越多的代码正在迁移到客户端(JavaScript,CSS等)。 这意味着我们正在使用越来越多的客户端库,例如jQuery,Bootstrap,Backbone等。因此,我们需要像管理服务器端依赖项一样管理客户端依赖项(及其传递依赖项)。 我创建了一个名为“ WebJars”(www.webjars.org)的项目,该项目将常见的客户端库包装到Jar文件中,以便可以将它们包含在Maven依赖项列表(或其他构建工具)中。
- 创建RESTful JSON服务容易吗? RESTful JSON现在是将数据和服务公开给客户端的事实上的标准方法。 消费者是移动应用还是现代Web应用(桌面或移动)。 将HTTP动词和路径映射到后端服务需要简单且声明式。 大多数现代Web框架(例如JAX-RS,Play框架,Spray,BlueEyes)都提供此功能。
InfoQ:您能谈谈使用Java和HTML5开发客户端/服务器或移动Web应用程序时的一些设计注意事项吗?
James:新的现代Web体系结构与传统Web应用程序有很大不同。 要了解这些新的体系结构注意事项,最好征询以这种方式成功构建应用程序的人员的信息。 以下是构建现代Web应用程序的人的两个有用资源:
- 视频: Typesafe控制台架构和设计
- 博客: Trello技术堆栈
InfoQ:您在演讲中提到了无状态Web层架构。 您能否进一步讨论这以及它如何帮助移动Web应用程序?
James:现代Web应用程序具有将UI状态从服务器移到客户端的优势。 无状态网络层使四件事变得容易:
- 当Web层不包含状态时,水平可伸缩性很容易。 这使Web层可以立即独立扩展。
- 由于可以部署新版本而不必担心会话状态会发生什么,因此在无状态Web层中进行持续交付也变得容易得多。
- RESTful服务应该是无状态的。 每个请求都是原子的,不依赖任何先前的请求。
- 无论这些测试是自动化的(例如,单元,功能)还是开发人员在其浏览器中刷新以测试新代码,测试无状态Web应用程序都容易得多。 在构建Play Framework应用程序时,我的典型开发周期很简单:编辑代码,保存然后重新加载浏览器/重新运行自动化测试。 此开发过程之所以有效,部分原因是Play框架应用程序是无状态的。
InfoQ:当使用Java和HTML5创建移动Web应用程序时,开发人员应注意什么(陷阱)?
詹姆斯:在做出技术决定之前先了解您的用户。 如果您的用户没有具有现代功能的浏览器,则可能必须减少对某些API和库的使用。 根据用户的身份以及他们的设备和客户端功能,您可能需要做出技术折衷。
InfoQ:您在演示中还谈到了浏览器是新的应用程序平台。 您能否讨论这个新趋势以及它如何影响我们开发和部署客户端/服务器或移动Web应用程序的方式?
James: Web浏览器是通用客户端平台。 它当然不是完美的,但它无处不在且不断发展。 大约十年前,我们将用户界面移至浏览器,但将其用作哑终端,以呈现在Web服务器上生成的标记(UI +数据)。 这种方法的优点是用户无需安装任何程序即可使用任何应用程序。 这种方法的缺点是UI需要为每次用户交互重新加载页面。 通过将部分UI逻辑移至客户端,Ajax革命开始改变了这一点。 通过将整个UI移至客户端,现代的Web和移动应用程序一路走来。 这样可以提供最佳的用户体验和性能。 这也非常适合可能需要脱机工作或可能使用本机UI的移动体系结构。
InfoQ:您对诸如响应式设计和流体网格布局之类的移动Web设计概念有何看法?
James:过去,我们的Web应用程序主要是针对一种设备配置文件编写的:台式机/笔记本电脑。 这些设备大多数具有类似的屏幕尺寸,因此Web应用程序开发人员无需考虑其他设备配置文件。 移动和平板设备的激增改变了这一切。 开发人员需要确保他们的应用程序可以在各种设备配置文件上运行。 响应式设计和流体网格布局是根据设备配置文件更改应用程序布局和外观的策略。 其中一些策略使用CSS Media Queries(CSS媒体查询),可以根据设备配置文件(例如屏幕大小)告诉浏览器使用不同CSS文件。 这些策略的使用取决于您正在构建的内容以及用户的需求。 如果小的UI和布局调整是在配置文件之间更改的唯一内容,那么这些方法可能会很好地起作用。 否则,您可能需要研究其他更重的策略。
InfoQ:移动Web开发作为一种新兴趋势也正在使诸如REST Web服务和JSON之类的其他技术在服务器和客户端之间进行数据交换变得更加流行。 您能否谈谈这些技术以及它们在整个移动Web开发中如何相互补充?
詹姆斯:传统的Web应用程序将UI和数据结合在一起。 当您只有一种类型的客户端并且UI和数据的聚合应该在服务器上进行时,这种方法可以很好地工作。 在现代的Web和移动应用程序中,可能会有多个客户端使用相同的数据。 RESTful服务提供了一种使用HTTP协议将动词和路径映射到资源/数据的简单方法。 JSON是序列化数据的一种方法(将数据从内存中的对象转换为可以传输的对象)。 XML是另一种序列化数据的方法。 大多数现代应用程序选择了JSON,因为它非常简单并且受到大多数技术的良好支持。 REST和JSON的组合非常简单,并且支持多种服务器和客户端技术。
InfoQ:JavaScript在这种新的客户端/服务器和移动开发范例中适合什么地方?
James: JavaScript是现代Web应用程序客户端的编程语言。 但是JavaScript并不是完美的,因此还有许多其他语言(例如CoffeeScript,TypeScript和Dart)可以编译为JavaScript。 无论哪种方式,在现代Web应用程序中的客户端上实际运行UI的代码都是JavaScript。
他还谈到了Web和移动应用程序开发的未来。
James:带有HTML5和Java的Web和移动应用程序的未来看起来很好! 客户端和服务器端都有大量的技术选择,并且它们都在Swift发展。 所有这些最终将帮助我们更轻松,快速地构建更好的应用程序。 对于Web开发人员来说,这是激动人心的时刻!
关于被访者:
James Ward是Typesafe的开发倡导者。 今天,他致力于教授开发人员如何部署Java,Play! 和Scala应用程序迁移到云端。 James经常在世界各地的会议上演讲,例如JavaOne,Devoxx和其他许多Java聚会。 James与Bruce Eckel共同撰写了《 Flex中的第一步》。 他还发表了许多截屏视频,博客和技术文章。 从80年代的Pascal和Assembly开始,James发现了他对编写代码的热情。 从90年代开始,他开始使用HTML,Perl / CGI和Java进行Web开发。 在2004年为Pillar Data Systems建立了基于Flex和Java的客户服务门户之后,他成为Adobe的Flex技术推广员。 您可以找到他作为@_JamesWard的推文 ,在StackOverflow上回答问题并在此处发布代码。james java