‧ 物種起源:歐萊禮動物史 ‧ 動物魅力無法擋:製作歐萊禮動物插畫
‧ 總裁 Tim O'Reilly 訪談錄 ‧ O'Reilly 對 Oracle 的出版方向
‧ Elliotte Rusty Harold 訪談錄 ‧ Æleen Frisch 訪談錄
‧ 為什麼我喜歡由 O'Reilly 出版我的書 ‧ Jonathan Knudsen
‧ 蔡學鏞先生 ‧ O'Reilly 評論 Sun 的 Java 開放原始碼策略


[人物專訪]Jonathan Knudsen

本文譯自 O'Reilly 美國總公司網站上的文章

Sun 在市場上推出 Java 的第一個版本顯然是急就章之舉,缺了一些該有的功能,而「繪圖」正是其中一個明顯的蹩腳之處。AWT 僅包括了最陽春的功能,只能用以建立基本圖形、畫線、寫文字。但現在 Java 已非吳下阿蒙了,Java 2 具有一流的繪圖功能,也就是 Java 2D。透過 Java 2D,程式員可以繪出二維圖形,更棒的是,整個語言和 PostScript 相當密切。事實上,Adobe(譯者註:研發 PostScript 的公司)正是此 API 的主要開發者之一。

Jonathan Knudsen 是 O'Reilly《Java 2D Graphics》一書的作者,本書完整地描述 2D API 的用法。在本訪談中,作家 Peter Wayner 和 Jonathan 談論此書、Java 2D API、以及 Java 開發平台的未來。

Wayner: Java 2D 是 Java 的一大躍進,是不是?

Knudsen:
的確是一大躍進。JDK 1.0 和JDK 1.1 的時代,AWT 所提供的圖形能力相當弱。線條只可以是一個像素寬;也不能在區域內填入斜紋;文字變化的支援相當有限。大家為此怨聲載道。

面對此問題,Sun 可以東補補西補補地提供一些 API,讓程式員閉嘴就好,但他們沒這麼做,反而意圖設計一套完整的 API,畢其功於一役。

但是 Sun 自覺不適合設計這種 API,因為 Sun 專長的領域不包括計算機圖學、文字、影像,所以邀 Adobe、Taligent、Kodak(柯達)、以及一家小公司 Ductus 來共同設計、製作 2D API,成果簡直棒透了。如果你熟悉 PostScript 的話,你會覺得此 API 好像處處有 PostScript 的影子,文字、影像的能力令人稱奇。2D API 將計算機圖學發揮到淋漓盡致,但又不複雜難用。

Wayner:讓 Java 2D 相容於舊有的 Graphics,你覺得這樣的設計好嗎?或者直接廢棄舊的 Graphics 比較恰當?

Knudsen:
Graphics2D 是 Graphics 的一個子類別,用來維持回溯相容性。對 Sun 公司來說,讓舊版(JDK 1.0 和 JDK 1.1)的程式仍然能相容於 Java 2,是重要的目標。我認為對 2D API 來說,這方面做得不錯。舊的繪圖方式以整數和像素為導向,所以可以將其視為是 2D API 的一個粗糙的特例。

Wayner:對於 Web 設計員來說有沒有什麼值得注意的?有什麼瀏覽器會用到 2D API?

Knudsen:
這是問題癥結所在。Navigator 會支援 Java 2 嗎?Netscape 已經停止開發 Navigator,而接手的 Mozilla.org 未對此有任何承諾,所以我還不清楚是不是會有支援 Java 2 的新版 Navigator。

至於 IE,微軟連支援 JDK 1.1 都不太甘願了。在和司法部以及 Sun 的官司之後,我不認為微軟會在 IE 中支援 Java 2。

如果你需要在瀏覽器中執行 Java 2,你必須使用 Java Plug-in。不管是 Navigator 或 IE,Java Plug-in 都是一個好的解決方案。

我認為在瀏覽器內執行 Java 的重要性已經大減。當 Java 初問世時,applet 是為人所注意的焦點,但獨立的應用程式的重要性也逐漸增加中。隨著 Java 2 的出現,Java 已經具備開發大程式的能力,Java 開發出來的程式足以用在桌上電腦系統,而瀏覽器是否支援最新版的 Java 也就不是那麼重要了。

Wayner:2D API 對字型廠商和消費者有無影響?我們要下載或購買哪些字型?

Knudsen:
2D API 可以識別出你的 Windows 或 Solaris 系統中裝有哪些 TrueType 和 Type 1 的字型。未來,Java 2D 還可能允許執行時動態地註冊新字型。其實,JDK 1.2 在 beta 版時,就曾經在 GraphicsEnvironment 類別中出現 registerFont() method,不過後來正式版時又消失了, 我覺得未來有可能會再出現。

在許多領域中,Java 都試著和現有的資源相容。以字型來說,你不用購買 Java 專用的字型,可以直接利用你現有的字型。

Java 不會影響到字型廠商,只要是 TrueType 或 Type 1 的字型,Java 都可以用。

Wayner:我們必須在 Mac 的 JVM 上使用 Mac 的字型,而且在 PC 的 JVM 上使用PC的字型嗎?或者 Java 有自己的跨平台字型標準?

Knudsen:
關於字型,唯一的標準是「字型格式」。MacOS 和 Windows 都用 TrueType 字型,所以 Java都能使用。

Wayner:可不可能有一些騷包的設計者會不用 HTML 改用 Java 的視窗來顯示文字?你認為 Java 2D 在 anti-aliasing 和其它版面配置上有競爭力嗎?

Knudsen:
我們永遠料不準騷包的設計師下一步會怎麼做,最有可能的是完全用 Java 設計出一個實用的瀏覽器。我不知道 HotJava 是不是還活著,如果 HotJava 能用 Java 2 來改寫,將會是很棒的瀏覽器。The 2D API 提供了文字版面配置的絕佳控制,呈現出來的結果非常好,特別是在 anti-aliasing 的部分。

我預期 Java 2 的現身將刺激一些大型、實用的軟體如雨後春筍般地冒出來,瀏覽器是其中之一的例子。

Wayner:你認為 Java 將會變成開發套裝軟體的重要方式嗎?C 會因此像當時的 Pascal 般地逐漸褪色嗎?

Knudsen:
我覺得用 Java 2 來開發套裝軟體是一個很好的點子。我希望未來數月就能看到這類的產品出現。

但是我不認為 C 會因此淡出。Pascal 會逐漸消失是因為 C 和 Pascal 有相當大的取代性,而 C 贏了這場戰役。但是,C 和 Java 根本定位不同。C 會一直有立足之地,特別是在嵌入式環境。在講究高性能和小體積的地方,當然是用 C 而不用 Java。至少在記憶體便宜到連個時鐘都有 4Mb 記憶體之前,程式體積還是要考慮。

Wayner:Java 2D API 的性能如何?繪圖的速度慢嗎?動畫會不會很耗資源?

Knudsen:
2D API 不是設計來做動畫的,雖然許多人期望它能呈現較快的動畫速度。而事實上,Java 2D API 表現得還不賴。影響繪圖速度的因素有許多,包括了圖形本身的複雜度。我認為在小型動畫上應該表現得不錯,而複雜的動畫可能就不太行了,應該改用其它的方式,比方說 Java Media Framework(JMF)。Java 2D 的性能正在逐漸改進當中,Java 2 的第一步是將這些 API 都做出來,然後才會改進速度和修正錯誤。後續版本會表現得更好。

Wayner:在處理器效能較差和記憶體不足的地方,Java 2D 還有用武之地嗎?

Knudsen:
只要能夠執行 2D API,就沒問題。Java 2D 所呈現出來的品質相當好。 在比較老舊的機器上,呈現出來的品質依然一樣,只是可能會慢了些。

Wayner:Java 2D API 和 3D API 之間有什麼關連?

Knudsen:
兩者解決的問題不同。2D API 用在二維空間呈現二維資料;3D API 則是在二維空間呈現三維資料。你可以用 2D 來呈現圖形,再將其當作 3D 的材質。除此之外,兩者之間的銜接點實在不多。

Wayner:若程式員現在就想體驗 2D API,最好的方法是什麼?

Knudsen:
最好的方法就是買我的《Java 2D Graphics》,然後一一試過書中的例子。透過程式範例是一個很好的學習方式,而我在本書中盡了最大的努力填入許多範例。 Java 2D API 中充滿許多計算機圖學的概念,本書中對這些概念也有深入淺出的介紹。如果你還在猶豫該不該買本書,你可以先拿本書的範例去試試看,可以從這裡取得。

另一個不花錢的方式是讀我的「啜飲 Java(Bite-Size Java)」專欄,有六篇包含了 2D API 的各種主題,都是在我撰寫本書時一同完成的。

Wayner:有什麼編譯器和工具支援 2D?你推薦什麼工具?

Knudsen:
因為我不用全功能的 IDE,所以我不知道何者已經支援Java 2。我想那些編譯器大廠的產品應該都支援了吧!

我自己使用的是一套叫做 Kawa 的陽春型 IDE,它只是在 JDK 上面加上一成薄薄的整合。我喜歡 Kawa 的主要原因在於它提供了彩色語法的編輯軟體,對我來說很方便。Kawa 還有許多特色,像是計畫管理員等,但是我都用不著。

Wayner:本書的封面是一組繪圖裝備,會不會太直覺了?你有沒有屬意什麼動物?你有沒有什麼比較好的象徵物件?

Knudsen:
我覺得這張影像不錯啊!O'Reilly 的 Java 系列因為不用動物,所以有點特別。有一個版本的《Java Network Programming》使用動物,但並未從市場上收到特別的迴響。現在開始,至少 Java 系列將繼續保持其簡潔、特殊的外觀。

   
   
       
 
 
 

關於碁峰隱私權政策聯絡我們     檢視 : PC 版  手機版
碁峰資訊股份有限公司 GOTOP INFORMATION INC.
台北市南港區三重路66號7樓之6 / 7F.-6,No.66,Sanchong Rd.,Nangang District,Taipei
TEL:(02)2788-2408 FAX:(02)8192-4433 劃撥帳號:14244383
Copyright 2014© GOTOP Information Inc, All Rights Reserved 請勿任意連結、轉載