Java仿真(Java Emulation)
尽管完整的GWT应用程序能用Java写出,再部分被翻译成JavaScript用于客户端执行。但这里有几个不足:
1)面向客户端的代码被某java包所限制,只能作为其子集,该java包是Google的java到javascript翻译器所支持的java包。
2)另外,客户端运行的代码只使用JRE的子集,该子集能被JavaScript所支持。
一旦你熟悉它们后,你会发现这些限制并不象早先想的那么坏。这有点象写移动版的Java应用程序(J2ME)。
一、语言子集(Language subset)
GWT的java到javascript翻译器解析源代码,就像java编译器一样,但不是将其编译成字节码,而是JavaScript代码。(来源 www.iocblog.net)
如果你使用GWT不支持的语言特征的话,在主机模式你的代码会工作的很好,但是为了在Web模式运行,编译到JavaScript时,将得到错误。
1)Language Level
GWT编译器编译Java源码是兼容J2SE1.4.2及更早的版本,对Java 5的新特征则不支持。
2)Intrinsic types
支持byte,char,short,int,long,float,double,Object,String和arrays。
然而,JavaScript没有64位的整型,故long被映射成double类型的浮点数值。要确保在主机模式和Web模式的连续性,Google推荐使用int变量。
3)Exception
try,catch,finally和用户自定义的exception都是支持的。
4)Assertions
GWT编译器解析Java的assert语句时,在JavaScript代码中不会省略它的。assert如果能作为VM参数的话,在主机模式下被处理。
5)Multithreading and synchronization
JavaScript解释器是单线程的,因此GWT处理synchronized关键字时,它不会起任何作用。synchronization相关库方法是无效的,包括Object.wait(),Object.notify()和Object.notifyAll()。
6)Relection
GWT不支持类的连续的动态加载。
7)Finalization
JavaScript不支持finalization对象。
8)Strict floating-point
Java语法规范精确地定义了浮点类型,包括单精度数和双精度数,用strictfp关键字来定义的。GWT不支持strictfp关键字。
二、Library subset
为了面向客户端代码,GWT只支持JRE库的子集。一个原因是JRE库太大,另一个原因是JavaScript沙盒不支持那么多特征。
GWT仿真不同于JRE运行环境。
1)Regular expressions
Java的正则表达式语法和JavaScript的是相似的,但使用时还是要小心其中的不同。
2)Serialization
GWT不支持标准的Java serialization。然而,GWT有一个RPC工具,它提供了自动的对象序列化。
三、Supported Packages
为了客户端代码,GWT实现了JRE1.4的Java.lang和java.util包的子集。
java.lang package
1)Classes
Boolean,Byte,Character,Class,Double(1),Float(1),Integer,long(1),Math,Number,Object,Short,String(2),StringBuffer,System。
注:
(1) 避免使用map关键字;
(2) 正则表达式改变其标准实现。
2)Errors and Exceptions
ArrayStoreException, AssertionError,CalssCastException,Error,IllegalArgumentException, IllegalStateException,IndexOutOfBoundsException, NegativeArraySizeException,NullPointerException,NumberFormatException, RuntimeException,StringIndexOutOfBoundsException,Throwable(1), UnsupportedOperationException.
注:
(1) 堆栈追踪目前还不支持。
3)Interfaces
CharSequence,Cloneable,Comparable.(来源 www.iocblog.net)
java.util package
1)Classes
AbstractCollection,AbstractList,AbstractMap,ArrayList,Arrays,Collections,Date,HashMap,HashSet,Stack,Vector(1).
注:
(1) 不检查索引的有效性
2)Errors and Exceptions
EmptyStackException,NoSuchElementException,TooManyListenersException.
3)Interfaces
Collection,Comparator,EventListener,Iterator,List,Map,RandomAccess,Set.
四、正则表达式
1)Boundary matchers
----------------------------------------------------------------
Expression Meaning
----------------------------------------------------------------
^ 行开始
$ 行结束
\b 文字边界
\B 非文字边界
----------------------------------------------------------------
2)Quantifiers
----------------------------------------------------------------
Expression Meaning
----------------------------------------------------------------
* 0到多次
+ 1到多次
? 0到1次
{n} 恰好n次
{n,} n到更多次
{n,m} 在n到m次之间
----------------------------------------------------------------
3)Miscellaneous
----------------------------------------------------------------
Expression Meaning
----------------------------------------------------------------
. 任意字符
*(x) 捕获组
(?:x) 非捕获组
x(?=y) 0宽度正数超前
x(?!y) 0宽度负数超前
x|y x或y
\n 返回捕获组的引用。不能使用“\0”
----------------------------------------------------------------
你可以假装Java代码直接运行在浏览器上。代码可以被客户端和服务器端共享。
分享到:
相关推荐
Java 仿真框架(或简称 JEF)是一组 Java 类,提供了创建仿真器的框架。 JEF解决了许多常见的模拟器相关问题,如CPU模拟、图形解码和渲染等。
自此,正式宣布Bluespec与HyperSilicon联手推出emulation仿真工具。 对于如今复杂的设计,仅仅使用软件仿真,仿真速度过于缓慢,并且完全还原真实的数据变越来越不可能。而硬件仿真平台,虽然可以很大程度的提高...
libEGL_emulation.so libEGL_emulation.so libEGL_emulation.so libEGL_emulation.so
Java和Angular中的Twitter仿真 该应用程序模仿Twitter的主要功能: 登录,注销; 帐户管理(注册,编辑,删除,按子字符串搜索); 主页(帐户属性,时间轴,推文,关注者,关注者); 发推文; 关注/取消关注...
Introduction to Network Emulation Introduction to Network Emulation
自此,正式宣布Bluespec与HyperSilicon联手推出emulation仿真工具。 对于如今复杂的设计,仅仅使用软件仿真,仿真速度过于缓慢,并且完全还原真实的数据变越来越不可能。而硬件仿真平台,虽然可以很大程度的提高...
This spec describes the SW architecture for Virtio device (net and block) emulation on top of BlueField2.
基于万能的仿真软件,能打开大部分OTDR曲线图SOR格式,能简单修改等操作!
PowerTCP Emulation for .NET
Symbol COM Port Emulation Driver v 1.8.3
Motorola COM Port Emulation驱动可以把Symbol USB口虚拟为一个COM端口,详细介绍请看http://blog.csdn.net/truly_2013/article/details/18454159
java收银系统源码银行管理系统与 ATM 仿真 用Java编写 在运行源代码之前,请继续阅读- 这里的文件是从我的 Netbeans 项目目录上传的。 确保系统具有应用程序中使用的数据库和表,因为我事先手动创建了数据库和表。 ...
DL Wedge Emulation Utility v2.01 RS232虚拟键盘口输入
Emulation of common POSIX system calls; Execution of Pthreads based multithreaded programs. Provides cycle-accurate microarchitectural simulation of: Separate pipeline structures such as the ...
This edition applies to the licensed program IBM Operating System/400, (Program 5769-SS1), Version 4 Release 1 Modification 0, and to all subsequent releases and modifications until otherwise ...
terminal emunation program based on Windows system. Designed by Mike Wang and Andy Chen in RAYON Technology
全网络真正可用的OTDR仿真软件,绝对错不了。
This Emulation
介绍EtherCAT从站设备仿真功能的应用情境,与如何开启亚信AX58100 EtherCAT从站芯片的设备仿真(Device Emulation)功能。
仿真(emulation)不是simulation,后者是在PC上模拟硬件,没有连接真正的目标硬件 支持传统的JTAG协议IEEE 1149.1与IEEE 1149.7协议 USB启动,无需外接电源 支持嵌入跟踪(ETB Trace) 支持32Bit/64Bit Windows XP...