“不要对你所取得的这些技术成就感到太自豪。与原力的力量相比,摧毁行星的能力根本算不了什么。”——死星上的达斯·维德。
介绍
也许,该系列文章的接下来的两部分是许多人最期待的,并且有充分的理由。在地平线之外、在纯粹的 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,效果会好得多。 Linux 命令行 作者:William Shots。阅读这本书不是作为一本“五十度灰”小说,而是作为一门成熟的互动课程——打开终端并跟着作者重复。您想了解基础知识以及 Linux 是如何工作的吗?我们不要选计算机科学和操作系统课程——那是下一部分。访问edx.org并尝试简单的Linux 简介课程。还有上述系列中的一本书How Linux Works: What Every Superuser Should Know by Brian Ward。一本插图精美的出版物,关注网络、设备和资源管理。 前进?有一本很棒的书,顺便说一下,我这里有一本……是的(抖落灰尘)……就在这里! Unix 和 Linux:系统管理员指南。埃维·内梅特. 相当大的一本手册,翻译得很好。说实话,我个人并没有掌握它,但我真的很喜欢管理基础知识(第一部分)。当然,你不能忽视 Shell 脚本。最好在实践中尝试所有这些,但是您可以从书籍中查看Cameron Newham 的《学习 bash Shell:Unix Shell 编程》。 如此大量的关于 Linux/Unix 的文献不可能全部涵盖,特别是在这篇文章中,Linux 是背景。我的同事在这件事上吃了狗,他建议了一个相当实际的事情: 下载 ArchLinux 并尝试启动并运行它。在这个过程中你会学到我最不想要的东西!视窗
程序员的简历里有一栏:“Windows经验10年以上”。当然,我祝贺你,你从 10 岁开始就在 Windows 上玩反了,但我请你不要在面试时提前给自己挖坑,因为在一个你正在密切合作的项目上IIS,batch/powershell,上帝保佑,注册表,面试不会真的很困难,除了坐在对面的人咧着嘴笑。利达,你也会受到一定程度的羞辱。你需要这个吗?答案不言而喻。将盗版 Windows 从 torrent 中搁置起来,尝试将其安装在某种 Windows Server 虚拟机上。不能只从用户端和JAVA_HOME安装方面来研究。在这方面, Mark Minasi 所著的 Mastering Windows Server 2012 R2一书提供了几乎完整的指南。 例如,如果您使用 PowerShell,请查看Bruce Payette 所著的 Manning撰写的优秀书籍《Windows PowerShell in Action》。我知道不可能读完1000页,但至少你可以随身携带它作为参考。我想,其他的都不需要了。 因此,请注意您在使用 Windows 方面的知识差距,并在 Internet 上查找您感兴趣的信息。构建工具
梅文
在 Maven 中最需要理解的是什么?以下是首要步骤和任务:- 了解Maven在每个阶段做了什么,你甚至可以记住它。这几乎是 80% 的成功,并且会给您一个清晰的画面。
- 使用多模块系统在本地创建您自己的沙箱项目,并具有显式的依赖关系管理。尝试附加第三方库,尝试使用它们创建一些东西。
- 玩转个人资料
- 了解插件管理并研究官方网站上最受欢迎的插件列表。
- 探索如何在项目中最好地使用 Maven。例如,并行构建可以显着减少构建时间。
蚂蚁
这个工具看起来简单多了,所以这里没什么可学的。仍然有一些项目 ANT 是唯一的构建工具。这绝对是正常的:在管理小型原子任务(ant 任务)的上下文中,ANT 已证明自己是一个简单直接的构建工具。当然,这里有很多插件,就像Maven一样。要开始使用 ANT,请执行以下操作:- 尝试操作文件和文件夹
- 执行不同的任务顺序。在此基础上,学习ANT中任务的依赖关系和优先级。
- 解压和/或压缩存档。在任务中,尝试使用存档的内容等等。
摇篮
对我来说,Gradle 更接近 ANT,而不是 Maven,但它完全可以称为这两个家伙的同父异母的兄弟。它具有类似于 Maven 的生命周期,以及与 ANT 相同的任务的灵活性。嗯,最重要的是 Gradle 不使用 XML,而且,如果您或多或少熟悉 Groovy,您可以用它做任何您想做的事情。总的来说,是相当美味的东西。不要害怕在 IDE 环境中使用 Ant/Maven/Gradle。这些工具紧密集成到 Eclipse/IDEA 中,在 IDE 环境中使用这些工具非常舒服。持续集成
理论
这些是保护您免遭解雇的天使计划。简而言之,这是一种监视代码更改、构建和运行为您编写的测试的软件。如果每次提交/合并后一切都很好,那么构建会发出宜人的绿/蓝光。一旦你破坏了某些东西,CI系统就会立即报告。不过,有一点理论——这很经典!持续集成:提高软件质量并降低风险 作者:Paul Duvall。(俄语中又称为“持续集成”) 这本书甚至讨论了创建您自己的 CI 系统。让我们看看该领域两个最流行的解决方案。詹金斯
詹金斯,又名哈德森。开放、友好、易于使用的应用程序。要更熟悉 Jenkins,请尝试以下操作:- 将其下载到您的计算机上。安装并配置 JDK、Maven、ANT 以及项目所需的一切。
- 创建第一个作业并指定项目的位置,例如主 pom.xml。运行它,确保您进行了某种测试,以便它清晰可见。
- 了解如何使用不同的设置和选项运行您的项目。
- 附加不同的插件并查看它们如何与您的项目结合使用。
- 为不同的作业构建触发器。创建一个小管道。
- 探索 DSL 并尝试将其与 Jenkins 集成。
- 从另一台计算机设置从属计算机和/或使其成为运行构建的常规计算机。
- 创建夜间构建。
GO TO FULL VERSION