Vala是一種新的編程語(yǔ)言,其目標(biāo)是為GNOME開(kāi)發(fā)者提供現(xiàn)代化的編程語(yǔ)言功能,同時(shí)沒(méi)有額外的運(yùn)行時(shí)要求,并且相對(duì)于C語(yǔ)言編寫(xiě)的應(yīng)用程序和庫(kù),無(wú)需使用不同的ABI。Vala是基于GNOME的GObject系統(tǒng),提供了那種你期望的類功能。與Scala一樣,在語(yǔ)言級(jí)別上,它具有與Java Beans的get*()和set*()等同的屬性,但是,對(duì)于屬性更改通知和監(jiān)聽(tīng)器(listener),它也能夠提供了語(yǔ)言級(jí)別上的支持。它不具備很強(qiáng)的XML處理能力,只是一個(gè)迷你型的解析器,不過(guò)看起來(lái)它的確具有很好的Unicode功能(字符串為UTF-8,string.getch()可返回16位的unichar字符。)在功能級(jí)別上,Vala與Java最大的不同之處應(yīng)該是對(duì)象回收(de-allocation)的引用計(jì)數(shù)系統(tǒng)(reference-counting),相對(duì)于Java的GC,這一系統(tǒng)能夠提供更多確定的實(shí)時(shí)行為,不過(guò)也為某些編程錯(cuò)誤打開(kāi)了一扇窗戶。在這個(gè)時(shí)代,Vala的另一個(gè)古怪之處在于,對(duì)于陣列訪問(wèn)不進(jìn)行邊界檢查,所以它比Java對(duì)規(guī)則的要求更為嚴(yán)格(不過(guò)可以推測(cè),比C語(yǔ)言要寬松很多)。
| 外文名稱 | Vala | 類別 | 編程語(yǔ)言 |
|---|---|---|---|
| 基于系統(tǒng) | GNOME的GObject | 特點(diǎn) | 迷你型的解析器 |
| 功能 | 對(duì)象回收 | 優(yōu)點(diǎn) | 提供更多確定的實(shí)時(shí)行為 |
Cononical同時(shí)維護(hù)兩個(gè)獨(dú)立的Unity版本,包括Unity和Unity 2D,兩者的用戶界面在視覺(jué)上幾乎沒(méi)有區(qū)別,但技術(shù)和實(shí)現(xiàn)方式是不同的。
Unity作為Compiz的插件,是使用C++和Vala編程語(yǔ)言實(shí)現(xiàn)的,并使用了不常用的Nux的OpenGL工具包。作為Compiz的一個(gè)插件,Unity的GPU加速性能可以廣泛支持不同的硬件體系。
Unity 2D是一組單獨(dú)的應(yīng)用程序,采用Qt框架構(gòu)建圖形用戶界面語(yǔ)言QML來(lái)實(shí)現(xiàn)。 Unity 2D默認(rèn)情況下,使用Metacity的窗口管理器,但也可以使用加速的窗口管理器,如 Compiz 或 KWin。 在Ubuntu 11.10上,Unity 2D使用了基于Xrender合成器的Metacity實(shí)現(xiàn)透明效果。從Ubuntu的11.10起,Unity 2D取代了經(jīng)典的GNOME面板,提供給不能運(yùn)行的Compiz的硬件系統(tǒng)。
2012年10月發(fā)布的Ubuntu 12.10不再包含Unity 2D,因?yàn)?D版已經(jīng)能夠更好地支持低配置的硬件系統(tǒng)。