從Java到Node.js
原文連結: From Java to Node.js
特別說明:感謝大家積極參與【iTran樂譯】第3期!
我做開發有些年頭了,也使用過不少開發語言。然而儘管這樣,當我幹自己的活時,我總是傾向於使用Java。或許有一部分原因是出於習慣,有一部分原因是在我看來Java有最好的開源專案可供選擇,還有部分原因是我喜歡Java的特性和高效。
即使在web“競技場”中,新語言,新方法(Ruby on rails,Play!,Lift等等)大行其道的時候,我還是選擇了Java。儘管我認可這些框架的優勢,但是我從來沒有覺得有必要研究下它們是如何工作的。雖然我不止一次認可它們,但是最後我還是回到了Java中使用Spring(或ORM)實現純粹的REST-ful services和一個富JS前端。
近期,兩個因素讓我深入到了Node.js。第一是我對於不斷進步的JavaScript前端的賞識與日俱增。一個過去僅僅用來驗證表單提交的JS小片段現在已經演化成了一個完整的技術生態系統,框架和函式庫。這些天,我個人的最愛是Backbone.js。任何時候我都盡我所能去使用它。
第二是從一個在Voxer的朋友那裡得到的第一手的反饋關於他們在真實的構架下使用和開發Node.js的巨大成功。
所以我也“陷”了進去。在很短的一段時間裡我已經把它應用在幾個真實專案裡了。我可以說它是我語言選擇的新歡。
首先,它的基於事件驅動的模型完美地適合伺服器端的開發。儘管其他語言也有這個特性(Java Servlet 3.0, Event Machine, Twisted to name a few),但是它把JavaScript的易用性和成熟性聯絡在了一起。在AJAX中,我們都習慣使用回撥函式不是麼?
第二,Node.js出現很短一段時候後,它的社群已經非常龐大了。那裡有許多有用的開發庫能解決你的問題,他們的質量也非常高。
第三,它簡單易學。依靠Node庫和特性集合,他們可以幫助你快速構建需要的東西。
說了那麼多以後,我想分享一些資源,他們能幫助有Java背景的你快速地學習Node.js。
JavaScript入門
我在下文列出了許多關於Node.js的資源。但對於我來說,最關鍵的是讓我的JavaScript知識上一個臺階。你將把所有的時間花在使用JS書寫服務端程式碼上,所以工欲善其事必先利其器。
作為一個Java開發者,你可能已經被訓練成以物件導向的設計方式來進行思考了。對於我來說,這也是我最關注的部分。幸好,JavaScript不是一個典型的物件導向的語言。你可以在JS中實現OO程式設計,但是那樣也違背了JS的初衷。
這裡是一個JavaScript資源列表:
JavaScript: The Good Parts - Definitely a requirement 第4和第5章節(函式,物件和繼承)對於有OO背景的人來說是最重要的部分。
Learning Javascript with Object Graphs (第2,3部分) – howtonode.org有許多好的Node材料,但是第三部分可以讓你對整本書有一個很好的理解。
Simple “Class” Instantiation – 我最近讀的另一篇帖子。值得一讀。
學習Node.js
有了一個好的JavaScript背景,開始學習使用Node.js是非常直接的。需要理解的最主要的部分是I/O的非同步性和通過產生/消費事件來完成工作。下面是一個我用來快速入門的列表:
- DailyJS’s Node Tutorial - DailyJS部落格的Node教程連載。這是一個非常好的資源,值得從頭到尾讀一遍。
Mixu’s Node Book - 不完整,但是仍值得讀。我期待閱讀後續章節。
Node Beginner Book – 很好的入門材料。
- How To Node – 關於Node.js的部落格(標記一下)。
我覺得看完這些東西會讓我更有動力去學習Node。但願你也能感受的到(非常感謝這些作者能騰出時間來分享他們的知識!)。
框架?
Java中有許多開源框架。那也是Java流行的原因。儘管Node.js非常新,已經有許多人完成了大量的工作並把他們的程式碼共享出來。以下是我認為一些在Node.js中與流行的Java框架相對應的東西(就我目前所知的)。
Web MVC
在Java的世界裡,許多人熟悉Web MVC框架不Spring MVC, Struts, Wicket, and JSF。近期的趨勢更是傾向於客戶端JS的MVC框架比如Ember.js(SproutCore)和Backbone.js。
儘管如此,一個有競爭力的Node.js web框架是Express框架。從某種意義上來說,它甚至超越了一個web框架因為它同樣提供了大多數web server的功能(大多數Java開發者習慣使用的Tomcat, Jetty等)。更具體的說Express是基於Connect的。它的設計經過了反覆推敲的,它提供了特性集剛好能幫助你完成工作。
應用程式生命週期管理框架(依賴注入框架)
在Java世界裡,Spring是一個非常流行的框架,它提供了一堆的膠水與抽象功能。它具有依賴注入,測試,物件生命週期管理,事務管理等功能。它總是我新專案考慮的第一個框架。
在Node.js中…我卻一點也不想念它。JavaScript有更靈活的解耦方式,所以我不覺得我需要找一個替代品(譯:在Java裡我也覺得Spring是個多餘的東西)。也許生活會更好?
關係對映 (ORMs)
我對ORM有著複雜的情感,但是它有時確實讓你的生活更簡單。Node.js裡的ORM沒有什麼缺憾。自由選擇吧。
測試框架
Java裡有許多這樣的框架,比如Junit。同樣也有許多做mock的庫,stub庫,DB測試的庫等等。Node.js也有許多。根據你的情況選擇。我覺得nodeunit比較流行,它類似於jUnit。我個人使用Mocha測試。測試工具可以根據個人愛好來選擇,但是好在有許多好的東西可供選擇。
日誌
當選擇log庫時,Java開發者總是有一大堆的選擇。Commons logging, log4j, logback, and slf4j 是一些比較流行的log庫。Node.js同樣也有許多。我目前使用winston,還沒碰到什麼問題。它有同樣logging levels, multiple transports(log4j中的appender)和非同步日誌。
譯註:由於原來頁面被牆,只能通過線上代理訪問,導致不能獲取原文中正確的超連結(線上代理會將原文中的超連結自動轉換成線上代理瀏覽的形式),請見諒。
相關文章
- PayPal從Java遷移到Node.jsJavaNode.js
- 從 PHP 轉到 Node.js 的那些事PHPNode.js
- 從Android到JavaAndroidJava
- 從C++到javaC++Java
- 從 Java 程式碼到 Java 堆Java
- Web平臺能從Node.js學到什麼WebNode.js
- 從Java到Kotlin(八)JavaKotlin
- 從 Java 到 Scala(二):objectJavaObject
- 從Java到Kotlin(三)JavaKotlin
- 從Java到Kotlin(四)JavaKotlin
- 從Java到Kotlin(二)JavaKotlin
- 從Java到Kotlin(一)JavaKotlin
- 從Java到Kotlin(六)JavaKotlin
- 從Java到Kotlin(五)JavaKotlin
- 從Java到Kotlin(七)JavaKotlin
- PayPal從Java遷移到Node.js之我見JavaNode.js
- 為什麼我從Python轉戰到Node.jsPythonNode.js
- 從Java到JVM到OS執行緒睡眠JavaJVM執行緒
- 從 Java 到 Scala(四):TraitsJavaAI
- 從 java 8到 java 11變化一覽Java
- 從Java到Kotlin,然後又回到Java!JavaKotlin
- java 從EXCEL匯入到系統JavaExcel
- Java學習從入門到精通Java
- 10個最佳 Node.js 企業應用案例:從 Uber 到 LinkedInNode.js
- Java 從入門到精通-反射機制Java反射
- 從 Java 位元組碼到 ASM 實踐JavaASM
- 從 Java 到 Scala (三): object 的應用JavaObject
- 從 Java 到 Kotlin - 介紹 KotlinJavaKotlin
- java 從EXCEL匯入到資料庫JavaExcel資料庫
- 漫畫 JAVA…… 從入門到入墳……Java
- Java集合從菜鳥到大神演變Java
- JAVA從入門到大神(JAVA——API知識總結)JavaAPI
- 從DTFT到DFS,從DFS到DFT,從DFT到FFT,從一維到二維FFT
- 從Java到JVM到OS執行緒的優先順序JavaJVM執行緒
- Java基礎01 從HelloWorld到物件導向Java物件
- 從 Java 到 Scala(一):物件導向談起Java物件
- java從菜鳥到碼神之路——運算子Java
- Java學習路線從入門到入土Java