JavaRush /Java 博客 /Random-ZH /未来 Java 开发人员的指南。企业 - 第 1 部分
Diana
第 41 级

未来 Java 开发人员的指南。企业 - 第 1 部分

已在 Random-ZH 群组中发布
“不要对你所取得的这些技术成就感到太自豪。与原力的力量相比,摧毁行星的能力根本算不了什么。”——死星上的达斯·维德。 未来 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