Java常用工具介绍
JDKJDK (Java Development Kit)是Java开发的必备基础工具集。它包含了JAVA的运行环境(JVM+Java系统类库)和许多JAVA工具实用命令。
最初JDK是由发明java语言的公司SUN提供的,后来Oracle公司购买了java语言的版权,从此官方的JDK由Oracle提供。开发人员可以免费下载JDK并利用它来开发java程序。
若仅仅使用JDK,在任何文本编辑器(如:Windows 记事本、Notepad++等)编写Java源文件,然后在DOS下用javac.exe命令将Java源程序编译成class字节码,然后通过Java.exe命令来执行class文件,这是DOS时代程序员的美好回忆,也是Java 初学者一般采用的方式,能够很快理解程序中各部分代码之间的关系,有利于理解Java面向对象的设计思想。但是,要想从事大规模企业级Java应用开发复杂的应用软件,仅仅靠这种办法是不够的,我们还要采取更多先进的工具,以利于团体协同开发。
Eclipse
Eclipse是著名的跨平台的自由集成开发环境,最初是由IBM公司用java语言开发而成,是IBM的商业软件Visual Age for Java的替代品。Eclipse被贡献给开源社区,由非营利软件供应商联盟Eclipse基金会(Eclipse Foundation)管理。
由于Eclipse 是一个开放源代码的开放型、可扩展开发平台,就其本身而言,它只是一个框架和一组服务,可通过插件来组合出不同功能开发环境。
Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。许多软件开发商以Eclipse为基础来开发自己的IDE,通过插件使其作为其他计算机语言比如C++、PHP、Python等语言的开发工具。众多插件的支持使得Eclipse拥有很高的灵活性。
(1)MyEclipse
MyEclipse是Genuitec公司在标准的Eclipse基础上,通入加入很多实用插件而开发出来的一款商用收费的IDE。它可以方便进行数据库应用开发,整合了完备的编码、调试、测试和发布的功能,完美支持HTML、Struts、JSP、CSS、Javascript、SQL、Hibernate,Spring等框架的整合,极大的提高了工作效率。
(2)STS
通过改造Eclipse,Spring官方提供了针对利用Spring框架来开发应用的强大工具SpringToolSuite,使用该工具可以很轻易地生成一个spring工程,许多配置文件都会自动为你生成而无需你过多的操心它们,特别是在使用springboot开发方式时更加方便。STS的界面风格和eclipse相同。
IntelliJ IDEA
IDEA 全称 IntelliJ IDEA,是java编程语言集成开发环境,被公认为是最好的java开发工具之一,它在智能代码辅助、重构、JavaEE支持、GUI设计等方面的功能是超常的,与各类版本工具(git、svn等)、Ant、JUnit、CVS能方便的整合 。
IDEA把Java开发人员从一些耗时的常规工作中解放出来,显著地提高了开发效率,能生成更好的代码,使持续的重新设计和日常编码变得简易。
IntelliJ IDEA是收费软件,也推出了免费的社区开源版本,它是JetBrains公司的产品,这家公司还开发了各种IDE工具用于支持不同的编程语言,除了IntelliJ IDEA之外,还有PhpStorm用于php开发,PyCharm用于Python,WebStorm用于HTML/CSS/JS,AppCode用于Object-C是XCode的替代物。
测试工具JUnit
JUnit是一个Java语言的单元测试框架,被多数Java开发环境集成。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit在接口测试、回归测试、极限编程方面都能够发力。
(1)接口测试
junit不仅能做单元测试,且方便进行接口测试。所谓的接口测试是用来检查各个组件之间的接口调用的正确性的测试,即外部系统与系统之间以及各个子系统之间的交互点,测试的重点在数据的传递上。之所以推行接口测试是由于如果项目全部用单元测试的话可能时间上不允许,而接口测试是一种特殊的单元测试,覆盖率没有做到所谓的单元测试的百分之百,但是覆盖了面向用户的所有功能点,也可采用自动化+持续集成的方式,节约时间了成本,同时提高了效率。
(2)回归测试框架
JUnit是一个回归测试框架(regression testing framework),在代码重构时,要求改一点测一点,减少回归错误造成的时间消耗。
(3)极限编程
极限编程要求在编写代码之前先写测试,这样可以强制你在写代码之前好好的思考代码(方法)的功能和逻辑,否则编写的代码很不稳定,那么你需要同时维护测试代码和实际代码,工作量大大增加。在极限编程中,基本过程是这样的:构思-> 编写测试代码-> 编写代码-> 测试,而且编写测试和编写代码都是增量式的,写一点测一点,在编写以后的代码中如果发现问题可以较快的追踪到问题的原因,减小回归错误的纠错难度。
Maven
Maven是基于项目对象模型并可以通过一小段描述信息来管理项目构建、报告和文档生成的软件项目管理工具。它简化了构建过程,无缝衔接了编译、发布、文档生成、团队合作和其他任务。它能够同时构建多个工程、发布工程信息、部署工程、在几个工程中共享 JAR 文件,并且协助团队合作。
Maven为我们统一管理jar包,它把这些jar包存放在本地仓库中。
maven把项目的构建划分为不同的生命周期(lifecycle)。粗略包括:编译、测试、打包、集成测试、验证、安装、部署。maven中所有的执行动作(goal)都需要指明自己在这个过程中的执行位置,然后maven执行的时候,就依照过程的发展依次调用这些goal进行各种处理。
gradle
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用Groovy语言来声明项目设置,抛弃了基于XML的各种繁琐配置。它面向Java应用为主,计划未来将支持更多的语言。
Gradle是maven的替代品,目前功能超越了maven,是一款通用灵活的构建工具,也能与maven共存使用。它免费开源,gradle的整体设计是以作为一种语言为导向的,而非成为一个严格死板的框架。
它支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件。
gradle对多工程的构建支持很出色,工程依赖是gradle的第一公民。
gradle支持局部构建。支持多方式依赖管理:包括从maven远程仓库、nexus私服、ivy仓库以及本地文件系统的jars或者dirs。
gradle项目可以轻松迁移,适用于任何结构的工程,你可以在同一个开发平台平行构建原工程和gradle工程。
Apache Commons类库
Apache Commons是一个Apache项目,提供了功能齐全的通用Java组件。它是一套开发源码、免费使用、商业友好的优秀API,是Java官方API的补充。它在一定程度上反映了一线Java开发人员的实际需求,java官方类库的编写也常常参照Apache Commons的内容。当你看到它时,一定会被它的简单而强大所吸引。
如果你至少参与了一个中型规模的Java项目,那么很有可能你已经使用到了Apache Commons,不管你自己有没有察觉。其实有很多所谓的商业框架其实内部有些模块是借用Commons的,甚至有一些完全就是对Commons的类进行了简单的封装。
学习和使用Apache Commons相当有意义,一方面,它可以给你带来生产力的大幅提升;二是你可以从中学到许多课本上学不到的东西:编码习惯、代码组织、注释、文档、如何用Java解决实际问题、特定问题的算法等等。
Apache Commons的官方主页是http://commons.。
Apache Commons中的套件很多,这里只简单例举几个常用的
组件名
——
用途
Collections
Java Collection框架扩展和增强
DBCP
数据库连接池服务
DbUtils
JDBC帮助函数库
FileUpload
为Servlet和Web应用程序提供文件上传功能
IO
I/O工具集合
Lang
为java.lang中的类提供附加功能。
Logging
对各种日志API实现的封装
Math
轻量级、字包含数学和统计组件
Validator
通过xml文件定义验证器和验证规则的框架
数据框架Mybatis
MyBatis 是一款优秀的持久层框架。它简单易学,且体积很小,没有任何第三方依赖,安装简单只需要两三个jar文件加几个sql映射文件就行。通过文档和经典项目代码,可以比较完全的掌握它的设计思路和实现。
MyBatis解除了sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。
MyBatis 把sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。sql和代码的分离,提高了可维护性,且并未对应用程序或者数据库的现有设计强加任何影响。还可以将sql写在注解中,但这种做法并不流行。
MyBatis支持编写动态sql,能够完成复杂的应用需求。
Spring框架
java企业级开发的曾经标准是EJB,然而EJB规范十分复杂,学习起来也非常艰苦,而Spring出现的初衷就是为了解决这些问题。spring采用IOC机制将市面上优秀的框架揉和在一起建立起一个连贯的体系,提供了统一、高效的方式构造整个应用。绝大部分Java应用都可以从Spring中受益。
其基本特征有:
(1)是一个轻量级控制反转(IoC)框架
(2)是面向切面(AOP)框架
(3)简单易测试,方便集成junit
(4)松耦合,完全面向接口
(5)申明式事务
(6)使用基本的JavaBean来完成以前只可能由EJB完成的事情
(7)轻量——从大小与开销两方面而言Spring都是轻量的。
spring在发展过程中,除了糅合其它优秀工具,也不断的丰富各种功能,这些包括
DAO模块
提供了JdbcTemplate组件,可以用于替代Mybatis等数据框架。
支持JPA,这是和Hibernate共同完成的。
spring也编写了连接池对象,实现了DataSource接口,这可作为选用。
Spring的AOP模块提供了事务管理服务。
对象/关系映射
Spring并不试图实现它自己的ORM解决方案,而是为几种流行的ORM框架提供了集成方案,包括Hibernate、JDO和iBATIS SQL映。
Spring的Web模块
Web模块提供了一个适合于Web应用的上下文。这个模块还提供了一些面向服务支持,例如:实现文件上传的multipart请求,邮件发送的支持、spring自己的标签支持。此外它也能够和其它Web框架集成,比如Struts。
Spring的MVC框架
Spring为Web应用提供了一个功能全面的MVC框架,在此之间虽然有Struts已经十分流行,但Spring的创始人Rod Johnson认为当时流行的各种MVC框架都有各种各样的缺陷,因而在spring中也增加了MVC的功能。
比如,它允许你声明性地将请求参数自动绑定到业务对象中,还可以利用其它服务,例如国际化信息与验证。
解决Web页面乱码问题
在做java Web 项目时,乱码问题时常都会出现,解决方法也不尽相同,有简单也有复杂的;如果加入了Spring框架之后就不一样了,可以采用Spring框架自带的过滤器CharacterEncodingFilter,这样可以大大减轻了我们的工作量,即简单方便又容易理解。
类型转换
提供了通用的类型转换器:converter和formatter(格式化)。
校验
为了验证表单数据的正确性,采用了两种方案,一是实体bean来校验,这是使用国际验证标准JSR303,是与hibernate共同完成的。二是利用Spring Validator接口,这适合更为复杂的场景。
springboot
为了方便应用程序的构建, SpringBoot应用而成,它集成了各种框架的使用配置,提供了大量的便利性,还能很好的支持分布式开发。
springboot项目以jar的方式运行,是普通的java application,但它内嵌了tomcat容器,因而免部署war包,也避免了我们自行安装tomcat。它简化了maven配置,提供了starter pom来简化依赖加载。它使用更多注解,符合spring4的推荐。它有更强的“自动配置”,配置所写的位置不同了,且尽量用“注解+纯java代码配置”的方式。
springboot遵循“习惯优于配置”的理念,程序员只需要进行少量配置。
springboot还支持运行时监控。
ActiveMQ
Apache ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件。由于ActiveMQ是一个由Java语言开发的应用程序,因此我们需要在操作系统上先安装Java虚拟机,才能执行ActiveMQ。
ActiveMQ可以很方便的和spring整合使用。实际上,市面上的其它各种消息系统,如activeMQ、RabitMQ、kafka等等都可以被spring整合使用。