JavaRush /Java Blog /Random-TW /未來 Java 開發人員的指南。企業 - 第 1 部分
Diana
等級 41

未來 Java 開發人員的指南。企業 - 第 1 部分

在 Random-TW 群組發布
「不要對你所取得的這些技術成就感到太自豪。與原力的力量相比,摧毀行星的能力根本算不了什麼。」——死星上的達斯‧維德。 未來 Java 開發人員的指南。 企業 - 第 1 部分 - 1

介紹

也許,該系列文章的接下來的兩部分是許多人最期待的,並且有充分的理由。在地平線之外、在純粹的 Java 之外還有什麼?Java 開發人員在每個專案中都呼吸著什麼?對於任何主要程式語言是 Java 的普通後端工程師來說,這都是一本真實、完整的自學指南。我打算盡可能涵蓋醫院的平均水平,不僅描述最受歡迎的框架,還描述目前被認為相關的解決方案。當然,工具很多,而了解哪些是最重要、最好的卻是一條沒有出路的道路。你們每個人都查看了DOU上的「職位」部分,發現了一堆從空缺到空缺不斷重複的技術。我知道不可能描述所有的事情,但是提出一個總體框架是可以的,所以讓我們試著遵循這個方向。不知何故,在過去的一個專案中,發生了一種相當有趣的尷尬,我認為,對於某個領域的許多人來說,這種尷尬過去和現在都在不斷地重複。這個任務被設定為將一個 HTML 頁面的渲染附加到已完成的功能上,只是為了顯示各個實體的狀態。於是,我的同事決定在沒有人使用Spring的情況下,附加Spring thymeleaf,它拉取了Spring本身的部分核心依賴。這只是一個常規頁面的全部內容,該頁面僅顯示 2-3 個實體的狀態。 「我從來沒覺得使用兩把光劍有什麼意義…在我看來,這是一種炫耀」 — 歐比王‧克諾比。一方面,開發人員盡快解決了問題,安裝了一個他有使用經驗的框架,並在幾個小時內將其整合到專案中。但另一方面,我們的程序規模已經擴大,所以簡單的問題變成了:他做對了嗎?對於這樣的原子任務,當你確定這個thymeleaf/Spring MVC等更大的時候。它不會在任何地方使用,最好根本不使用它。我總是對諸如「哦!是的,我們這裡使用了 Hibernate!看,一切都很酷,ORM!”,當被問到是否可以使用常規 JDBC 來解決這個邏輯問題時,他們聳了聳肩。有普通的建築,它應該是簡單的,應該謹慎對待,而不是充滿時尚和超現代的框架。正如歐比王上面所說,這無非是炫耀,儘管需要知道如何使用它們。在我看來,年輕的Javaist是最不幸的——那麼多規範,那麼多庫需要研究。光是 Java EE 就有豐富的文件。問題出現了,初學者該做什麼,接下來他該學什麼,在霍斯特曼之後他該做什麼?簡單的回答:不幸的是,遇到了很多人。我們不會從業務框架開始,而是從更平凡的必要事物開始。

作業系統

Linux

除了 Windows 和/或舒適的 Yosemite 之外,您還需要微笑著向 Linux 伸出雙手。對於某些項目來說,成為使用者並知道如何使用命令列就足夠了,而對於其他項目來說,了解如何使用命令列就足夠了。哪種方法最好?網路上有大量的書籍/教學。首先安裝Ubuntu或您喜歡的任何其他發行版,並嘗試在接下來的一兩個月內將其用作您的主要作業系統。如果您透過使用終端編譯和操作檔案來開始在 Linux 中學習 Java,效果會好得多。 未來 Java 開發人員的指南。 企業 - 第 1 - 2 部分Linux 命令列 作者:William Shots。閱讀這本書不是作為一本「五十度灰」小說,而是作為一門成熟的互動課程——打開終端並跟著作者重複。您想了解基礎知識以及 Linux 是如何運作的嗎?我們不要選電腦科學和作業系統課程——那是下一部分。造訪edx.org並嘗試簡單的Linux 簡介課程。還有上述系列中的一本書How Linux Works: What Every Superuser Should Know by Brian Ward。一本插圖精美的出版物,專注於網路、設備和資源管理。 未來 Java 開發人員的指南。 企業 - 第 1 - 3 部分前進?有一本很棒的書,順便說一下,我這裡有一本……是的(抖落灰塵)……就在這裡! Unix 和 Linux:系統管理員指南。埃維·內梅特. 未來 Java 開發人員的指南。 企業 - 第 1 - 4 部分相當大的一本手冊,翻譯得很好。說實話,我個人並沒有掌握它,但我真的很喜歡管理基礎知識(第一部分)。當然,你不能忽視 Shell 腳本。最好在實踐中嘗試所有這些,但是您可以從書籍中查看Cameron Newham 的《學習 bash Shell:Unix Shell 程式設計》。 未來 Java 開發人員的指南。 企業 - 第 1 - 5 部分如此大量的關於 Linux/Unix 的文獻不可能全部涵蓋,特別是在這篇文章中,Linux 是背景。我的同事在這件事上吃了狗,他建議了一個相當實際的事情: 下載 ArchLinux 並嘗試啟動並運行它。在這個過程中你會學到我最不想要的東西!

視窗

程式設計師的履歷裡有一欄:「Windows經驗10年以上」。當然,我祝賀你,你從 10 歲開始就在 Windows 上玩反了,但我請你不要在面試時提前給自己挖坑,因為在一個你正在密切合作的項目上IIS,batch/powershell,上帝保佑,註冊表,面試不會真的很困難,除了坐在對面的人咧著嘴笑。利達,你也會受到某種程度的羞辱。你需要這個嗎?答案不言而喻。將盜版 Windows 從 torrent 擱置起來,試著將其安裝在某種 Windows Server 虛擬機器上。不能只從用戶端和JAVA_HOME安裝方面來研究。在這方面, Mark Minasi 所寫的 Mastering Windows Server 2012 R2一書提供了幾乎完整的指南。 未來 Java 開發人員的指南。 企業 - 第 1 - 6 部分例如,如果您使用 PowerShell,請查看Bruce Payette 所寫的 Manning撰寫的優秀書籍《Windows PowerShell in Action》。我知道不可能讀完1000頁,但至少你可以隨身攜帶它作為參考。我想,其他的都不需要了。 因此,請注意您在使用 Windows 方面的知識差距,並在 Internet 上尋找您感興趣的資訊。 未來 Java 開發人員的指南。 企業 - 第 1 - 7 部分

建構工具

梅文

在 Maven 中最需要理解的是什麼?以下是首要步驟和任務:
  1. 了解Maven在每個階段做了什麼,你甚至可以記住它。這幾乎是 80% 的成功,並且會給您一個清晰的畫面。
  2. 使用多模組系統在本地創建您自己的沙箱項目,並具有明確的依賴關係管理。嘗試附加第三方函式庫,嘗試使用它們來創建一些東西。
  3. 玩個人資料
  4. 了解插件管理並研究官方網站上最受歡迎的插件清單。
  5. 探索如何在專案中最好地使用 Maven。例如,並行建置可以顯​​著減少建置時間。
若要快速了解,請造訪俄語版本的Apache Maven網站,並在 Google 上搜尋一些教學。不過,關於 Maven 的一本主要書籍的第三版將不會發布。到目前為止,這是 Sonatype 的Maven:權威指南的第二版。 未來 Java 開發人員的指南。 企業 - 第 1 - 8 部分對於高級級別,創建您自己的插件是合適的。不用擔心您需要創建什麼樣的插件,因為很多已經存在!嘗試創建某種類比,研究兩個階段和兩個階段。

螞蟻

這個工具看起來簡單多了,所以這裡沒什麼好學的。仍然有一些專案 ANT 是唯一的建置工具。這絕對是正常的:在管理小型原子任務(ant 任務)的上下文中,ANT 已證明自己是一個簡單直接的建構工具。當然,這裡有很多插件,就像Maven一樣。若要開始使用 ANT,請執行下列操作:
  • 嘗試操作文件和資料夾
  • 執行不同的任務順序。在此基礎上,學習ANT中任務的依賴關係和優先權。
  • 解壓縮和/或壓縮存檔。在任務中,嘗試使用已存檔的內容等等。
沒有必要提供一堆學習 ANT 的資源。對於或多或少的深入研究,官方 Apache Ant 頁面就足夠了。( ant.apache.org ) 以及Steve Loughran 所寫的《Ant in Action》一書。 未來 Java 開發人員的指南。 企業 - 第 1 - 9 部分

搖籃

對我來說,Gradle 更接近 ANT,而不是 Maven,但它完全可以稱為這兩個傢伙的同父異母的兄弟。它具有類似於 Maven 的生命週期,以及與 ANT 相同的任務的靈活性。嗯,最重要的是 Gradle 不使用 XML,而且,如果您或多或少熟悉 Groovy,您可以用它做任何您想做的事情。總的來說,是相當美味的東西。不要害怕在 IDE 環境中使用 Ant/Maven/Gradle。這些工具緊密整合到 Eclipse/IDEA 中,在 IDE 環境中使用這些工具非常舒適。

持續集成

理論

這些是保護您免遭解僱的天使計畫。簡而言之,這是一種監視程式碼更改、建置和運行為您編寫的測試的軟體。如果每次提交/合併後一切都很好,那麼構建會發出宜人的綠色/藍光。一旦你破壞了某些東西,CI系統就會立即報告。不過,有一點理論──這很經典!持續整合:提高軟體品質並降低風險 作者:Paul Duvall。(俄語中又稱為「持續整合」) 未來 Java 開發人員的指南。 企業 - 第 1 - 10 部分這本書甚至討論了創建您自己的 CI 系統。讓我們看看該領域兩個最受歡迎的解決方案。

詹金斯

詹金斯,又名哈德森。開放、友善、易於使用的應用程式。要更熟悉 Jenkins,請嘗試以下操作:
  1. 將其下載到您的電腦上。安裝並配置 JDK、Maven、ANT 以及專案所需的一切。
  2. 建立第一個作業並指定專案的位置,例如主 pom.xml。運行它,確保您進行了某種測試,以便它清晰可見。
  3. 了解如何使用不同的設定和選項來運行您的專案。
  4. 附加不同的插件並查看它們如何與您的項目結合使用。
  5. 為不同的作業建立觸發器。創建一個小管道。
  6. 探索 DSL 並嘗試將其與 Jenkins 整合。
  7. 從另一台計算機設定從屬計算機和/或使其成為運行構建的常規計算機。
  8. 創建夜間構建。
從書籍中,只需閱讀約翰·弗格森·斯馬特 (John Ferguson Smart) 撰寫的《詹金斯:明確指南》(Jenkins: The Definite Guide)。帶有大量螢幕截圖的清晰指南。 未來 Java 開發人員的指南。 企業 - 第 1 - 11 部分

團隊城市

是的,TeamCity 不是免費的,但看看它與 JetBrains 產品生態系統的整合程度如何。Intellij Idea 和 TeamCity 是一個很棒的聯盟。總的來說,如果您已經熟悉 Jenkins,TeamCity 對您來說就不會是一片黑暗森林,反之亦然。而不是從屬-代理,相同的觸發器等等。但與 Jenkins 不同的是,TeamCity 擁有令人驚嘆的功能,例如遠端執行(也稱為預測試提交)、更多視覺化統計數據等等。我非常喜歡 YouTube 上的使用者指南,它是 JetBrains 自己製作的(TeamCity 使用者指南(第 1 部分,共 9 部分)- 簡介)。我發現 TeamCity 很直觀,文件也具有高標準。但如果你覺得有書值得一看,歡迎在留言裡留言。當然,我只列出了這些 CI 系統的一小部分,但我們的範圍有限。也許最好的學習指南就是實作。我將它安裝在我的計算機上,啟動它,崩潰/恢復構建,然後上床睡覺。然後你就可以放心地把記錄本帶給我了(如果你願意的話:)。

版本控制系統

過度談論 VCS 是沒有意義的。這是應該的,沒有它,專案管理就會像中生代時代。與 CI 系統類似,我們來看看兩種最受歡迎的解決方案:Git 和 SVN。

git

我們的 Git 已經證明自己是一個穩定的分散式版本控制系統。從這裡開始學習,並在已配置 Git 的情況下完成所有章節。然後還有一系列來自 Code School 的精彩的互動教程。他們還提供了一個簡短的指南,名為“嘗試 Git:代碼學校”。從書籍中我可以推薦Jon Loeliger 的 Version Control with Git 未來 Java 開發人員的指南。 企業 - 第 1 - 12 部分如果你已經習慣了烏龜(TortoiseSVN,作者註)並且害怕控制台,你當然可以下載它的模擬版本 TortoiseGit,但是,在我看來,更加令人愉快和美觀該解決方案是Atlassian 的產品- SourceTreeApp。您可以使用遠端儲存庫進行練習,因為網路上有足夠的主機服務。如果你願意,可以在當地訓練。不?然後在 GitHub 上建立帳戶並以完整模式工作:進行幾次提交、分叉一些開源專案、在分支之間進行幾次合併等等。

SVN

另一種同樣流行的 VCS 是 SVN。這個系統不能誇耀分散式。他們每個人都有自己的方法、自己的優點和缺點。請務必閱讀新手和 SVN 用戶之間的有趣對話read-bean.com有一本免費的書,有俄文翻譯。TutorialsPoint 的迷你課程也將非常有用。不要錯過 Apache 官方網站subversion.apache.org。對我來說最有趣的客戶端是前面提到的 TortoiseSVN。在這些書中,值得一提的是:Michael Pilato 的 Version Control with Subversion未來 Java 開發人員的指南。 企業 - 第 1 - 13 部分我喜歡它,因為它注重SVN伺服器本身的管理。我希望我沒有錯過要點。

測試工具

在小型沙箱專案中了解什麼是單元測試、整合和回歸測試是一個好主意。 JUnit 單元測試的理論在上一篇文章的書中有很好的描述。特別是,Clean Code 甚至將 junit 描述為該領域流行的庫之一。但具體到 JUnit 時,Tomek Kaszanowski 寫了一本很棒的小書,名為《使用 JUnit 和 Mockito 進行實用單元測試》 未來 Java 開發人員的指南。 企業 - 第 1 - 14 部分。當然,它的內容不僅僅是 JUnit 和 Mockito。在這裡,作者介紹了 Matchers,提供了參數化測試的範例,並簡要介紹了 TDD。還有一本書是最近出版的。這是Jeff Langr 寫的《Java 8 中的實用單元測試》。 未來 Java 開發人員的指南。 企業 - 第 1 - 15 部分作者介紹了 Hamcrest,描述了最佳實踐,當然還有 Java 8。您可以放心地閱讀 Tomek 的書。順便說一下,關於TDD。我不想爭論是否值得使用它們、好或壞、客戶是否需要它們。請記住:使用 TDD 並不新鮮,許多專案都使用這種方法,對於許多人來說這是唯一且無可爭議的規則。理論上可以讀經典。Kent Beck - 測試驅動開發:通過範例。我最喜歡的是關於 TDD 模式的部分。 未來 Java 開發人員的指南。 企業 - 第 1 - 16 部分令人驚訝的是,Youtube 上有一個很好的第一人稱課程 - Let's Play TDD(200 個影片!)。同樣有趣的是Fowler 自己關於是否值得使用 TDD、它是否會破壞設計等等的討論。請一勞永逸地記住這一點: TDD 不會創造出糟糕的設計,而是你創造了它。 如果您更多地使用 BDD(一個不干擾另一個),並且例如在專案上使用 Cucumber,那麼這是一個稍微不同的平面。關於這方面的一本好書是John Ferguson Smart 所著的《Manning BDD in Action:整個軟體生命週期的行為驅動開發》未來 Java 開發人員的指南。 企業 - 第 1 部分 - 17順便說一句,約翰·弗格森·斯瑪特正在積極向大眾宣傳這個話題。如果您是 Scrum Master 或 PM,最終不傷眼,而是喜歡查看 if-if-then 測試,那麼請務必在 Twitter 上關注 John關於Cucumber,看看官網的Java實現,看看Matt Wayne的The Cucumber Book: Behaviour-Driven Development這本書。 未來 Java 開發人員的指南。 企業 - 第 1 部分 - 18

第三方函式庫

能夠在必要時使用流行的程式庫非常重要 - 它們簡化了每個 Java 開發人員的日常生活。受歡迎的解決方案包括以下內容: Joda Time。提供更方便的 JodaTime 完全取代不方便的本機日期和時間。這是一個很好的參考。請注意,如果您已經在使用 Java 8,那麼 JodaTime 將不會有太大幫助。事實是,新的 DateTime API 已經完全取代了這個庫,在某些地方甚至巧妙地複製和貼上了。根據作者自己的文章,每個 Joda 類別都可以方便地用 java.time 中的類似物替換。 谷歌番石榴。在很多方面,Java 8 甚至取代了 Guava。相同的物件、Stream API、Java Predicate 和許多其他東西建議替換它並且根本不使用它。我再說一遍,如果您沒有 Java 8,沒有什麼比本指南和您的直接雙手更好的了。

阿帕契共享區

這個怪物不那麼容易對付:大約有 40 個適用於所有場合的函式庫,從眾所周知的 commons.lang 到 xml 驗證,從 DBUtils 到commons.io。當然,您不需要熟悉所有內容,但隨身攜帶烹飪書籍和教學會很有用。例如,要了解 Apache Commons 的全部內容,您可以查看Timothy O'Brein 編寫的 Jakarta Commons Cookbook 未來 Java 開發人員的指南。 企業 - 第 1 部分 - 19

結論

Enterprise 如此龐大,如果沒有圍繞著該 Enterprise 的所有內容就開始討論 JavaEE 和其他框架是愚蠢的。因此,在第二部分我們將重點放在多層架構的每一層,考慮服務等。非常感謝您的關注。第一部分結束。系列的前幾部分:
  1. 未來 Java 開發人員的指南。Java基礎知識
  2. 未來 Java 開發人員的指南。優雅的程式碼
原創與DOU
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION