l

2014年11月17日 星期一

JCConf Taiwan 2014一日遊

Nov. 16 10:09~11:54

螢幕截圖 2014-11-16 11.37.38

廣告時間的一心二用XD。

 

Java Community Conference Taiwan(JCConf)是由社群所主辦的Java開發者年會,今年第一次舉辦。前一陣子在網路上看到議程,有幾場演講的主題還蠻有趣的,當下就報名參加。上禮拜六是活動舉辦日,一早來到會議地點中央研究院人文社會科學館,場地很棒,很適合大型的研討會活動。

很久沒參加Java研討會,JDK8也出了一陣子都沒時間去研究,剛好這次有安排講者介紹「JDK8 與模式」,去吸收一下別人的日月精華。演講內容很精彩,唯一小遺憾,程式碼打在大會的大型投影布幕上看的不是很清楚,只能從講者的口述來拼湊程式碼內容。

第二場演講是來自阿里巴巴的林昊分享 「Java 常見問題排查方法」,但講者因故無法到場改由他的同事費輝代打。雖然代打者用很平鋪直敘且毫不花俏的方式解釋了投影片的內容,但是可以感受到他們在排除Java應用程式問題上有很深厚的經驗,很有料。

兩場主題演講之後,接下來活動分成三個track。Teddy參加的是「EventBus and Reactive Programming on Android」,講者概念性介紹EventBus在Android上的應用以及所要解決的問題,算是比較輕鬆且增廣見聞的一個演講。這場演講提早五分鐘結束,讓Teddy找到一個好位置吃便當微笑

***

中午12:35之後有兩場快講,先聽了「Gradle 起步走: 以 CLI Application 為例 」。Gradle是一個類似Ant與Maven的建構工具,講者用深入淺出的方式快速介紹Gradle的概念以及如何用Gradle打包一個文字模式應用程式。接著聽了「Cassandra 2.1 簡介」,Cassandra是一種NoSQL資料庫,聽完之後只記得這一點,其他的內容忘得差不多了挑眉質疑

***

快講結束之後開始下午的議程,首先參加「淺談 Geb 網站自動化測試」,Geb是以Groovy所開發的測試工具,底層可以採用Selenium的WebDriver來測試網頁應用程式。這場演講Teddy非常喜歡,講者口條清楚而且按部就班、深入淺出介紹Geb,從一開始如何用Geb測試簡單的網頁、讀取網頁中的元素,到利用Groovy語言的特性,採用Given、When、Then的格式將驗收測試的規格直接寫在測試案例中。講者提到他正在撰寫一本有關測試的書,相當值得期待。

接著Teddy聽了「Apache Kafka: A high-throughput distributed messaging system」,這場的講者與中午快講介紹「Gradle 起步走: 以 CLI Application 為例 」是同一位。如果有學過分散式作業系統的鄉民,會對於這場演講覺得很有意思。以前念書的時候有一陣子Teddy對於分散式系統很有興趣,當時花了一點時間研究JavaSpaces,可惜這個技術沒紅。講者在這場演講中把Kafka的特性與傳統message queue的差別介紹得很清楚,蠻不錯的。

***

接著聽了「Modern Design Pattern」,講者介紹MVC(與其他兩種變形)、RESTful和CQRS(Command Query Responsibility Segregation)。雖然講者對於前兩種pattern都舉了範例,也當場執行了這些範例,但總覺得還少了些什麼沒說清楚。例如,為什麼要把這三種pattern擺在一起稱為「Modern Design Pattern」?它們是彼此競爭、合作還是沒什麼關係只是剛好可以講50分鐘的三種pattern?為什麼講題要用「Modern」這個字?MVC不用提了,幾十年前的Smalltalk時代就有了,RESTful出現也超過10年以上。至於CQRS大家比較沒聽過,看起來好像比較新一點。但區分Command和Query的觀念,至少早在10幾將近20年前Bertrand Meyer在《Object-Oriented Software Construction》這本書中就提過了,雖然和CQRS pattern所提到的應用context不見得完全一樣,但背後的精神Teddy相信應該是有許多共同點。

GoF的23個pattern出版至今剛好20年,MVC的出現超過20年,RESTful和CQRS也都分別有10幾到快20年的歷史。從時間點的角度來看,「Modern」這個字出現在標題,有點「標題殺人法」的嫌疑。

***

最後一場聽了「Docker,最接近 "Build Once, Run Anywhere" 的輕量級虛擬技術」,之前在C. C. Agile聽過「小蜜蜂」介紹過Docker,以前在開發軟體的時候也經常遇到測試環境配置與虛擬化的問題,所以對這個主題很有興趣。講者善用比喻的方法說明Docker所要解決的問題,以及如何評量Docker與傳統VM的差異。講者花了很多時間準備了很豐富的demo,可惜因為環境設定還有時間因素所以最後一個demo來不及展示。

***

雖然是由社群所主辦的Java技術研討會,但內容的深度與廣度都很洽當。大型活動有些小雷在所難免,一天下來學習到許多新知,相當值得參加的一個活動。

***

友藏內心獨白:有料比花俏或硬擠出來的笑點來的重要。

9 則留言:

  1. Modern只是用來表示現在常聽到/見到。
    MVC這個議題沒給出一個總結,是一個很大的敗筆:(
    不過,MVC/MVP/MVVM這3個也很有趣,他們常被人拿來互相比較優缺,但也能夠同時使用。

    不過還是希望有興趣的人,能夠從這些keyword中,學到
    1. MVC的變化及應該如何使用
    2. 如何設計出RESTful的API
    3. 面對大量的讀寫操作時,另一個思考解決的方向

    回覆刪除
    回覆
    1. 可能是我太久沒關注web application開發,因為比較少聽到/見到CQRS pattern。

      刪除
    2. CQRS 對 Web Application 來說並不是一個必要的 Patterns
      而且,也不是用來取代 MVC/RESTful 的 Patterns
      我自己使用的感覺,這應該是用來 decouple 複雜係統的 backend system 用的
      甚至可以搭配 RESTful/MVC 來使用

      刪除
  2. 我不久會發佈演講稿,可以從中再一次細看每個投影片與演講內容…XD

    回覆刪除
    回覆
    1. 第一次聽到您本人演講,內容很豐富也很緊湊。

      刪除
    2. 演講稿整理好了 … Orz http://www.codedata.com.tw/social-coding/java8-patterns/

      刪除
  3. 明年Teddy會想要來講一個題目嗎?XD

    回覆刪除
  4. EventBus和iOS內建的NSNotificationCenter一樣應該算是Publish–subscribe pattern的實作

    回覆刪除
  5. Docker 場次,最後一段來不及 live demo 的 Docker 組合技,我另外錄影一份:
    Docker container linking example:http://youtu.be/ElfjCrttLpE

    回覆刪除