謝謝知乎。Java初學(xué)者首先下載 JDK 開發(fā)環(huán)境,然后再下 eclipse 對(duì)嗎?那 tomcat是什么?還需要安裝嗎?

程序獵人Till All are One!
何馬、FAN 等人贊同
這個(gè)問題,作為有些Java經(jīng)驗(yàn)的人,都會(huì)覺得太初級(jí)。而且,我認(rèn)為可能很多真正的高手不屑于跑來回答這種問題。
本來我也不打算回答的,但最近剛好憑興趣在學(xué)Node.JS,順便學(xué)習(xí)加強(qiáng)一下Vim。發(fā)現(xiàn)什么Coffee Script、什么Jade、什么Express之類的還真是讓人一頭霧水。深刻地認(rèn)識(shí)到很多基礎(chǔ)的東西,如果沒有個(gè)人來串一下,對(duì)于初學(xué)者來說還真是麻煩。
所以,我覺得還是來回答一下比較好。(是不是太羅嗦了?)

===== 正文分割線 =====
JDK是Java Development Kit,也就是說Java開發(fā)所需的工具包。有了這個(gè)東西,一切Java開發(fā)理論上都不是問題了。當(dāng)然,根據(jù)你下載的版本不同,可能擅長的領(lǐng)域不同。通常大家都是用JDK來開發(fā)JavaSE應(yīng)用的。
具體做法上,JDK里包含了用來編譯源代碼的javac命令,和用來執(zhí)行字節(jié)碼的java命令。
只要設(shè)好了所用操作系統(tǒng)的PATH和CLASSPATH兩個(gè)環(huán)境變量,對(duì)你所寫的文本格式的Java源代碼進(jìn)行操作,原則上就不會(huì)出現(xiàn)代碼編寫問題以外的錯(cuò)誤。
但因?yàn)閖avac和java命令都是命令行命令,執(zhí)行以及結(jié)果查看都有些麻煩。更麻煩的是代碼的動(dòng)態(tài)調(diào)試(也就是一邊跑一邊看每一步都做了什么)。

Eclipse是集成開發(fā)環(huán)境,就是解決上面說的命令執(zhí)行和操作麻煩的問題的。使用這個(gè)工具,如果你不做什么特別的特殊的事情的話,你可以不用操心javac和java命令怎么用,參數(shù)是什么,各種環(huán)境變量如何配置等。
只需要按照教程學(xué)會(huì)工具的使用,就可以很容易地書寫你的代碼,然后進(jìn)行編譯、執(zhí)行以及調(diào)試。
而且,代碼書寫時(shí)會(huì)有很多提示,不用去記各個(gè)Class那些龐雜的方法名等。
也正是因?yàn)榉奖悖鼤?huì)在一定程度上影響你對(duì)Java相關(guān)命令的學(xué)習(xí)以及對(duì)常用Class的掌握。畢竟重復(fù)是加強(qiáng)記憶的最佳途徑。什么都提示了,都自動(dòng)了,就很難記住了。
這就是為什么有人反對(duì)你一開始使用這工具。

至于tomcat,它是使用Java進(jìn)行Web開發(fā)的應(yīng)用服務(wù)器(Application Server)軟件。
之所以它會(huì)跟Java有緊密的聯(lián)系是因?yàn)镴ava在經(jīng)歷了誕生后的進(jìn)化之后,漸漸地被大眾接受為優(yōu)良的Web服務(wù)器端編程語言,也就是說Java最能發(fā)揮其優(yōu)勢(shì)的地方是用來進(jìn)行Web開發(fā)。
從你的問題描述,我冒昧地認(rèn)為你可能不是太了解什么是Web開發(fā)。所以簡單做一下解釋。
Web開發(fā),說白了就是網(wǎng)站構(gòu)建的軟件部分。我們每天上網(wǎng),看到各種網(wǎng)頁,這些網(wǎng)頁大多數(shù)都是由服務(wù)器端的程序根據(jù)用戶提出的請(qǐng)求生成出來。這些程序就是服務(wù)器端運(yùn)行的程序。
而服務(wù)器與瀏覽器的溝通是通過特定的格式進(jìn)行的,這個(gè)格式被稱作HTTP協(xié)議,HTTP協(xié)議有很多內(nèi)容需要處理,如果所有這些都由開發(fā)者來做,未免負(fù)擔(dān)過重。所以,很多年以前就有人開發(fā)出了專門的應(yīng)用程序服務(wù)器軟件,專門負(fù)責(zé)處理HTTP協(xié)議中的細(xì)節(jié)部分,而把真正需要的處理發(fā)送給專門的程序,也就是Web開發(fā)的程序。
以Java為例——
所有的Java程序啟動(dòng)入口都是public static void main(String[] args)函數(shù)。tomcat里面就有這么一個(gè)函數(shù),運(yùn)行這個(gè)函數(shù)后,tomcat里面會(huì)進(jìn)行各種處理——打開網(wǎng)絡(luò)端口進(jìn)行監(jiān)聽、加載HTTP解析模塊……我們稱作服務(wù)器啟動(dòng)了。(實(shí)際是跟Apache協(xié)作進(jìn)行的,這里就不詳述了。)
當(dāng)從網(wǎng)絡(luò)上有請(qǐng)求到達(dá)我們的tomcat服務(wù)器時(shí),它會(huì)根據(jù)請(qǐng)求的地址來調(diào)用你寫的java程序模塊。
比如,讓我們先假設(shè)知乎的后臺(tái)是Java實(shí)現(xiàn)的。
當(dāng)你敲入
http://www.zhihu.com/
的時(shí)候,tomcat會(huì)得到一個(gè)希望訪問/(根目錄資源)的請(qǐng)求。
然后它去配置文件里查根目錄對(duì)應(yīng)的模塊是什么。
假設(shè)查到的模塊是root這個(gè)類
那么它會(huì)去調(diào)用root.doGet()方法。
而你寫一個(gè)Servlet的時(shí)候,必須實(shí)現(xiàn)doGet()方法,此時(shí)你的方法被調(diào)用,那么你寫的代碼就運(yùn)行了。

大概就是這么個(gè)狀況。

至于學(xué)習(xí)方法。因人而異。
如果你希望直接學(xué)習(xí)如何用Java來開發(fā)Web應(yīng)用。建議在學(xué)習(xí)Java語言之前先簡單學(xué)習(xí)一下網(wǎng)絡(luò)基礎(chǔ)知識(shí)。
至少理解以下幾個(gè)基礎(chǔ)概念(到維基百科上查查,讀懂即可):
服務(wù)器
客戶端
協(xié)議
端口
URL
TCP/IP
網(wǎng)絡(luò)分層結(jié)構(gòu)(了解概念即可,暫時(shí)不需要記住各層是咋回事兒)
瀏覽器
HTTP(需要理解GET/POST的意義、差別)
HTML
Session(會(huì)話)

然后再開始Java進(jìn)行Web開發(fā)的學(xué)習(xí)。

最后,祝你學(xué)習(xí)愉快。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,649評(píng)論 19 139
  • 轉(zhuǎn)自陳明乾的博客,可能有一定更新。 轉(zhuǎn)原文聲明:原創(chuàng)作品,允許轉(zhuǎn)載,轉(zhuǎn)載時(shí)請(qǐng)務(wù)必以超鏈接形式標(biāo)明文章 原始出處 、...
    C86guli閱讀 4,884評(píng)論 6 72
  • 生命是一道 水滴在豎直鏡面上滑下的痕跡 任何一點(diǎn)驚擾都足矣改變它的軌跡 從此我 看到尼采 想起你 寫一首詩 想起你...
    五里閱讀 233評(píng)論 0 3
  • 道德經(jīng) 七十章: 吾言甚易知,甚易行。天下莫能知,莫能行。言有宗,事有君,夫唯無知,是以不我知。知我者希,則我者貴...
    道臨天下閱讀 5,426評(píng)論 2 1
  • 寂寞了。。。
    leaves此木閱讀 172評(píng)論 0 0

友情鏈接更多精彩內(nèi)容