顯示具有 rhino 標籤的文章。 顯示所有文章
顯示具有 rhino 標籤的文章。 顯示所有文章

2011年8月8日 星期一

以 batik 讀取 svg 中的 points

如何透過 rhino 及 batik 讀取 SVG 中的 points?

以下是我的程式:


importClass(org.apache.batik.parser.PointsHandler);
importClass(org.apache.batik.parser.PointsParser);

var pp = new PointsParser();
var ph = new PointsHandler({point: function(x, y) {print('('+ x + ',' + y + ')');}});
pp.setPointsHandler(ph);

測試一下:
pp.parse('50,375,150,375 150,325 250,325 250,375,350,375 350,250 450,250 450,375,550,375 550,175 650,175 650,375,750,375 750,100, 850,100 850,375, 50,375 950,25 1050,25 1050,375,1150,375');

2010年3月2日 星期二

Scala vs Javascript

在撰寫 javascript 程式時,我較不習慣的是它缺少靜態型別的檢查。一直希望有一種語言能結合動態型別和靜態型別語言的優點。因此最近看到 Scala 時我充滿興趣。

我花了一些時間瞭解 Scala 並撰寫了一些程式。這語言很容易上手。不過我遇到以下的瓶頸:
  1. Netbeans IDE 的 Scala plugin 還不成熟。
  2. Scala 並不是為 embedding 設計的。
  3. Scala 使用 Java classes 沒問題。但是 Java 使用 Scala 的 classes 會有些問題。
因此,我還是回到 rhino,以 javascript 為我的 scripting language。

2010年1月30日 星期六

解決安裝 narwhal 的問題

在 ubuntu 安裝 narwhal 時遇到以下錯誤訊息:

org.mozilla.javascript.WrappedException: Wrapped java.lang.IllegalArgumentException: Bad language version: 180

搜尋網站找到了以下報告:
https://bugs.launchpad.net/ubuntu/+source/openjdk-6/+bug/255149

執行以下指令可以解決問題:
sudo rm /usr/lib/jvm/java-6-openjdk/jre/lib/rhino.jar

指令只是刪除一了指向 rhino 的連結,因此可以放心,並沒有真正刪除 rhino,只是使得 rhino.jar 不被自動加入 bootclasspath 中,導致無法使用 narwhal 自己的 rhino。

2009年11月1日 星期日

Kawa

以 Java 寫成的 Scheme,可以在 JVM 上執行。因此我忍不住將它和 plt-scheme 及 rhino 比較,以瞭解它的優劣定位。

相較於 rhino:
  1. 同樣可在 JVM 上執行。
  2. 援用 java 的 class 時,沒 rhino 那麼方便,必須定義要使用的 method,若使用某個 method 眾多的類別如 JOGL 時,會帶來一些困擾。
  3. 因為是 scheme,比 rhino 更適用於開發 Domain specific language (DSL)。
相較於 PLT-SCHEME
  1. 可在 JVM 上執行,因此,可以和使用 rhino 的程式整合在一起,提供 rhino 欠缺的 DSL 能力。
  2. 缺少 PLT-SCHEME 的龐大功能及其健康的社群。
Kawa 被用於 Google 的 App Inventor,被使用的原因就是因為 Scheme 的 DSL 能力。

依我的觀點,Scheme 的 DSL 能力最適合用在當 Domain specific language 尚未定型,正在成長時。