Category Archives: Java

Functional Programming for Java Developers 讀書摘要

這是我之前念 Functional Programming for Java Developers 一書的摘要記錄。這本書很薄只有90頁,是一本蠻不錯的 Functional Programming 概念入門勸敗書。

近來 Functional Programming (函數式編程,以下簡稱FP) 的重要性提昇就是為了因應 Concurrency 的需求。CPU 朝向多核架構發展,OOP的程式開發方式物件充滿可變狀態,造成撰寫 Concurrency 程式時陷阱多多。

當然,要寫FP不代表一定要用FP語言,還是可以用現成的OO語言去寫。但就像用沒有OO支援的C去寫OO風格,用專門的FP語言還是比較方便。

為何要FP?

作者說雖然是因為 Concurrency 而學 FP,但是後來卻很享受這種 Paradigm Shift (典範轉移)。OO 被發明因為 GUI,後來人們發現可以用來應用在各種領域上。OO 和 FP 都是工具,各有優缺點,但是現在人們碰到所有問題都用 OO 去解,就像你手上有著搥子,在你眼中什麼都看起來像釘子

FP 不代表比 OO 優越,畢竟 OO 的好處已經被證實且廣泛應用。而是目前時代不同了,OO 的缺點在某些領域已經到了不可忽視的地步,有些挑戰性的問題用 FP 解更為適合,例如:

Continue reading Functional Programming for Java Developers 讀書摘要

JRuby 安裝與 OpenJDK

最近把 JRuby 納入開發的武器之一,幾個你可能會想用 JRuby 的考量:

  • 真 MultiThreading
  • JVM 是一個調教超過十年的 VM
  • 可用 jar 佈署到不同平台(Windows, linux, mac…etc)。Ruby 程式如果要佈署到 Windows,JRuby 我認為是最好的選擇。
  • 可用 war 佈署到 Java Application Server
  • Android
  • GAE
  • 跨平台的 GUI 工具:Swing, SWT
  • 各種精良的 JVM 函式庫: iText, Akka, Apache Batik (SVG), Lucene(search engine) 等等
  • 什麼(奇怪)資料庫都可以連接的 JDBC

安裝

JRuby 的安裝應該是所有 Ruby 實作中最沒有跨平台問題的吧(笑)。只要 JVM 裝好,去 JRuby Download 下載,把 jruby/bin 加到 PATH 就可以用了。如果用 RVM 只要 rvm install jruby 即可。

以 Ubuntu 來說:

sudo apt-get install openjdk-6-jre

wget http://jruby.org.s3.amazonaws.com/downloads/1.6.6/jruby-bin-1.6.6.tar.gz
tar zxvf jruby-bin-1.6.6.tar.gz
sudo mv jruby-1.6.6 /opt/jruby

sudo vi /etc/environment 加上 /opt/jruby/bin

OpenJDK

Mac上其實已經有裝 Apple Inc. 發行的 Java SE 6,不過 Apple 已經宣布不再維護其 Mac 版本了,並把他們的程式貢獻到 Java 的開源版本 OpenJDK 上。也就是說 Mac 上如果想要裝新版的JDK 7 或 8,就是得用 OpenJDK 啦。請參考 OpenJDK 7 and 8 for OS/X Snow and Lion,下載 .dmg 安裝,然後你可以透過設定環境變數 JAVA_HOME 來指定 Mac 使用這個版本,或是透過 Utilities > Java Preferences 做全域的預設設定。

根據 JRuby 官網的這一篇Getting Started with JRuby and Java 7,Java 7 開始支援動態語言的特性,所以跑起 JRuby 效能更好唷。