• 8软件工程环境


    软件工程环境

    第三方库

    概念

    ⚡️ 某个编程语言在安装好开发环境之后,默认会提供API。除此之外,还可以有第三方提供代码库(我们称之为第三方库,一般为jar格式),我们可以通过第三方库提供的API来使用某些已有的功能,而不需要自己来实现;

    jar文件什么?

    ⚡️ jar文件就是第三方库,是一个压缩文件,可以使用解压软件打开,里面包含的都是class文件,即编译好的,可在JVM上运行的字节码;

    ⚡️ 一个Java程序基于某个第三方库来实现某些功能时,改第三方库也成为该Java程序的依赖包;

    第三方库就是API吗?

    ⚡️ API:即application programming interface,应用程序接口;

    ⚡️ 第三方库就是一个提供API的仓库;

    如何使用第三方库?

    ⚡️ 在Java中,使用第三方库,主要体现在开发Java代码时引入依赖(依赖就是开发时所要用到的资源或工具支持);

    1、在cmd中使用第三方库

    ⚡️ 我们尝试使用依赖将代码输出打印的字体变为彩色;

    ⚡️ 首先使用普通文本编辑器编写下面的Java代码后保存在本地:

    //import引入依赖
    import org.fusesource.jansi.AnsiConsole;
    import static org.fusesource.jansi.Ansi.Color.*;
    import static org.fusesource.jansi.Ansi.ansi;
    
    public class Main {
        public static void main(String[] args) {
            AnsiConsole.systemInstall();
            int lineNumber = 0;
            System.out.print( ansi().fg(MAGENTA).a(++lineNumber));
            System.out.println( ansi().fg(CYAN).a("面试官:").fg(RED).a("你都会什么编程语言?") );
            System.out.print( ansi().fg(MAGENTA).a(++lineNumber));
            System.out.println( ansi().fg(BLUE).a("我:   ").fg(GREEN).a("精通C、C++、Java、HTML、JavaScript等语言,的单词拼写") );
            System.out.print( ansi().fg(MAGENTA).a(++lineNumber));
            System.out.println( ansi().fg(CYAN).a("面试官:").fg(RED).a("就这?会什么系统嘛?") );
            System.out.print( ansi().fg(MAGENTA).a(++lineNumber));
            System.out.println( ansi().fg(BLUE).a("我:   ").fg(GREEN).a("精通Windows、Mac、Linux系统,的关机") );
            AnsiConsole.systemUninstall();
       }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    ⚡️ 将上述代码保存后,进入cmd进行编译;

    在这里插入图片描述

    ⚡️ 编译发生错误;

    ⚡️ 根据提示信息,因为找不到依赖包,所以发生错误,这个时候我们就要引入依赖包:

    javac -cp "D:\CodeResource\Maven_repository\Repository\Maven\org\fusesource\jansi\jansi\2.3.3" Main.java
    
    • 1

    ⚡️ 运行结果如下

    在这里插入图片描述

    ⚡️ 看提示信息好像是编码格式出现错误,再输入以下代码:

    java -cp "D:\CodeResource\Maven_repository\Repository\Maven\org\fusesource\jansi\jansi\2.3.3" -encoding utf-8 Main.java
    
    • 1

    ⚡️ 运行后会在Main.java所在目录里生成一个Main.class文件;

    在这里插入图片描述

    ⚡️ 再输入下面的命令:

    java -cp ".;D:\CodeResource\Maven_repository\Repository\Maven\org\fusesource\jansi\jansi\2.3.3" Main
    #.;表示当前路径
    
    • 1
    • 2

    ⚡️ 输出结果为:

    在这里插入图片描述

    构建工具

    背景

    ⚡️ 从上述操作可以看出,我们仅仅是想输出彩色字体,操作就这么复杂,如果想做一些更花里胡哨的内容,那工作量还不直接把人给整emo了啊;所以为了让编程变得更加方便,便有了项目构建工具;

    常见的项目构建工具

    ⚡️ 对于Java项目来说,使用比较多的构建工具主要有三种:

    ☁️ Ant:比较老的一款构建工具,构建时需要自行制定编译路径、资源路径等,依赖包还是需要自行下载,目前主流的项目都不再使用;

    ☁️ Maven:采取“约定由于配置”的思想,约定好编译路径、资源路径等,依赖包可以从网络自行下载,Maven主要基于XML文件进行配置;目前Java服务端项目大多使用Maven来构建;

    ☁️ Gradle:和Maven功能非常类似,只是采取基于Groovy脚本语言的DSL语法进行配置,安卓开发几乎用的都是Gradle;

    关于maven

    ⚡️ Maven是一个项目构建工具,创建的项目只要遵循Maven规范(称为Maven项目),即可使用Maven来 进行管理:编译,打包等。

    maven安装

    ⚡️ 下载解压,下载地址为:版本3.6.3;

    ⚡️ 下载后解压到任意文件夹,解压后打开结构如下:

    在这里插入图片描述

    配置环境变量

    ⚡️ 右键”此电脑“,点击”属性“,并打开”高级系统设置“中的”环境变量“,添加Maven环境变量;

    ⚡️ 先定义Maven根路径变量 M2_HOME;

    ⚡️ 再在 Path 环境变量中,添加Maven工具bin目录为全局命令路径;

    ⚡️ 检测安装配置是否成功;

    maven介绍

    全局依赖管理

    ⚡️ maven项目中可以引入依赖包;

    ⚡️ 引入依赖包时,优先在本地maven仓库中搜索,搜索不到时,再去远程仓库中搜索;

    本地仓库配置

    ⚡️ 找到maven根目录下的conf目录,找到setting.xml文件;

    ⚡️ 使用记事本工具打开;

    ⚡️ 找到下面代码:

    在这里插入图片描述

    ⚡️ 将红色框里的代码添加到图中位置(路径要改);

    ⚡️ 这样的话我们本地仓库就配置好了,以后把下载的依赖包放入这个路径就可以了;

    在IDEA中配置maven本地仓库

    ⚡️ 打开IDEA,随便打开一个项目;

    ⚡️ 点击文件-设置–新项目设置-新项目的设置

    ⚡️ 点击构建、执行、部署-构建工具-maven

    ⚡️ 在右侧界面找到maven主路径,改为你下载的maven工具的存放路径;

    ⚡️ 用户设置文件和本地仓库当然也要重写,用户设置文件路径改为上面修改后的setting.xml文件的路径,本地仓库路径就是上面本地仓库的路径;

    在这里插入图片描述

    创建maven项目

    ⚡️ 打开IDEA,点击新建项目,选择maven(IDEA不同版本布局不同);

    在这里插入图片描述

    ⚡️ 点击下一步

    在这里插入图片描述

    ☁️ 名称和位置可以任意设置;

    ☁️ 组ID:组织id、组织名,一般使用公司的域名,如com.alibaba;同时按规范,自己写的java都在这样的包下;

    ☁️ 工件ID:产品id、产品名,项目即产品,所以一般使用本项目名,多个英文之间用-间隔;

    ☁️ 版本:产品的版本号,本项目可能有多个版本提供给别人使用;

    ⚡️ 完后创建后,看左侧目录结构;

    在这里插入图片描述

    ☁️ main目录下的Java目录用来存放开发用的Java代码;

    ☁️ main目录下的resources目录用来存放开发用的配置文件;

    ☁️ ​test目录下的java目录用来存放单元测试Java代码;

    ☁️ 手动在test目录下创建一个resources目录,用来存放测试资源;

    ⚡️ 尝试创建一个Java类并进行编译,观察左侧目录结构变化;

    ☁️ 在src/main/resources目录下,创建一个配置文件(任意文件都行,以下为创建的 test.xml 文件);

    ☁️ 在 src/main/java 目录下,随便创建一个类,编写 main 方法运行后,会生成编译结构,如下图;

    在这里插入图片描述

    ☁️ 目录target下的classes目录,为将我们写的Java类编译为class文件后存放的路径;

    ☁️ 同时该路径下又存放了我们刚才添加的xml文件;

    maven项目配置

    ⚡️ 在我们上面构建maven项目中,有一个pom.xml文件,这个就是maven项目的配置文件,maven项目构建工具就是基于该配置文件来对maven项目进行管理的;

    ☁️ 该xml文件 的格式采取一种叫”项目对象模型“的概念(Project Object Model,简称POM),因此 Maven给这个文件取名为 pom.xml;

    ⚡️ 在IDEA中点击打开该xml文件;

    ⚡️ 在代码里找到<maven.compiler.source><maven.compiler.target>,将两个标签中的数字都改为1.8,1.8是我们使用的jdk的版本;

    ⚡️ 找到<dependencies>标签,把其中的内容改为下列代码(若没有该标签,直接将改代码复制粘贴到</project>上面);

    <dependencies>
        <dependency>
            <groupId>org.fusesource.jansi</groupId>
            <artifactId>jansi</artifactId>
            <version>2.3.3</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.49</version>
        </dependency>
    </dependencies>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    maven的生命周期

    ⚡️ 在IDEA最右边的侧边栏中,点击maven,找到生命周期目录;

    ☁️ clean:用于删除target目录;

    ☁️ compile:编译开发代码和资源文件;

    ☁️ package:将整个项目打包;

    ☁️ deploy:将项目上传到私服仓库;

    软件运行时的依赖资源

    运行时的环境

    ⚡️ 对于Java程序来说,JRE就是必须的运行时环境;

    ☁️ JDK是Java程序开发需要的环境,JDK包含了JRE;

    程序代码

    ⚡️ 对于Java程序来说,class文件就是运行时需要的程序代码;

    外部资源

    ⚡️ 外部资源包括:数据库、文件资源等;

    内部资源

    ⚡️ 对于Java程序来说,运行时所要用到的文件,除了class文件外,都属于内部资源;

    日志

    ⚡️ 在生产环境中,如果没有日志文件,那几乎很难定位到程序出现的问题;

    ☁️ JDK是Java程序开发需要的环境,JDK包含了JRE;

    程序代码

    ⚡️ 对于Java程序来说,class文件就是运行时需要的程序代码;

    外部资源

    ⚡️ 外部资源包括:数据库、文件资源等;

    内部资源

    ⚡️ 对于Java程序来说,运行时所要用到的文件,除了class文件外,都属于内部资源;

    日志

    ⚡️ 在生产环境中,如果没有日志文件,那几乎很难定位到程序出现的问题;

  • 相关阅读:
    【UCIe】UCIe Clock Gating
    InnoDB 数据页结构
    c# 多线程处理
    前端例程20220818:边框跑马霓虹灯效按钮
    459-Linux基础(echo)
    DJ9-1 总线及接口
    【2023年数学建模国赛】D题解题思路
    sql中怎么查books表下面的内容
    数字孪生和多维系统集成赋能智慧矿山三维可视化决策系统
    【PythonIQ测试系统】学了一招测试一下女友的智商,这离谱的反射弧~麻了麻了(终极智商测试)
  • 原文地址:https://blog.csdn.net/m0_60266328/article/details/125505009