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

2009/04/11

Google App Engine supports Java

雲端運算平台 Google App Engine 幾天前推出最新的預覽版本,支援 Java。我原本因為不熟 Python 而遲遲沒有加入,但是終於支援了一個熟悉的語言,還不進來玩看看?第一波的測試名額開放 10000 名使用者加入測試,我有幸能在消息公開兩天後還能申請到,現在不知道還有沒有?(申請網址)

申請單送出之後,大概是需要人工審核,我等了一個上午才收到一封確認信,確認開通了 Java 支援。下載官方提供的 App Engine for Java SDK 套件之後,解壓放好後,開始看說明文件。不愧是 Google,推出時一併釋出寫好的文件,讓我在稍後的時間一直窩在這找尋資料。SDK 隨附的另外有 GuestBook 範例,看起來很簡單,後端儲存是採用 JDO (Java Data Objects) 的方式將物件存起來,不同於傳統關聯式資料庫。而 App Engine 除了支援 Servlet 外也支援 JSP (Java Servlet Pages),後者我在「網際網路程式設計」這堂課學過了,故寫起來算是輕鬆。

隨著這次支援 Java,很多透過 JVM 實作的語言支援紛紛可以放入這個平台上使用 (官方討論群組提供的列表):JRuby、Groovy、Jython (不過已經有 Python 了何必多此一舉)、Quercus (PHP) 之類的,可說是開了一扇大門啊。不過 App Engine 本身是運作在一個砂盒 Sandbox 環境,許多功能都有受限。像是伺服器只能讀取不能寫入檔案、檔案要儲存只能透過提供的 DataStore 方法儲存到資料庫中。JDBC 這次也沒有支援,所以想要使用其他資料庫應該也是不太可能?

官方推薦使用 eclipse IDE 加上 Google Plug-in 來輕鬆測試、部署,不過我選擇傳統的指令列,還好 Google 也推薦我使用 Apache Ant 方便下指令來部署測試。只要寫一個 Ant 看的懂的 build.xml 放在資料夾,以後只要在那個資料夾下 ant (動作) 它就會自己按照寫好的動作來執行,非常方便。官方文件也教你如何利用 Ant 來建立一個應用程式結構和寫 build.xml 來運用 SDK 提供的工具來測試及部署。

我也利用了這次機會寫了一些簡單的玩意兒放在平台上,看起來也是運作正常。一開始遇到的問題是上傳後的資料無法暫存的問題 (很多上傳元件都是先寫入暫存檔再來操作,無奈沙盒環境不允許寫入),查了 Knowledge Base 後發現可以使用 Apache Commons FileUpload 物件提供的 The Streaming API 方式直接讀取,不需寫入暫存檔,這樣就沒有問題了。
---
http://xmlvalidator.new-studio.org/ 這是我學習 XML 標記語言課程的期末專題,可以用來檢查 XML 檔案是否符合定義,並可以即時嘗試 XPath 的結果。

2007/11/14

Google Android SDK

看到有人在討論就去弄 SDK 玩了。簡單說這是一個由 Google 主導的開放式手機平台 (以 Linux 為底),雖然實機還沒有出來,不過已經開放讓大家可以自由撰寫程式了 (Java),Google 也用優渥的獎金吸引人來開發軟體。

SDK 內建 Android Emulator,內有 WebKit 核心瀏覽器 (UserAgent: Mozilla/5.0 (Linux; U; Android 0.5; en-us) AppleWebKit/522+ (KHTML, like Gecko) Safari/419.3),瀏覽一下網站還滿有趣的。另外壓縮包也附了幾個範例可以先來試玩 (圖片的程式碼就是範例之一),畢竟我的功力還很嫩,短時間內也寫不出什麼吧。

有空再繼續補充。

2007/06/13

JRuby 1.0 - pure-Java implementation of Ruby

距離上次寫 Ruby 學習手札好像距離很長一段時間了orz

最近無聊亂繞多看了一些網誌,發現 JRuby 這玩意。原來這是個以 JVM 作為平台來實現 Ruby 語言的直譯器,實在有趣。剛好被我發現的時候出了眾所期待的 1.0 版本,對我來說也是剛好,馬上下載安裝。

JRuby 官網:http://jruby.codehaus.org/

如果是 Windows 環境,下載區內有個 jruby-bin-1.0.zip 的就是了。存到本機後隨意解壓,例如 C:\jruby。注意因為這是以 JVM 為平台的,所以 Sun 的 JRE 也要安裝,因為我個人就讀科系的關係,剛好有安裝 JavaSE 6 JDK。接著只要設定環境變數 PATH 和 JAVA_HOME 就搞定了。PATH 加上剛才解壓後的目錄內的 bin 目錄位置 (本例是 C:\jruby\bin),JAVA_HOME 就比較容易,直接找到 JRE/JDK 的安裝目錄就可以了,不需要特別指到 bin 目錄 (像我是 C:\jdk)。這樣安裝就完成了。

到底怎麼用呢?很簡單,打開命令提示字元,打入 jruby -v 看看,假如出現一行版本資訊 (ex: ruby 1.8.5 (2007-06-07 rev 3841) [x86-jruby1.0]) 那就成功啦,如沒有請檢查環境變數設定是否正確。接著便可以打開文字編輯器來寫 Ruby 了。

JRuby 吸引我的其中一個功能是它已經可以使用 Java 廣大的套件,例如 Swing (javax.swing) 套件,這根本是如虎添翼啊。我對 Ruby 的基本還不是相當熟,但是我對 Java 的熟練肯定比 Ruby 要來的高 (廢話,學科有當掉壓力啊XD 雖然我的成績沒有什麼危機w)。之前熟悉的一些套件碼就可以搬過來讓 Ruby 用用,實在不錯。所以就是改用 Ruby 寫 Java 程式的感覺,我想這樣的學習方式也不錯啦 XD



試寫 JRuby,第一行首先要引入 Java 操作套件庫,然就就可以跟 Java 接軌,這感覺真奇妙。能用我熟悉的 JOptionPane 作使用者交互介面還真好玩 :-)

以上程式碼主要使用 java.util.GregorianCalendar 和 JOptionPane.showConfirmDialog 做一些操作,以使用者輸入的年紀回算出生西元年。題外 include_class 不能像 Java 的 import 使用星號真是囧啊,常常忘記某個類別屬於那個 Package,還得到 API 查查。

喔,JRuby 跟 Ruby 一樣還是屬於 Scripting Language,雖然 JRuby 1.0 說有 JIT Compile 以提升執行速度,不過我沒看到什麼 class 檔出現。要執行 *.rb 檔只不過從以往習慣的 ruby *.rb 改成 jruby *.rb 罷了。

C:\>jruby test.rb


每次看到很多專案使用 RoR (Ruby on Rails) 就很想玩玩,不過我就是看不懂怎麼玩,還是先來學 Ruby 吧。剛好在學校圖書館借到「Ruby Programming - 向 Ruby 之父學程式設計」一書,而且可以到暑假後開學再還,加上有 JRuby 這麼有趣的東西,真該好好學習啊orz