我怎麼才能成爲一個Java Web開發者?」對於這個問題,答案其實並不簡單。成爲一個Java Web開發人員包括不少方面。我遇到過的Java程序員,可能曾是優秀的前端開發人員,也可能之前是不錯的後端開發人員。所謂「前端」,我指的是衆多瀏覽 器端技術——HTML、CSS、Javascript,以及Java模板技術,如Thymeleaf、SiteMesh,或者古老的JSPs。後端開發人 員有更堅實的Java、數據庫(SQL和NoSQL),消息傳遞(JMS/AQMP)和Web服務(SOAP/REST)技能。
你應該也知道所謂的「全棧」Java開發人員。這 是我的的技能集合。一個完整的全棧開發者應該一樣勝任前端開發和後端開發的工做。這多是難度係數最高的一條路了,由於所涉及得技術很是多樣。也許有一 天,你前一秒還在jQuery調試,接下來就去性能調優Oracle數據庫查詢了。可是,成爲一個全才 Java開發人員是須要時間和經驗的。前端
從哪裏開始? java
對於有抱負的開發人員,技術的前景會成爲壓倒一切的動力。可是技術也是在不斷變化發展中的你會冒着學習的東西很快就會過期的風險嗎?
客戶端技術程序員
我建議新手開發人員能夠從基礎的學起;HTML,CSS和JavaScript。這些技術是web開發的核心。並且這些技術在某種意義上說也是通用的,不管你是Java web開發人員仍是Ruby Web開發人員都要用到。
HTML——超文本標記語言。這是用來生成網頁 的。你須要對HTML有一個深刻的瞭解。在萬維網初期,HTML習慣上是一個由網頁服務器向瀏覽器提供的文件。它對靜態內容很是有效。不會改變內容。但 是,如今人們愈來愈傾向於動態的內容。因而,HTML再也不是靜態的文件,HTML開始按需生成。做爲一個Java web開發者,你得會編寫如何爲網頁瀏覽器生成HTML文件的代碼。你須要對HTML文檔的結構有一個深入的理解。web
CSS——層疊樣式表。這是用來顯示頁面樣式的。它控制字體、顏色和佈局。與HTML定義的是網頁的內容不一樣,CSS定義的是當在瀏覽器中呈現時網頁的外 觀。例如,你能夠對桌面Web應用程序使用一套CSS規則,對移動應用程序使用另外一套不一樣的CSS規則。相同的HTML,當渲染在瀏覽器上時,就有了兩個 徹底不一樣的外觀。
數據庫
Javascript——製做網頁上的東西。不要 將Java與Javascript混淆。雖然它們有一些語法的類似性,但這是兩個徹底不一樣的編程語言。JavaScript才能真正推進Web 2.0應用程序。經過使用Javascript,你能夠根據用戶的操做,動態地改變HTML/CSS,提供更有視覺感覺的網頁給用戶。 編程
HTTP(超文本傳輸協議)——客戶端和Web服務器之間的通訊。有太多的web開發人員竟然對HTTP一無所知。HTTP絕對是你必學的關鍵技能。尤爲 是當你要用AJAX工做的時候。你須要知道一個POST和一個GET之間的區別。你應該記住HTTP狀態碼200,301和404的含義——以及更多。做 爲一個Java web開發人員,你的平常工做不可避免要與HTTP打交道。 後端
服務端技術瀏覽器
Java——本文的問題就是如何成爲一個Java web開發人員。因此,你固然得知道Java編程語言。除了Java自己,你還應該熟悉Java Servlet API。有一些Java web框架,隱藏着Java Servlet API的用法。若是出現問題,那麼你須要知道幕後究竟發生了什麼事情。 服務器
JPA——Java持久性API——使用數據庫。JPA是Java傳統關係數據庫的標準。Hibernate是如今使用最普遍的JPA實現。做爲一個 Java web開發人員,你確定要用到數據庫。你要從數據庫中獲得內容,以顯示在網頁上,或從用戶那裏接收內容存儲到數據庫中。因此,Java web開發人員須要知道如何使用JPA。 框架
Java應用程序服務器——Java web應用程序的運行時容器。Tomcat是到目前爲止最流行的Java應用程序服務器。Web應用程序歸檔文件,又名WAR文件,有一個Java標準。 這些被部署到應用程序服務器,如Tomcat,以此爲你的web應用程序提供運行環境。十年之前,還流行在應用程序和應用程序服務器之間應用更復雜的耦 合。然而,如今的趨勢更支持應用程序和應用服務器之間的鬆散耦合。java web前端注重的是實戰項目,你是真心地想學好web前端這門技術能夠來這裏,前面是肆捌壹 ,中間是玖捌陸,最後是柒玖玖,天天都會有web前端的視頻教 程更新,不想的就不要來。
Java框架請注意,到目前爲止,我尚未提到任 何Java框架。我所描述的,都是你做爲一個Java web開發人員會用到的不一樣技術。客戶端技術徹底獨立於服務器端技術。Firefox不在意,服務器運行的是Java,Python仍是.NET。不過, 新手開發人員彷佛經常遺忘這一點。
不使用Java框架的Java web開發也是能夠的。可是這樣一來,你須要額外寫不少代碼來處理本來框架能夠爲你辦到的事情。這就是爲何開發Java web應用程序時,你一般會想要使用某一個框架。
Spring框架是構建web應用程序一個很是棒 的工具集合。雖然沒有精確的統計數據,但我看到有文章估算已有超過60%基於Java的web應用程序使用Spring。這其實也不奇怪。Spring Core有IoC容器和依賴注入。Spring MVC,是一款基於MVC的成熟又靈活的web框架。Spring Security是保護網站最好的工具。Spring Date有助於維護持久性。Spring還有其餘的項目,你能夠用來構建大範圍推廣的應用。
當涉及到總體框架時,真的找不到替代品代替 Spring。哪怕存在着不少針對不一樣Spring項目的競爭技術。可是,沒有單一的解決方案,可以具有Spring框架系列項目的深度和廣度。在個人 Spring入門在線教程上,我對主要的Spring框架項目作了一個很好的概述,並說明了如何使用它們來構建企業級應用程序。
Grails是創建在Spring之上的快速應用 程序開發框架。它不但擁有Spring的全部內容,還借鑑了Groovy的生產力優點。我喜歡將Grails形容爲用Groovy包裝過的Spring。 關鍵一點要記住的是,其背後依然是Spring。 Grails如今愈來愈受到企業的歡迎。Grails的優點之一就是其出色的社區支持。 Spring Roo是一個純Java框架,這彷佛和Grails的做用相同,不過它沒有Groovy。我不是Spring Roo的的粉絲,而且我最後一次使用Spring Roo也不是由於市場要求。Spring Roo尚未被普遍接受。 Play基於Scala的框架。雖然我尚未嘗試過Play。可是如今市場上面的反響不錯。因此有機會的話我會試一試。不過它目前尚未被企業中普遍採 用。至少到如今爲止尚未。
JBoss Seam多是最接近Spring框架的替代品。JBoss Seam遵循JEE標準。JBoss Seam是一個很好的選擇,具備良好的支持而被企業所接受。不過,JBoss Seam常常由於在開發和性能方面比Spring慢而飽受詬病。可是有的批評對於JBoss Seam過於苛刻了。
結語
成爲Java web開發人員是不可能一蹴而就的。沒有所謂的《21天自學成爲Java web開發者》的速成教材,也沒有捷徑。你須要學習和掌握不少不一樣的技術。而全部這些都須要時間來學習。
成爲Java web開發人員是一個很是有意義的事業。你剛入門的時候能夠只專一於前端技術,也能夠只專研後端技術。隨着之後開發的項目增多,你就能夠從這一技術領域轉 移到另外一個技術領域。