超级开发模式是经典开发模式的一个实验性的取代,像经典开发模式一样,超级开发模式可以让开发者快速编译源代码并在浏览器中呈现结果。同时它也支持调试器来检测一个正在运行的GWT程序。但是,有所不同:
如何工作
超级开发模式在Web服务器中运行编译器,该服务器是一个普通的java应用程序,允许用户通过命令行操作。当服务器启动完毕后,会打印如下信息:
The code server is ready.
Next, visit: http://localhost:9876/
服务器提供用户接口与超级开发模式进行交互并协同GWT编译器的输出,当用户点击“编译”按钮的时候,代码服务器以草稿模式启动编译器(该模式会关闭许多优化选项),并且输出如下形式的URL:
http://localhost:9876/hello/hello.nocache.js
这看起来不错,但是我们为什么不在html页面上应用呢?一种可行办法是当运行GWT应用程序的时候临时编辑html页面中的<script>标签。但是这样做会带来不便,例如当这个页面在服务器上被其他程序共同使用的时候,或者修改HTML页面只能通过重启服务器实现。我们也可以像经典模式一样利用浏览器插件,但是GWT团队已经意识到浏览器插件很难维护。
与之代替的是,超级开发模式使用另外一种方法来改变URL,它使用“Dev Mode On”书签。
点击书签弹出对话框列出当前页中的GWT应用程序并且允许你直接编译它们。
按编译按钮重新编译GWT应用程序会设置一个特殊值到会话存储中,然后重新加载页面。
会话存储像下面这样:
> window.sessionStorage["__gwtDevModeHook:hello"]
"http://localhost:9876/hello/hello.nocache.js"
hello.nocache.js脚本会在会话存储中去匹配这个特殊值(用相同的模块名),然后自动重定向到所提供的URL。
但是,由于超级开发模式一个实验性的特性,默认情况下,重定向是没有被开启的。要开启重定向功能,你必须在“module.xml”中添加如下语句:
<add-linker name="xsiframe"/>
<set-configuration-property name="devModeRedirectEnabled" value="true"/>
(目前只有xsiframe支持超级开发模式)
调试
超级开发模式像生产模式一样将整个GWT应用程序编译成javascript代码,这意味着我们不能像经典模式一样使用普通的java调试器。但是这里可以使用浏览器调试器的“源码链接”功能进行调试。在google的chrome浏览器中你必须启动源码链接功能,如下:
一旦开启这个功能,你就能在google的chrome浏览器的开发者工具的脚本标签中浏览你的java源码。
它如下工作:当使用超级开发模式的时候,浏览器调试器会到代码服务器上下载java文件,除此之外,你还可以直接在代码服务器上浏览你的java源码,用下面形式的URL:
http://localhost:9876/sourcemaps/hello/com/google/gwt/core/client/GWT.java
为了防止在internet上暴露你的源码,代码服务器默认工作在本地,因此只能在同一台电脑上访问你的代码服务器。如果你有防火前或者你不介意别人看见你的源码你可以更改此项代码服务器的工作方式。
区别
与经典模式比较,超级开发模式有如下优点:
- 无插件要求,这样可以增加对更多浏览器的支持或者手机上特殊的浏览器
- 性能提速当频繁调用javascript时,由于不用经过internet环路
- 当每一个页面加载的时候,超级开发模式不会自动编译,这样方便调试多页面应用程序
- 开发者可以在一个会话中调试java,javascript或者其他客户端语言代码,当GWT调用javascript库的时候非常有用。
- 浏览器调试器有许多高级特性可以用来调试GWT应用程序。
但是,也有许多弊端你必须意识到:
- 安全性上有顾虑,推荐代码服务器在本地工作或在防火墙内工作,为安全起见,发布铲平的时候关闭超级开发模式特性
- 目前只在chrome和firefox中测试通过
- 只有GWT链接支持超级开发模式
- 目前只有chrome支持source maps
- 许多java调试器的特性不能在超级开发模式使用
- 由于超级开发模式不在jvm中运行GWT程序,因此许多运行时的结果不能得到
基于这些原因,目前超级开发模式只是在实验阶段,我们希望有更多的人使用它,为提升它作出一些贡献,最终让超级开发模式替换经典开发模式。
启动代码服务器
如果你坚持到这里,那么你必须对开启超级开发模式作一些具体的了解:
- jar文件是gwt-codeserver.jar
- 你也应该需要gwt-dev.jar,其他你编译GWT时需要的jar文件
- 主要方法是com.google.gwt.dev.codeserver.CodeServer
下面是codeserver目前支持的命令行选项:
CodeServer [-bindAddress address] [-port port] [-workDir dir] [-src dir] [module]
where
-bindAddress The ip address of the code server. Defaults to 127.0.0.1.
-port The port where the code server will run.
-workDir The root of the directory tree where the code server will write compiler output. If not supplied, a temporary directory will be used.
-src A directory containing GWT source to be prepended to the classpath for compiling.
and
module The GWT modules that the code server should compile. (Example: com.example.MyApp)
原文地址:
http://www.gwtproject.org/articles/superdevmode.html
- 大小: 7.1 KB
- 大小: 3 KB
分享到:
相关推荐
《程序员超级开发宝典》是每位开发者不可或缺的资源库,它深入探讨了编程世界的各个方面,旨在提升程序员的技能水平和开发效率。这本书籍涵盖了大量不为人知或未被广泛讨论的开发技巧和策略,旨在帮助程序员们在面对...
该系统主要采用MVC(JSP+JavaBean+Servlet)模式开发,非常适合初学者了解并掌握MVC开发模式,具有如下主要功能: 1.用户登录,注册(用户注册后才能登录) 2.显示所有书籍基本信息(编号,书名,价格等) 3.添加...
《程序员超级开发宝典》是一本综合性的编程学习资源,旨在为程序员提供全面而深入的开发技巧和实践经验。这本书可能涵盖了多个方面的知识,包括但不限于编程语言、软件工程、算法与数据结构、数据库管理、网络编程、...
本框架汇集了信息管理窗口(包括信息添加窗口、修改窗口、删除窗口、检索窗口等)各种模式,使您学习或开发起来更加得心应手。 <br>本框架的好处 1.适合初学者学习. 通过本框架,您可以基本的窗口制作学起,到...
【超级玛丽源码跟开发文档】是一份珍贵的学习资源,由一位技术高手使用经典的C++编程语言在VC++6.0环境下开发而成。这个项目不仅提供了游戏的完整源代码,而且还包括了详细的开发文档,这对于想要深入理解游戏开发,...
大盘研究_超级大盘发展与开发模式的实证研究_65页.pptx
"Keil开发环境介绍" 本文主要介绍了Keil开发环境的基本概念和使用方法,涵盖了单片机C51程序开发的整个过程,从编写源程序到下载到单片机的程序存储器中。Keil µVision是一款功能强大的集成开发环境(IDE),它...
### 嵌入式设备认知与开发模式解析 #### 嵌入式设备基础与开发模式概览 嵌入式设备是指那些具有特定功能、专用于某一应用领域的小型计算机系统,广泛应用于消费电子、工业控制、医疗设备、汽车电子等领域。其核心...
在这个版本中,加入了“超级模式”,该模式下蛇的移动速度会显著加快,增加了游戏的刺激性。 在Win32 API环境下开发游戏,我们需要使用窗口类(WNDCLASS)来定义游戏窗口,注册窗口类,并使用CreateWindow函数创建...
《程序员超级开发宝典》是一本综合性的编程学习资源,主要涵盖了C语言和C++这两个重要的编程语言,同时也被标记为一本工具书,意味着它可能包含了大量的实用技巧、最佳实践和解决问题的方法。这本书的电子版以.CHM...
"超级开发宝典"可能包含了各种编程语言、开发工具、设计模式、软件工程实践以及职业发展建议等内容。它可能是由业界专家或经验丰富的程序员编撰,旨在提供一套全面的学习路径。 【描述】"程序员开发中的精华知识,...
本书作者维护着在线网站PowerTools,使您可以及时了解新工具的信息,知晓本书介绍工具的新版本发布以及工具特征。 不仅如此,针对Windows开发,它的内容不仅仅局限于Visual Studio。在您计划、开发、测试和推出...
《程序员超级开发宝典》是一份综合性的IT学习资源,其中包含了丰富的编程知识和技术要点,旨在帮助程序员提升技能,拓宽视野。这份压缩包文件的核心内容是"2006071917504816781.chm",这很可能是一个CHM(Compiled ...