2009年5月30日

JavaSE 6u14推出,終於支援escape analysis...

最近Sun更新了JavaSE 6推出了6u14這個更新版,裡面不少有趣的新特色,其中和VM本身最為相關的部分有三(目前都是選用或實驗性的功能):
  1. Optimization Using Escape Analysis
  2. Compressed Object Pointers
  3. Garbage First (G1) Garbage Collector
其中第一項,我在兩年半前的文章裡提過(事實上,更早就有相關研究了),但直到現在,新版的hotspot才開始支援以escape analysis為基礎的優化(像是stack allocation、lock elimination等)。這也許可以說明一件簡單的現象:學界講求的是research,而業界重視的則是quality...

補充:sby大神提示,Apache Harmony早在兩年前就支援escape analysis及相關的優化技術了。

第二項其實也不新了,早在兩三年前的學術界裡就出現過相關的討論了。簡單的來說,為了避免64bit pointer帶來的space overhead,可以用類似offset的方式來記錄objects的address。缺點就是,存取時會帶來一些execution time overhead,heap的大小也會有限制。優點當然就是heap空間的節省了。也可以參考這篇簡介這裡

第三項Garbage First (G1) Garbage Collector,主要演算法來自於2004年的一篇paper,內容還沒有時間好好看過,但據說有不少好處:
Garbage First, or G1, is a low pause, server style collector. G1's primary advantages over the Concurrent Mark-Sweep (CMS) collector include incremental compaction, better predictability and ease of use.
比較值得注意的是,目前若想將G1應用在production的用途中,必須要與Sun簽署合約。後續發展。

以上提到的新特色,其中一部分將會成為JDK 7的標準功能,可以想見這些特色在未來將會更為成熟完整。

BTW,Hotspot中有不少功能或優化技術,實際上是學業界合作的成果,除了上面提到的部分外,像是client compiler裡的SSA support,也是學界的成果。研究的成果能夠被用在實際的產品中,其實是很棒的事,除了代表成果有實際的用途外,也代表了來自業界的肯定,真是令人嚮往啊...

2009年5月26日

感謝Josh提供關於標籤雲製作的中文文件

更新:新版的官方範本已直接支援標籤雲。

感謝Josh提供的Label Clouds(標籤雲) For Blogger文章,非常實用呢。當然,原作者也是非常值得尊敬的!!

感謝阿伯特贊助照片

更新:阿伯特當然順利畢業了也希望他能早日結婚;本站版面也經過修改了。

感謝阿伯特贊助美麗的照片,還幫忙裁切和做影像處理。整個版面看起來真是不一樣了,多謝,希望他明天的presentation能夠順利進行,也希望他能夠早點畢業。

2009年5月23日

Don't be afraid!!

Life is so short!! Hurry up !!
You should not be afraid!!
Just do it, just do what you really want to do!!
You know, you are not alone!!

2009年5月22日

Some Notes about Android

May not be correct and useful for you...

About WebKit in Android:
  1. Java script JIT is disabled.
  2. Graphics: WebKit => Skia=> OpenGL/ES (libEGL, libGLESv1_CM)

About Java Script JIT in WebKit:
  1. Supports X86 currently.
  2. Port for ARM is announced and should be integrated later.
  3. The Andes Tech also claimed that they have a port for NDS.

About OpenGL/ES implementation:
  1. Software: agl (libagl) => PixelFlinger (libpixelflinger, JIT supports ARM only)
  2. Hardware: hgl (libhgl, vendor specific)

Some Random Thoughts:
  1. Skia => PixelFlinger for software rendering?
  2. Is Java script JIT in WebKit useful?
  3. Dalvik + JIT in WebKit or PixelFlinger?
  4. Dalvik, WebKit, PixelFlinger => LLVM?

Related Code Location:
  1. WebKit: external/webkit
  2. Skia: external/skia
  3. OpenGL/ES: frameworks/base/opengl/libs
  4. agl: frameworks/base/opengl/libagl
  5. PixelFlinger: system/core/libpixelflinger
  6. hgl: Not available

Reference:
  1. Android 上的原生 OpenGL/ES
  2. 淺談 Google Skia 圖形處理引擎
  3. Android Source Code

調整Firefox的網頁顯示區尺寸

Update again: Chrome會是更簡單的選擇,不過Firefox 4IE 9似乎也改善了不少。

Update: 續Firefox on Netbook又增加了一些有用的Tips,感謝。

前幾天試著按照Firefox on NetbookSetup Firefox To Use Minimal Screen Estate兩篇文章的介紹來修改firefox的外觀。主要目的是為了增加網頁的可視範圍,雖然我的notebook解析度為1280x768,但有時候還是會覺得不夠用。

修改的原理主要是把不常用的部分移動到適當的位置以及自動隱藏。細節不多說,那兩篇文章說的很清楚了,總之就是安裝Tiny Menu,然後將選單及瀏覽工具列整合。接著安裝Autohide Status Bar讓狀態列可以自動隱藏。我大概做到這邊就覺得效果不錯了,有興趣的人可以試著安裝 Hide CaptionHide Tab Bar兩個extension,但要注意它們似乎和目前新版的firefox不太相容。Autohide Status Bar讓狀態列可以自動隱藏,也是一個不錯的選擇,但很容易影響網頁靠近底部的某些選項或按鈕的位置,有時會讓人很煩躁。

另外,如果沒有特殊需求的話,其實按下F11進入全螢幕模式也是個不錯的選擇。

2009年5月4日

Without you nothing would be much worth doing.

曾經在一本很有名的程式設計書籍內頁讀過,作者留給太太的一段話:
For Nancy, without whom nothing would be much worth doing

多麼簡潔卻又感人的字句啊!這段話令我印象深刻,每每溫習除了覺得感動外,總會帶著一絲羨慕及一些不解,不解的是,這種感情真的存在嗎?

一直帶有疑問的我,直到遇到魚仔,相戀相愛幾年後,我才真正的比較理解這種感情了...