2007年3月22日 星期四

Virtual Machine的最新選擇 VirtualBox

現有的virtual mahcine領域中己經有許多很不錯的產品,除了商業的VMWare以外,MS的Virtual PC也轉為免費使用。open source也有聲勢浩大的XEN(不過需要修改kernel)和qemu。qemu還能模擬x86以外的cpu。

現在最新的生力軍是原來由德國的軟體公司InnoTek 所開發的VirtualBox。在前一陣子也開放轉為GPL的open source軟體。再加上不錯的效能,值得試一試。另外一個吸引我的是他也支援Linux能在Linux下使用,挺不錯的。

其實我比較在意的是模擬的效能,一般的模擬功能對我而己都己經足夠,模擬的效能才會影響我的使用。VritualBox看起來不像VMware那麼的吃資源(VMWare越做越大越好,也越來越吃資源),網路一般的風評也說效能很不錯。當然還是有人覺得差距不大的。要找個機會來試試看。

VirtualBox Home http://www.virtualbox.org

PS. 連網址都變成.org了呢。

2007年3月19日 星期一

serialVersionUID的警告

開始使用更新的Eclipse後,發現老是會出現serialVersionUID的warring,由warring的內容來看他跟seriable有關,只是以前怎麼好像沒遇過,查了一下才發現。

原來是不同的JVM的serialize實作不必然相同,所以這個serialVersionUID真的就是serail Version 的UID,可以用來表明serialize的版本,如果你將一個instance serialize後,在deserialize時就會檢查serialVersionUID是不是一樣,不一樣的話就不會deserialize ,就能控制相容性的問題。
如果你沒有自己定義serialVersionUID的話,JVM(?)會依據class計算出不一樣的serialVersionUID,下次你在class裡新增member的話,serialVersionUID 不一樣就不能做
deserialize 。
如果你自訂serialVersionUID,就能控制serialVersionUID,class能相容從舊的serialize storage再deserialize,而新增的member就會變初始預設值。在runtime時可由java.io.ObjectStreamClass取得serialVersionUID值。
如果不知道取什麼值 JDK有個tool
serialver.exe可以幫你產生值。

2007年3月12日 星期一

runtime compile JasperRport jxml report template

最近接手別人的JasperReport tool,在客戶那一直發現有compiling的問題
runtime exception出現 net.sf.jasperreports.engine.JRException: Error compiling report java source files : m_1173545492049_398184.java 但在自己的電腦上就是沒這個問題,一直查不出來。後來才發現,JasperReport的template如果使用xml格式的話,他需重新compile,會有個暫存檔,也會用到javac程式。而之前的同事教導客戶安裝JRE就可,沒有JDK。難怪在我的開發環境上一直沒問題。真是啞巴吃黃蓮啊。

2007年3月5日 星期一

Object-RMDB Data Mapper- iBATIS

What is iBATIS?


The iBATIS Data Mapper framework makes it easier to use a database with Java and .NET applications. iBATIS couples objects with stored procedures or SQL statements using a XML descriptor. Simplicity is the biggest advantage of the iBATIS Data Mapper over object relational mapping tools.

本來是在看spring的jpetstore時,發現他使用這個ORM,感覺很不錯。其實嚴格來說iBATIS不算是ORM。不過有些狀況之下,直接使用SQL還是有其需要性,這時候iBATIS就很好用。

目前iBATIS己經加入apache project有java版 .NET版及ruby/rails版。

Embedded zero-configuration SQL database - SQLite

SQLite是個用c所寫成的SQL database engine。本身的size很小,也不太吃資源,還能支援Transactions呢。這真是embedded system的好朋友。database本身的資料是放在一個單一檔案裡。這樣我在team work時就可以很簡單的發給大家同樣的defaulot enviroment。而且SQLite本身可看你的程式結合在一起,無需另外的task。在有些時候這樣還滿好用的。在小型系統,研發時期和prototype使用都非常方便。基本上他是c寫成的,C/C++使用的API當然沒問題,網路上也有很多JDBC的driver,使用java開發的朋友也能夠開心使用。SQLite database最大可到2TB,但我想我有2TB的資料時我應該就不會使用他了吧。目前用起來唯一覺得還能再更好的就是data type支援的有限,雖然現有基本的都還夠用,不過有時就是會需要基本以外的data type。sqlite2和sqlite3的api不相容,所以使用上要注意一下版本的問題。除非有需要,否則就直接使用SQLite3,各種功能也比較完整。

SQLite office site

Lightweight 100% Java SQL Database Engine - HSQLDB

最近才發現有一個由純Java所寫成的輕量級資料庫。可單機使用,也有server模式。真是太棒了。
HSQLDB本身輕巧快速(當然是指資料庫內容不大時),對SQL的支援也很不會,配合JDBC/hibernate都能使用。HSQLDB很適合拿來當設計初期,或是研發時期所使用,做prototype階段的demo 版本也很合適。HSQLDB發展了好一段時間,目前感覺穩定性沒太大的問題,當然也可能是我使用的還不夠多還沒遇到問題。

要再加強一下信心的話,OpenOffice 2.0裡也使用了 HSQLDB 1.8.0,這樣應該能大大提升信心指數了吧。

HSQLDB office site