GWT筆記(6)
GWT筆記(6)
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程式碼。
如果你使用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.
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程式碼直接執行在瀏覽器上。程式碼可以被客戶端和伺服器端共享。
相關文章
- GWT筆記(5)筆記
- GWT筆記(GoogleWebToolkit)1筆記GoWeb
- 對GWT還是不死心vue-gwtVue
- es6筆記筆記
- IPv6筆記筆記
- ECMAScript 6筆記(一)筆記
- #ECMASCRIPT6筆記筆記
- STREAMS筆記(6) rule筆記
- JavaScript筆記(6)陣列JavaScript筆記陣列
- java學習筆記6Java筆記
- git學習筆記6Git筆記
- CCNA學習筆記6筆記
- 6,修改資料(筆記)筆記
- vue學習筆記6Vue筆記
- 筆記:JavaScript ES6筆記JavaScript
- Ajax框架之GWT框架
- ES6 學習筆記筆記
- es6 入門筆記筆記
- ES6 學習筆記筆記
- Android學習筆記(6)Android筆記
- ECMAScript6 實用筆記筆記
- PL/SQL學習筆記-6SQL筆記
- es6學習筆記筆記
- ES6 學習筆記四筆記
- ES6 學習筆記一筆記
- ES6 學習筆記二筆記
- ES6 學習筆記三筆記
- G01學習筆記-6筆記
- ES6的學習筆記筆記
- es6筆記應用 二筆記
- es6筆記應用一筆記
- Oracle學習筆記(6)——函式Oracle筆記函式
- Ext學習筆記6-Ajax筆記
- 6.管理控制檔案(筆記)筆記
- 6,雜湊(perl語言筆記)筆記
- 《人月神話》閱讀筆記6筆記
- ES6學習筆記--es6簡介筆記
- ES6學習筆記(七)【class】筆記