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