您的位置  > 互联网

Java程序员必须掌握的8个大工具,业余时间快速学习

IT行业新旧技术迭代速度很快,是一个需要不断学习的行业。 想要快速成长,快速获得加薪,就必须有与之相匹配的能力,尤其是Java工程师。

如果想在技术领域走得更远,以下8个工具是每个Java程序员必须掌握的。 如果你对其中的一些不太了解或者不熟练使用,不妨先收藏起来,在业余时间快速学习。 这绝对会促进你的职业生涯!

1.

提供以下功能:

宽松的 Java 语法:这是 Java 语法,但其他一些规则(如分号、变量类型、访问修饰符)是可选的。 后者对于测试来说很有意义,因为访问修饰符并不严格,并且您的测试可以读取并断言类内部的状态。 例如,我们假设有以下类:

public class Foo {    private String bar = null;    public void setBar(String bar) {        this.bar = bar;
    }
}

如果你想测试()方法是否正常(即能正确修改bar的值),可以使用便捷的方法读取变量值。 Java中不允许这样的操作(前提是不涉及Java反射机制)。

@Test public void test() {
    def foo = new Foo()
    foo.setBar("hello")
    Assert.isTrue(foo.bar.equals("hello"))    //groovy 允许我们访问私有变量 bar}

强有力的断言:提供强有力且多样化的断言,这称为权力。 强大的断言可以在验证失败时清楚地显示结果。 另外,它比 Java 更具可读性。

Assert.isTrue(foo.bar.equals("hello"));

可以这样写:

assert foo.bar == "hello"

当断言失败时,它会显示非常清晰的描述:

assert foo.bar == "goodbye"
       |   |   |
       |   |   false
       |   hello
       Foo@12f41634

:在使用Java时,动态模拟框架(如:、)非常流行,这些框架可以很方便地使用。

2.支持REST风格

我们的后端提供 REST API 服务来创建和管理帐户。 在众多 SDK 中,我们的 Java SDK 提供了特定于语言的客户端模型以实现简单的交互。 其中一些 SDK 还提供网页与后端交互,无需编写代码。

为了使网络框架能够互操作,它们的行为必须相同。 因此我们需要创建一系列基于 HTTP 的测试。 这是我们的兼容性测试工具。 该项目由我们的 SDK 工程师维护,他们精通多种语言。 所以我们需要一个跨语言的测试工具,幸好Rest-就在这里。

Rest- 是一种用于测试 REST 服务的 Java 领域特定语言 (DSL-)。 它简单易用,即使对于没有使用过 Java 的开发人员来说也非常强大。 它提供高级功能,例如详细配置、过滤器、自定义分析、跨站点请求伪造 (CSRF) 和 OAuth 2.0。 它提供了一个非常简单的语法:given-when-then。

例如:让我们看看它如何验证“向 /login 路径发送身份验证信息请求返回 302 状态码”:

given() .accept(ContentType.HTML) .formParam("login", account.username) 
.formParam("password", account.password) .when() .post(LoginRoute) .then() .statusCode(302)

您可以在我们的 TCK 存储库中查看更多休息测试

3.

为了根据 TCK 验证我们的 Java SDK,我们需要启动一项 Web 服务,以便可以在其上执行测试。 公平地说,我们每次构建时都需要自动化测试,而 Gargo 就是为此而构建的。

Cargo只是以标准的方式封装了各种应用容器。 我们使用 Cargo 轻松地在不同的容器(例如 Jetty 和 )中运行我们的代码。 我们只需要在pom文件中配置Cargo来启动一个容器()并在测试阶段编译最新的War包。 您可以在我们的插件示例中查看配置。

4.Git

我们可以讨论哪些你不了解的 Git? 如果您想了解有关 Git 的更多信息,可以查看他们的“关于”页面。

我们的 Java SDK 团队遍布世界各地,几乎从不坐在一起。 Git 保护我们编写的每一行代码。 以下是一些很棒的命令,可以节省我们大量时间:

●git mv –force foo.java Foo.java:在区分大小写的文件系统中更改文件名非常麻烦。 这个命令可以让git意识到foo.java被重命名为Foo.java。

●git diff-tree –no--id –name-only -r:查看本次提交中更改的所有文件。

●git diff –name-only SHA1 SHA2:列出 SHA1 和 SHA2 提交之间更改的所有文件。

查询文件历史提交记录中的某个字符串:创建一个.sh文件,粘贴以下代码:

git rev-list --all $2 | (    while read revision; do
        git grep -F $1 $revision $2
    done
)

命令可以这样执行:sh ./.sh

5.

它不仅为我们的Git项目提供托管服务,还为使代码开源并向全世界可见做出了巨大贡献。 这就鼓励了人们尝试、交流、实践,极大地提高了大家的项目质量和技术水平。

允许我们跟进我们的问题,访问者可以提交新的要求并报告错误。 他们还可以收到有关我们项目进展的通知。

6.Maven

Maven已经足够有名了。 所以我不会详细解释为什么我们使用 Maven 进行构建管理。 不过,我可以分享一些技巧,让您的 Maven 更加舒适:

管理依赖项:在多模块项目中,您需要在根 pom.xml 的标记中定义每个依赖项。 完成此操作后,无需指定版本即可使用所有底层模块。 这种管理依赖关系(例如版本升级)的方式可以集中处理,并且所有较低级别的模块都会被自动识别。 例如,在根 pom.xml 中:

<dependencyManagement>
  <dependencies>
    <dependency>
        <groupId>io.jsonwebtokengroupId>
        <artifactId>jjwtartifactId>
        <version>${jjwt.version}version>
     dependency>
     ...  <dependencies><dependencyManagement>

下层模块的pom.xml:

<dependencies>
  <dependency>
      <groupId>io.jsonwebtokengroupId>
      <artifactId>jjwtartifactId>  
  dependency>
  ...<dependencies>

防止低层模块被编译:我们在发布时需要将所有低层模块一起释放,但是我们如何防止某个模块(例如)被释放呢? 很简单,只需将以下pom文件添加到你不想发布的模块中即可:

<plugin>
    <groupId>org.apache.maven.pluginsgroupId>
    <artifactId>maven-deploy-pluginartifactId>
    <version>2.7version>
    <configuration>
        <skip>trueskip>  
    configuration>plugin>

跳过集成测试:我们有很多集成测试需要很长时间才能编译。 这些测试确保整个后端正常运行。 在频繁的本地部署过程中,我们会多次更改代码以获取新功能或修复错误。 无需每次在本地构建时都执行这些测试,这会减慢开发速度。 因此,我们希望确保 Java SDK 仅在 CI 服务器上运行时执行集成测试。 您可以通过以下方式执行此操作:

根 pom.xml 文件:

<properties>
    <skipITs>trueskipITs>properties>...<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.pluginsgroupId>
            <artifactId>maven-failsafe-pluginartifactId>
            <version>2.19.1version>
            <configuration>
                <skipITs>${skipITs}skipITs>
                <includes>
                    <include>**/*IT.*include>
                includes>
            configuration>
            <executions>
               <execution>
                   <goals>
                       <goal>integration-testgoal>
                       <goal>verifygoal>
                   goals>
               execution>
            executions>
        plugin>
  plugins><build>

所以你可以想象,所有集成测试文件都以 IT 结尾,以确保配置正常工作,例如: . 或者 。

然后,如果我们希望运行集成测试,我们执行以下构建: mvn clean -=false

7.智威汤逊

我们的Java SDK使用JWT(JSON Web Token)以安全可靠的方式传输数据。 当我们测试故障排除时,我们需要分析从浏览器接收到的 JWT 内容。 令牌信息可能位于 URL 中,也可能位于本地存储中。

JWT 是一个浏览器插件,允许我们从控制台或内置界面解码 JSON Web 令牌。 您不需要在应用程序中跟踪令牌信息。 你只需要点击插件的按钮,JWT就会自动显示你需要的所有信息,然后你可以复制任何token信息。

8.

我们严重依赖 REST API 请求。 写REST请求不太方便。 具体语法取决于我们使用的工具,例如curl或. 两者都很容易阅读,但语法很难记住。 通常当我们需要解决问题时,我们需要测试一些请求。 当出现问题时,我们无法判断原因是请求还是后端。 我们浪费了很多时间想知道我们写的请求是否正确。

让编写 REST API 请求变得简单。 它还提供了很多功能,比如保存和复用请求、生成代码(java、curl等),还可以批量、顺序执行请求。 通过友好的界面帮助您构建复杂的命令,您所要做的就是填写表格,这再好不过了。

使用正确的工具不仅可以帮助您节省时间、提高效率,还可以提高您的工作质量并享受日常工作。 我们必须始终留意发现和学习新工具。 一开始可能需要一些努力,但你总会意识到花费的时间是值得的。

回顾过去的问题

新课程首发

甜蜜中秋

采访总结

唯一专注Java培训机构