(书接上回)上节课我们简单介绍了java语言的发展历史、版本历史以及java语言的特点、应用领域等。这节课我们来介绍java常用的开发工具。都说工欲善其事必先利其器,要想学好java这门语言,选择一款好用顺手的开发工具是必不可少的。另外面试java工作时开发工具的使用也是一个重要的考核点。所以这节课大家要好好学习。我会尽量介绍全面一些。让大家对常用的工具都能有些简单的了解。
首先我们先了解完整项目开发过程,如图所示:
从上图中我们能看到一个完整的java项目的开发包括很多的环节,每个环节都需要用到不同的开发工具。在实际java项目开发中,一般每个环节都有专门的人负责。比如:原型的设计有产品经理负责。界面的美化有专门的美工负责。前端有专门的前端开发人员负责。我们的课程中主要涉及的是研发这个环节。而研发主要工作就是根据项目的需求文档设计系统架构、设计数据库、编写调试程序代码。对于普通的码农来说,主要的就是编写和调试程序。
从上图中我们可以看到:
1、要想编写程序,需要一个能编写源代码的编辑工具。例如:Notepad++; 2、要想测试程序,需要一个编译、执行工具。例如:JDK; 3、要想单独测试一个单元,需要一个单元测试工具。例如:JUnit、TestNG; 4、要想编写开发文档,需要开发文档编辑工具。例如:word、Excel、PPT; 5、要想分析设计程序,需要程序的分析设计工具。例如:StarUML; 6、要想方便管理源码和版本升级,需要源码管理和版本维护工具。例如:SVN,Git; 7、要想多个团队协作开发或者项目用到很多的第三方类库和Jar包。需要自动化构建工具。例如:Maven、gradle; 8、要想在一个工具中使用以上所有功能,需要用到集成开发工具IDE。例如:Eclipse;
大家看到这么多工具是不是很头疼。哈哈:) 所以说java开发入门门槛有点高。没关系。后面的课程我会一个一个逐步给大家详细介绍。 下面我们先简单了解一下这些java开发常用工具。
java源代码本质上其实就是普通的文本文件,所以理论上来说任何可以编辑文本文件的编辑器都可以作为我们的java代码编辑工具。比如:WINDOWS记事本、写字板、word等。但是这些简单工具没有语法的高亮提示、自动完成等功能,这些功能的缺失会大大降低代码的编写效率。所以学习开发时一般我们不会选用这些简单文本编辑工具。我们一般会选用一些功能比较强大的类似记事本的工具,比如: Notepad++、Sublime Text、editplus、ultraedit、vim等,具体介绍如下:
Notepad++是 Windows操作系统下的一套文本编辑器(软件版权许可证: GPL),有完整的中文化接口及支持多国语言编写的功能(UTF8技术)。Notepad++功能比 Windows 中的 Notepad(记事本)强大,除了可以用来制作一般的纯文字说明文件,也十分适合编写计算机程序代码。Notepad++ 不仅有语法高亮度显示,也有语法折叠功能,并且支持宏以及扩充基本功能的外挂模组。Notepad++是免费软件,可以免费使用,自带中文,支持所有主流的计算机程序语言。
EditPlus是一款由韩国 Sangil Kim (ES-Computing)出品的小巧但是功能强大的可处理文本、HTML和程序语言的Windows编辑器,你甚至可以通过设置用户工具将其作为C,Java,Php等等语言的一个简单的IDE。EditPlus功能强大,界面简洁美观,且启动速度快;中文支持比较好;支持语法高亮;支持代码折叠;支持代码自动完成(但其功能比较弱),不支持代码提示功能;配置功能强大,且比较容易,扩展也比较强。
UltraEdit 是一套功能强大的文本编辑器,可以编辑文本、十六进制、ASCII 码,完全可以取代记事本,它是一款需要花费49.95美元的共享软件,它提供了友好界面的编程编辑器,支持语法高亮,代码折叠和宏,以及一大堆其他的功能,内置了对于HTML、PHP和JavaScript等语法的支持,可同时编辑多个文件,而且即使开启很大的文件速度也不会慢。因为收费它的流行程度不及以上两款软件。但是用它编辑十六进制时非常好用。另外在国内是否收费对我们影响不大:)。
Sublime Text是由程序员Jon Skinner于2008年1月份所开发出来,它最初被设计为一个具有丰富扩展功能的Vim。它是一款收费软件,但是可以无限期试用,它是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统,Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。它目前非常流行的一款编辑器,特别是前端开发,基本成了标配。
im是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。目前Vim已经有各主流系统的版本,但因为学习入门难度比较大,因此在windows平台一直没有流行起来。但是在类Unix系统非常流行。尽管vim较vi已经改良了不少,但是初次使用还是会一头雾水,不知如何操作,所以学习vim要首先过2关。第一关是理解vim的设计思路,vim设计之初就是整个文本编辑都用键盘而非鼠标来完成,键盘上几乎每个键都有固定的用法。第二关是命令关,vim有过百条命令对应编辑的需要,如果能熟练使用vim这些命令,编辑速度会比鼠标要快很多。
以上工具的主要功能是编写java源代码,要想编译、执行编写的java代码,我们还需要一个编译和执行的工具。也就是java官方提供的JDK(Java Development Kit),也叫java开发工具包。关于JDK的安装与配置。我们下一节专门讲解。在这我们简单了解一下就行了。
JDK是 Java 语言的软件开发工具包,JDK是整个java开发的核心,它包含了JAVA的运行环境,JAVA工具和JAVA基础的类库等。当我们编写好java源码后,使用JDK提供的java工具来编译、执行java程序。所以要做java开发,首先就是要在开发电脑上安装JDK。下节课我们专门介绍JDK的安装与配置。
单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为是否合理正确。例如:是在现实世界中,某公司为神州十一号生产了一个零件,必须要单独测试这个零件是否有问题。如果单个零件都不测试。等到都集成到产品中以后再测试。遇到问题往往会找不到原因出在那里,会造成非常大的损失。所以要把所有问题在零件集成到产品以前就解决。这就是单元测试。
JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。
TestNG即Testing, Next Generation,下一代测试技术,它是一个测试 Java 应用程序的新框架。是一套根据JUnit 和NUnit思想而构建的利用注解来强化测试功能的一个测试框架,即可以用来做单元测试,也可以用来做集成测试。TestNG 不仅确实强大、创新、可扩展、灵活。TestNG是一个设计用来简化广泛的测试需求的测试框架。由于设计目标的不同,对比junit的只适合用于单元测试,TestNG无疑走的更远。
java项目一般都是团队开发,当多人共同编写一个项目的时候。代码的整合就需要用到专门的源码管理工具了。另外java项目版本的不断更新,也需要版本的管理。所以源码管理与版本控制工具也是每个java程序员必须要熟练掌握的。目前比较流行的java版本控制工具主要有svn、git这两款软件。这两种工具也是每个java程序员必须要熟练掌握的。本节我们只是简单介绍一下,后面的课程我们会拿出专门的一节来讲解这些工具的具体使用。
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。SVN的缺陷是过分依赖网络,不适合分布式开发。使用svn的工作流程如下:1、早上从从服务器下载项目组最新代码。2、进入自己的分支,进行工作,每隔一个小时向服务器自己的分支提交一次代码(很多人都有这个习惯。因为有时候自己对代码改来改去,最后又想还原到前一个小时的版本,或者看看前一个小时自己修改了哪些代码,就需要这样做了)。3、下班时间快到了,把自己的分支合并到服务器主分支上,一天的工作完成,并反映给服务器。
Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持(ps:这得分是用什么样的服务端,使用http协议或者git协议等不太一样。并且在push和pull的时候和服务器端还是有交互的。),使源代码的发布和交流极其方便,目前GIT已经可以在windows下使用,主要方法有二:msysgit和Cygwin。Cygwin和Linux使用方法类似,Windows版本的GIT提供了友好的GUI(图形界面),安装后很快可以上手使用。
一个大型的java项目的开发往往需要加载很多的各式各样的第三方jar包依赖,这时就需要专门工具来维护这些繁杂的jar包,否则各个jar包的版本问题,依赖问题会让你头很大,当多个团队协作开发时,项目的标准框架配置也需要能够快速在不同团队之间复制,另外项目从创建、开发、测试、发布的整个项目生命周期也需要专门的工具来维护。自动化构建工具就是为了解决以上这些问题的。目前比较主流的自动化构建工具主要有:Maven、gradle、Ant等。其中Ant已经走下坡路,除了维护以前的老项目以外,已经基本没有公司用了。过去几年中Maven已经成为java项目的事实构建工具,没有之一。而近两年Gradle获得越来越多的人使用,分走了不少Maven的用户。在这我们主要了解一下Maven和gradle。
Maven是一个采用纯Java编写的开源项目管理工具。它包含了一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。Maven采用了一种被称之为project object model (POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中,通过该文件,Maven可以管理项目的整个生命周期,包括编译,构建,测试,发布,报告等等。
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。面向Java应用为主。当前其支持的语言限于Java、Groovy和Scala,计划未来将支持更多的语言。和Maven一样,Gradle只是提供了构建项目的一个框架,真正起作用的是Plugin。Gradle在默认情况下为我们提供了许多常用的Plugin,其中包括有构建Java项目的Plugin,还有War,Ear等。与Maven不同的是,Gradle不提供内建的项目生命周期管理,只是java Plugin向Project中添加了许多Task,这些Task依次执行,为我们营造了一种如同Maven般项目构建周期。
初学java为了能更好的掌握java代码的编写,我们一般会选用一款高级记事本类的工具作为开发工具, 而实际项目开发时,更多的还是选用集成IDE做为开发工具,比如当下最流行的两款工具:Eclipse、IDEA,所谓集成IDE就是把代码的编写、调试、编译、执行都集成到一个工具中了,不用单独在为每个环节使用工具。对于这两款软件近些年广大网友一直有争议。有说IDEA最流行的,也有说eclipse最流行的。实际情况估计没人能说的清。大家在学习的时候,这两款软件都尝试使用使用吧。具体介绍如下:
Eclipse是一个开放源码的项目,是著名的跨平台的自由集成开发环境(IDE),最初主要用来Java语言开发,后来通过安装不同的插件Eclipse可以支持不同的计算机语言,比如C++和Python等开发工具。Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。目前最新版本已经到了4.5版,代号为Mars。基于Eclipse平台开发并集成了很多插件的myeclipse也有很多人在使用。但因myeclipse属于收费软件,所以大公司很少使用。
IDEA 全称 IntelliJ IDEA,是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具(git、svn、github等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。它的旗舰版本还支持HTML,CSS,PHP,MySQL,Python等。免费版只支持Java等少数语言。
由于面向对象技术的发展,传统的java项目的开发过程需要做很多的面向对象的分析和设计。整个分析和设计过程中,需要专业的工具来描述和记录分析设计的结果。也需要专门的工具来协助理清分析的思路,UML就是这样的工具。
UML的全称是,统一建模语言(UML,UnifiedModelingLanguage),它是面向对象软件的标准化建模语言。UML因其简单、统一的特点,而且能表达软件设计中的动态和静态信息,目前已成为可视化建模语言的工业标准。在软件开发过程中,统一建模语言可以在整个设计周期中使用,帮助设计者缩短设计时间,减少改进的成本,使软硬件分割最优。
需要注意的是:在现在流行的敏捷开发中。UML的地位远不如以前重要了。另外数据库的分析与设计也需要专门的工具来描述和理清数据库之间的关系。下面我们就来简单介绍两款这样的软件。
StarUML是一款开放源码的UML开发工具,是由韩国公司主导开发出来的产品,是一种创建UML类图,生成类图和其他类型的统一建模语言(UML)图表的工具。它可以绘制常用的9种UML图,而且完全免费,软件也比较小,是非常好用的一款软件,不过作者已经很多年不更新了。由此软件延伸一款新的软件:StarUML2。但这款新的软件属于收费软件。
PowerDesigner最初由Xiao-Yun Wang(王晓昀)在SDP Technologies公司开发完成。PowerDesigner是Sybase的企业建模和设计解决方案,采用模型驱动方法,将业务与IT结合起来,可帮助部署有效的企业体系架构,并为研发生命周期管理提供强大的分析与设计技术。PowerDesigner独具匠心地将多种标准数据建模技术(UML、业务流程建模以及市场领先的数据建模)集成一体,并与 .NET、WorkSpace、PowerBuilder、Java™、Eclipse 等主流开发平台集成起来,从而为传统的软件开发周期管理提供业务分析和规范的数据库设计解决方案。此外,它支持60多种关系数据库管理系统(RDBMS)版本。PowerDesigner运行在Microsoft Windows平台上,并提供了Eclipse插件
本节课内容虽然简单,但是对于初学者来说很重要,这些工具都是以后开发经常用到的,在本节课中我们只是做了简单的介绍,后面的课程我们会详细讲解这些工具的使用。下节课我们将介绍JDK的安装与配置。下课!!~~~
学习Java的同学注意了!!!
学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:279558494 我们一起学Java!