從PHP到Java。有什么建議嗎?
我不會(huì)在學(xué)習(xí)語(yǔ)言的同時(shí)嘗試學(xué)習(xí)IDE。一個(gè)簡(jiǎn)單的過(guò)渡是堅(jiān)持使用shell和慣用的文本編輯器,并使用以下shell友好的工具:
ant,用于組織項(xiàng)目,運(yùn)行自動(dòng)化測(cè)試套件,增量編譯BeanShell用于交互式測(cè)試,可以快速?lài)L試一個(gè)快速的技巧:javap從命令行將為標(biāo)準(zhǔn)庫(kù)中的任何類(lèi)提供方法簽名。與PHP -rJava 相似,但提供了更多信息。Java的在線文檔是精確,專(zhuān)業(yè)的,并且在色調(diào)和格式上保持一致。與PHP中的所有功能都位于一個(gè)統(tǒng)一的命名空間中不同,Java中的標(biāo)準(zhǔn)庫(kù)是類(lèi)層次結(jié)構(gòu)。您必須了解圍繞該標(biāo)準(zhǔn)庫(kù)的方式,這意味著了解層次結(jié)構(gòu)和職責(zé):例如,您必須了解這java.util.List是java.util.Collection帶有附加條目概念的子接口。有了這些信息,谷歌搜索java.util.List會(huì)將您帶到該類(lèi)的Javadoc,并且Javadoc將告訴您確切的方法簽名并將您鏈接到一些具體的實(shí)現(xiàn)。
一些其他區(qū)別:
字符串是 字符 序列,而不是字節(jié)序列。絕對(duì)正確的方法。系統(tǒng)產(chǎn)生并使用(字節(jié)或字符的) 流 ,而不是字節(jié)緩沖區(qū)。例如,如果要過(guò)濾PHP中的輸出,則標(biāo)準(zhǔn)做法是向ob_get_contents請(qǐng)求字節(jié)緩沖區(qū),然后轉(zhuǎn)換整個(gè)緩沖區(qū)。在Java中,您向Servlet添加了一個(gè)過(guò)濾器,該過(guò)濾器一次將輸出轉(zhuǎn)換為一個(gè)字節(jié)或一個(gè)字符。最初使用它有點(diǎn)麻煩,但是當(dāng)您習(xí)慣它時(shí)它會(huì)變得更簡(jiǎn)單,更像Lego-流處理器不必知道事物的來(lái)源和去向。幾乎所有有用的東西都是一個(gè)接口,并且創(chuàng)建接口的實(shí)例可能很棘手,不規(guī)范,而且記錄不完備。在PHP中,您可以使用來(lái)啟動(dòng)并運(yùn)行XML new DOMDocument()。在Java中,它org.w3c.dom.Document是一個(gè)接口,因此new()不起作用。Javadoc對(duì)于接口實(shí)例一旦存在就如何行為是非常精確的,但是當(dāng)您試圖找出對(duì)象的實(shí)際出生方式時(shí),它可能會(huì)顯得有些y和謹(jǐn)慎。很多時(shí)候,您將不得不尋找教程和代碼示例,并復(fù)制粘貼一個(gè)樣板,為您提供DOMDocument java.sql.Connection或其他實(shí)例。像Spring這樣的框架之所以受歡迎,原因之一是它們將丑陋的對(duì)象創(chuàng)建代碼分離開(kāi)來(lái),并為您提供了一個(gè)神奇的接口實(shí)現(xiàn)世界。我實(shí)際上是朝相反的方向切換。我發(fā)現(xiàn)Java在一家大型公司中運(yùn)作良好,您可能正在處理單個(gè)組件,然后將其交給其他人,后者將該組件集成到更大的系統(tǒng)中,然后將其打包并交給一個(gè)單獨(dú)的運(yùn)營(yíng)團(tuán)隊(duì)-所有這些間接性和可配置性(FactoryBuilderFactory類(lèi)型抽象,web.xml文件等)都很有意義,并且可以做一些有用的事情。在一家小公司的程序員_都_操作人員,Java還有很多工作要做。使用Java,您將必須習(xí)慣一些概念,例如啟動(dòng)Java進(jìn)程,監(jiān)視Java進(jìn)程以確保其正常運(yùn)行,監(jiān)視Java進(jìn)程以確保它不會(huì)處于存活狀態(tài),而不會(huì)引起昏迷。在更新代碼等時(shí),不進(jìn)行響應(yīng),關(guān)閉和重新啟動(dòng)Java進(jìn)程,而將中斷降到最低。如果您有單獨(dú)的運(yùn)維人員,那很好,這是他們的工作,他們非常擅長(zhǎng)。如果您是一名程序員,那么照顧Java流程可能會(huì)分散注意力,并且很難做好。
解決方法最近三年,我一直在用PHP進(jìn)行Web應(yīng)用程序開(kāi)發(fā)。我現(xiàn)在快要嘗試Java。我最近一次使用該語(yǔ)言是在8年前,而且大部分是學(xué)術(shù)性的。
我對(duì)PHP的對(duì)象模型(版本5)相當(dāng)熟悉,并且我?guī)缀跬耆窃贠O中進(jìn)行編碼的。我現(xiàn)在想傳達(dá)這種經(jīng)驗(yàn)并將其用于Java開(kāi)發(fā)。
我來(lái)自哪里:
linux作為桌面和服務(wù)器Vim / gVim +插件作為編輯器MySQL的數(shù)據(jù)庫(kù)apache httpd一堆PHP框架的使用經(jīng)驗(yàn),Zend + Doctrine是我使用最多的框架到目前為止,我對(duì)Java的了解:
我需要一個(gè)IDE:IntellijIDEA,NetBeans或Eclipse我需要選擇一個(gè)開(kāi)發(fā)框架。一些經(jīng)常使用的名稱(chēng):Spring MVC,條紋,檢票口。現(xiàn)在,我需要一些見(jiàn)識(shí),可以幫助使過(guò)渡更加順暢。但是從人們談?wù)撍姆绞絹?lái)看,Java似乎是具有自己的生態(tài)系統(tǒng)的全新野獸。聽(tīng)起來(lái)好像實(shí)際上遷移到Ruby或Python會(huì)更容易,這很好奇,因?yàn)閺奈业慕嵌葋?lái)看,Java在概念上似乎最接近PHP,盡管更為嚴(yán)格和預(yù)先編譯。
聽(tīng)起來(lái)可能很奇怪,但很少有人公開(kāi)記錄過(guò)自己的舉動(dòng)經(jīng)歷。我已經(jīng)在google,amazon和stackoverflow上搜索了類(lèi)似的問(wèn)題,結(jié)果令人向往。我只是簡(jiǎn)直不敢相信,如果我想以Java的速度快速發(fā)展成為Web開(kāi)發(fā)人員,我將需要像新手一樣開(kāi)始。
歡迎任何人回應(yīng),但我認(rèn)為有些人在兩種語(yǔ)言上都有寶貴經(jīng)驗(yàn)將使這次討論最豐富。
是什么幫助您快速掌握J(rèn)ava? Java中不存在哪些概念,而PHP中卻缺少哪些概念,反之亦然?PHP開(kāi)發(fā)人員使用Java的一些陷阱。您覺(jué)得轉(zhuǎn)換完成多久了?相關(guān)文章:
1. bootstrp是col-md-12列的,只有col-md-10有內(nèi)容,可以讓沒(méi)有內(nèi)容的不占據(jù)位置嗎;2. thinkPHP5中獲取數(shù)據(jù)庫(kù)數(shù)據(jù)后默認(rèn)選中下拉框的值,傳遞到后臺(tái)消失不見(jiàn)。有圖有代碼,希望有人幫忙3. python - Fiddler+Android模擬器抓取app,json數(shù)據(jù)被加密了,如何解析?4. 在windows下安裝docker Toolbox 啟動(dòng)Docker Quickstart Terminal 失敗!5. java - 如何用圖畫(huà)的方式有效地表示多線程?6. html5 - 剛接觸H5,為什么我覺(jué)得很多標(biāo)簽都沒(méi)什么用呢?7. windows C++ 一般使用什么技術(shù)調(diào)用Webservice接口8. html5 - 現(xiàn)在前端設(shè)備和網(wǎng)速都提高了,為什么要用服務(wù)器端渲染?9. android - 請(qǐng)問(wèn)一下 類(lèi)似QQ音樂(lè)底部播放 在每個(gè)頁(yè)面都顯示 是怎么做的?10. python - matplotlib安裝之后使用出錯(cuò)
