兄弟们,以后写代码,很多代码都是很复杂的,这个时候就会谈到一个概念叫做软件工程.
软件工程,核心思路:写代码也是一件工程,也是一件复杂的事情!!
正因为复杂 => 容易出现问题 => 想一些办法爱解决/预防问题.
我们这里主要讨论如何使用库/框架来简化程序
不要重复造轮子~
软件开发中也有很多创建的问题,常见的场景.
也就会产生出这些问题场景的对应办法.这些"对应办法"很可能已经被别人实现出来了.并且封装成了库,供程序猿来使用~
好比Java标准库,除了标准库之外,还有大量的第三方库,这些库共同的构造出了整个Java"生态" .
Java这个语言被广泛使用,不是因为这个语言本身语法有多好,而是主要是因为Java这个生态太好了)
当我们想解决一个实际问题的时候,很多时候都能找到一个相应的库,让我们来简化开发(提高了开发效率,节省了程序猿的时间,也比较少出现bug的概率).
生态不仅仅是包含库(library),也是包含框架(frame).
库和框架本质上没有明确的区分.
存在的意义都是为了方便程序猿开发代码的.
如果非要区分,简单粗暴的认为,框架就是更复杂的库.
更详细的说库是"被动",库被提供出来之后,程序猿需要自己写出一些逻辑,来调用库.
框架是"主动",使用框架的时候,核心流程框架已经提供好了,程序猿需要写的是自定义的简单逻辑,供框架来调用.达到一些自定制效果.
库,框架,到哪里找?
如果是标准库,这个的话都是JDK自带的.....直接就额能用.
如果是第三方库,主要有这几个途径:
1.官方网站.(比较知名的第三方库/框架) 例如: MySQL connector.就可以取MySQL官网上找.
2.github.(比较知名的第三方库,通常都会在github上开源)
不是所有的第三方库都会开源的.
也不是所有的开源三方库都在github上.
但一般来说一些知名的都会在github上有对应的库
无论是官方网站,还是github都意味着每个第三方库都有自己的主页.
但是官网主页啥的,就特别不好找
3.中央仓库
一些大佬们都把这些第三方库都归档到一起了!!!
只要在这个中央仓库里,集中搜索,想要啥就有啥.
同时就可以统一下载/安装手段了.
关于 maven. (也把maven 称为"构建工具")
maven 是一个功能比较强大的东西.
1.组织好项目的目录结构.
目录结构特别重要!!!
但是又容易被忽略的问题.
这个事咱们体会不深,因为Java已经帮我们把大部分的目录结构都规定好了.
如果大家写其他的语言(C++,Python之类的,就需要自己规划目录).
2.构建打包程序.(核心就是编译,打jar包)
这个不就是拿idea一点,不就编译了嘛.
现在写的这些程序,都比较简单,不涉及到模块划分,不涉及各种依赖关系.
如果是更复杂的程序.包含很多个模块,先变异哪个,后编译哪个.....(存在依赖关系)
打包也是如此.
公司中还经常会进行"持续集成"
程序猿每次改一行代码,一旦提交,就会有专门的主机自动的更新代码,编译,打包,自动化验证,自动化部署....(也不是光靠idea就能搞定)
3.能够管理依赖(自动的下载第三方库,自动安装,自动引入到项目中)
在Java世界中,除了maven还有很多其他的构建工具.
ant,gradle......
这些构建工具,大同小异.
maven 下载安装.
maven是一个单独的应用程序,也是Java写的.
要想安装 maven 就需要先装好 JDK 啥的......
![]()
可以通过官网,下载安装maven,但是没必要!!!
其实idea内置了maven.
当前阶段使用idea内置的maven就可以了.
如何使用maven.
需要使用idea创建一个maven项目.
1.新建一个 maven 项目
选择maven这个选项
选择之后
![]()
![]()
关于pom.xml
啥是xml?
前面的篇章有提到过
在自定义协议的时候.
应用层协议.
程序猿自己定义一个协议.
约定好内容,格式.
xml就是一种广泛使用的数据格式.
一个xml文件是有很多的标签构成的.
由一对<>就组成一个标签.
在pom.xml文件中,这里的标签也是有明确语义的,这个是maven自身约定的,咱们只能遵守
![]()
使用maven
当前使用maven主要可以做两件事:
1.用来管理依赖(自动下载安装引入第三方库)
需要修改pom.xml~
怎么修改,首先要有一个dependencies 标签
当在dependencies把依赖写好之后,此时当jar下载完成,也就同时自动的引入项目中,不需要额外的配置.
接下来就可以在代码中使用对应的库了~
创建一个文件
2.用来打包构建~
打包操作,通过maven这个面板,就可以直接打包~
在pom.xml中,还有一些其他的标签选项,来控制 打包的一些具体行为~
先不介绍,后面篇章再写.