Java环境配置与编译运行详解

一、开篇

通过对之前Java之路的了解之后,相信初学者们都对Java有了一个比较深印象的了解了。但是事情不能总停留在理论层面,还得多多实现,才能见真知。我觉得,学习一样东西,要遵循理论——实践——理论这样一个套路。先了解事情的基本概念,弄懂基本概念后,要想方设法的用到生活的点点滴滴上,这样能加深理论的记忆以及发现自己的盲点。在重复的实践中,我们会逐渐对其有了自己的看法、想法,对理论有了一定的深化。最后回归理论,总结出自己的东西,这样东西就真正的属于你了。所以,今天我们要开始动手配Java环境,以及利用配好的Java环境来对程序进行编译运行。要注意的是,为了能让大家能更深刻的了解Java究竟是怎么样运作,怎样编译运行的,本章不会涉及到任何IDE的使用,编码当然就是用记事本了。IDE对提高日常的开发效率,但是记事本能增加大家应聘的录取机会哟!

二、JDK下载

在《Java之路——Java初接触》中已经讲过,要进行Java开发,除了JRE(Java运行环境)以外,还需要相应的开发工具,所以我们需要下载JDK。下载JDK可以到Oracle官网:https://www.oracle.com/ 上,选择Downloads——Java for Developers,如下:

接着选择download JDK,目前可选择的最新版为8u121。

如果要想获取以前的版本,可将页面拉到最下面,选择Java Archive,就可以获取到历史的Java版本。

我们这里以下载最新的8u121为例来进行后续说明。

三、JDK安装

根据系统环境下载了对应的版本之后,就可以进行安装了。整个安装过程没有什么特别,基本可以默认下一步就行了。如果需要,可以修改一下相应的目录。

中途会弹出一个对话框,意思是JRE所安装的目录,选择好目录然后"下一步"就行。

安装成功后,如果想看API文档之类的,可以点击它的"后续教程"。

至此,JDK已顺利安装完成。

四、环境配置

安装成功后,怎么用呢?我们可以打开命令控制台,然后去到你安装JDK目录的bin目录下,执行java命令,如果有一大堆提示出来,证明你已经安装正确了。

有的同学可能会遇到下面这种情况:

为什么会这样子呢?细心的同学可能会发现,当前目录不一样。我一开始就说了,我们需要在你安装JDK目录的bin目录下执行java命令,才能生效。原因很简单,就是因为bin目录下有各种各样的命令,java是其中一个命令。我们用到的很多关于java的命令,如javac、javaw等,都是在其bin目录下,所以大家以后深入学习,可以先对bin目录下的工具进行学习,里面有很多很有用的工具,这是后话。

回答刚刚的话题,如果一定要在bin目录下才能运行java命令是很不方便的一件事,不但不方便,很多其他程序要用到java命令也用不上,因为他们不知道去哪里找java命令。这个时候,我们就需要对系统配置环境变量,以方便在什么目录下都能执行java命令。

选择"开始"——右键"计算机"——属性——高级系统设置——环境变量,即可打开环境变量的设置窗口。

主要对以下三个变量进行设置:

1.新增:JAVA_HOME,值为JDK路径,此处为:C:\Program Files\Java\jdk1.8.0_121

2.编辑:PATH,在原变量值的最后加上";%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin"。这里稍作一下说明。值里面的%JAVA_HOME%意思就是上一条新增变量JAVA_HOME的值,可见第一条新增变量JAVA_HOME是为了方便PATH变量配置的时候不需要写得太冗长。而PATH变量自身的意思就是windows会在PATH变量值里所列出的目录中一条一条的查找要执行的命令,所以只要配置了PATH,java命令就不需要一定在JDK目录的bin目录下执行了。而至于为什么是上面那两个目录,是因为bin下面的都是java用到的命令,也可以说是一些工具。

3.新增:CLASSPATH,其值为".;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar"。CLASSPATH的作用是让java程序编译的时候(用javac的时候)知道去哪里找到Java的源文件,或者字节码文件(CLASS文件)。其中,dt.jar是关于运行环境的类库,tools.jar是工具类库,编译和运行的时候都需要用到。这里值得十分注意的是,整串值的开始部分有个".",一定不能漏,这代表的是当前目录的意思。

当配置完这三点,我们再在用户的目录下运行java -version命令,就能看到cmd能自动找到java程序并且运行了。

五、初识Java编译

在开发我们的第一个Java程序之前,首先粗略的了解一下Java代码的编译和执行的整个过程。我们经常会看到Java工程里面有这两种后缀的文件:.java和.class。这两种文件分别代表Java的源代码和字节码文件,而其中的字节码文件就是java实现"Write Once,Run Anywhere"的关键。我们可以先来看看下面两幅图[1]。

Java编译器编译Java代码的流程如下:

JVM执行引擎完成Java字节码的执行:

从上两图可以看到,Java运行程序分两步走,第一步是源码编译成字节码,第二步是字节码编译成目标代码。这就和C、C++直接编译成与机器相关的目标代码不一样了。通过字节码这一中间环节,大家可以拿着编译成功的包发布到任一有JVM环境的机器上,再由JVM来实现到机器相关的最终目标代码的编译,从而做到"Write Once,Run Anywhere",而无需与具体运行平台绑定。所以我们通常所说的对代码进行编译,就是Java源代码编译成JVM字节码的过程。

六、java与javac

在上一节我们已经说过,%JAVA_HOME%\bin目录下有大量的Java工具可以使用,我们以后也要逐渐熟悉。那作为初接触java的我们,首先应该熟悉哪个呢?无疑是java与javac了。

现在的社会节奏太快了,很多人都或多或少有点急功近利。在开发方便,这主要体现在没理解程序的底层是怎么运作的,一上来就开始IDE开发,遇到各种问题后,由于不懂底层原理,就不知道如何处理。个人认为,IDE要用,可以极大的提高我们的生产效率,但是底层原理也一定要懂,不然都不知道IDE是怎么讲你的程序编译打包运行的,遇到问题的时候就不会解决了。很经常见到的一种情况是,有些人看到服务器上没有IDE就懵了,连怎么运行jar包程序都不会。

回归正传,我们就从java与javac入手,了解怎么在命令行中编译和运行一个java程序。首先,我们分别认识这两个命令是怎么用的。

java命令:

作用:用于执行类或者执行jar文件。

在cmd控制台中输入java回车,我们可以得到java命令运行的格式如下:

上图没有截完整,选项(-options)后面还有的,大家可自行运行java命令来看。我们暂时忽略选项(-option)的内容,主要看必填项"类"和"jar文件"。可以看到java命令可直接运行类和jar文件。举个例子,如何有个HelloWorld.class文件里面有个HelloWorld类,则运行的命令是:java HelloWorld。这里要注意的是,java后面不是class文件(HelloWorld.class),而是对应的类(HelloWorld)。如果有个HelloWorld.jar的jar文件,运行的命令是:java -jar HelloWorld.jar。

javac命令:

作用:用于编译.java文件。

在cmd控制台中输入javac回车,我们可以得到javac命令运行的格式如下:

我们暂时忽略选项(-option)的内容,可以看到javac最简单的格式就是跟一个源代码文件。举个例子,如果有一个HelloWorld.java文件需要对其编译,则运行的命令为:javac HelloWorld.java,就可以在当前目录下生成一个HelloWorld.class的字节码文件。

七、第一个Java程序

了解完java和javac命令以后,我们就可以开始第一个Java程序了,当然,我们是用记事本来开始我们的第一个Java程序。微软自带的记事本功能比较少,用户体验也不是十分好,个人比较喜欢用Notepad++,大家可根据自己的习惯来选择喜欢的记事本。

第一部分:

创建HelloWorld类,保存在HelloWorld.java文件中。

在cmd控制台中,运行javac HelloWorld.java命令对其编译,则会自动生成HelloWorld.class文件。

然后运行java HelloWorld命令,则会显示Hello World。这里一定要注意,不是运行java HelloWorld.class,java后面跟的是要运行的类,即HelloWorld。

这就完成了从代码编写,到编译,再到运行的整个过程了,是不是很简单呢?其实一切复杂的事情都是从简单做起,只要打好了基础,学习上层的东西就很简单了。

第二部分:

有人会问了,那如果要引用其他的jar包或者类的话,那怎么办呢?别急,我们尝试一下。首先建个User类(只是随便建个类,大家别太在意),它有个说出内容的方法,存在User.java文件中,代码如下:

修改HelloWorld类,代码如下:

User.java放在otherclass目录睇下,不在HelloWorld.java同一个目录:

然后我们尝试用上面的方法进行编译,会发现提示找不到User类,这就是因为javac不知道去哪里找User类的缘故了。

遇到这些情况,我们一定要会看帮助提示,看看javac可以提供什么参数。这不单单为了解决目前的问题,还为了以后解决各种各样更多的问题,只要能做到举一反三,没有什么问题能难得到你。

我们可以看到,只要增加-classpath参数,就可指定要查找的类的文件位置,这样我们就可以给javac指定User的位置了,所以我们可以写成:

则会成功编译HelloWorld.java和User.java,在对应目录中生成HelloWorld.class和User.class。

这时候我们可以执行java HelloWorld看看能否出结果,但可惜的是,又说没找到User类:

聪明的同学可能会想到,java应该也有个-classpath参数。恭喜你,开始开窍了,那我们赶紧试试看:

又不行,崩溃中!!呵呵,别急,java跟javac有点不同,java带着-classpath参数会是java只会在classpath所在的目录里找类,所以如果HelloWorld实在当前目录下,要把当前目录加上,也就是加一".",如下:

这就成功运行了。

第三部分:

这时候,有些人又不爽了,为什么每次编译运行都要执行这么一大串东西,那多麻烦,如果类多起来,那岂不是输个命令都要输半天,有没有一些方便一点的方法,供以后执行用呢?那当然有,这就是将所有类打包成一个可执行的jar包,以后直接运行jar包就可以了。这里用到的命令是jar命令,我们先看看它的格式与内容:

这里我们主要用到的是以下四个选项:

-c 创建新的归档文件

-v 在标准输出中生成详细输出

-f 指定归档文件名

-e 为捆绑到可执行 jar 文件的独立应用程序

指定应用程序入口点

这里我们根据提示的格式,用以下命令将User.class和HelloWorld.class打包成HelloWorld.jar包。

这就生成了一个HelloWorld.jar的文件。如果大家想看HelloWorld.jar里面有什么内容,告诉大家一个小技巧,可以将jar包拖到winrar等压缩软件中,就可以看到具体的内容。

可以看到里面除了要打包的内容外,还多了一个META-INF文件夹,里面有一个MANIFEST.MF文件,这是一个清单文件,里面有相关的清单信息。我们需要对其进行编辑,增加Class-Path:参数,就如告诉java命令classpath是什么一样。下图中高亮的为增加的内容:

最后,我们通过java -jar HelloWolrd.jar命令,则可运行其程序。以后我们拿着这个jar包就可以随处显示"Hello World",比之前要弄一大串选项方便多了。

八、总结

本文从jdk的下载、安装,环境的配置,程序的编写、编译以及执行,从头到尾做了很详尽的介绍,为的是让大家对这个过程有个深刻的了解。环境配好了,用上IDE了,以后大家就可能很少接触这一过程的了。但这一过程不能丢,这是一个基础,正如我前面说的,如果你不了解基础,遇到问题的时候,都不知道从何解决。上层东西学多了,但却不了解底层究竟是怎么一回事,心里没有底,人家换个包装,你又重新学习,而做不到举一反三,那是事倍功半啊!

九、参考资料

JVM学习笔记(二)------Java代码编译和执行的整个过程

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 在CentOS上配置Java环境变量的教程

    rhel 和 centos linux 使用yum命令后,将 OpenSDK 安装到/usr/lib/jvm/ 目录: [root@dabu.info ~]# ls -l /usr/lib/jvm/ 输出如下: total 4 drwxr-xr-x. 3 root root 4096 Feb 24 17:00 java-1.7.0-openjdk-1.7.0.51.x86_64 lrwxrwxrwx. 1 root root 21 Feb 24 17:00 jre -> /etc/alterna

  • 在Mac OS上安装Java以及配置环境变量的基本方法

    安装 因为并非所有用户都用得着 Java ,所以在默认状态下 OS X 不预装 Java , 如果你需要的话可以手动安装. 1. http://support.apple.com/kb/DL1572 到苹果官网下载. http://support.apple.com/downloads/DL1572/en_US/JavaForOSX2014-001.dmg 2.http://www.oracle.com/technetwor ... ownloads/index.html 到 Oracle 下载

  • Java开发环境jdk 1.8安装配置方法(Win7 64位系统/windows server 2008)

    什么是jdk jdk是什么呢?jdk的是java development kit的缩写,意思是java程序开发的工具包.也可以说jdk是java的sdk. 目前的JDK大致分三个大版本: Java SE:Java Platform, Standard Edition,Java平台标准版,主要用来开发桌面程序 Java EE:Java Platform, Enterprise Edition,Java平台企业版,主要用来开发WEB程序 Java ME:Java Platform, Micro Ed

  • 图文详解Java环境变量配置方法

    前言 首先是要安装JDK,JDK安装好之后,还需要在电脑上配置"JAVA_HOME"."path"."classpath"这三个环境变量才能够把java的开发环境搭建好.在没安装过jdk的环境下,path环境变量是系统变量,本来存在的,而JAVA_HOME和classpath是不存在的. 一.配置JAVA_HOME的环境变量[推荐方式,不要使用绝对路径] 操作步骤(win7系统):计算机→右键"属性"→高级系统设置→高级→环境

  • 学习在一台新电脑上配置JAVA开发环境

    对于JAVA新手来说,刚开始要学JAVA,而自己的电脑上毫无与JAVA开发有关的环境,应该如何进行配置呢? (安卓新手也需要JAVA开发环境) 第一步,下载.安装java JRE JRE (Java Runtime Environment),即Java运行环境,是运行JAVA程序所必须的环境的集合,包含各种类库. 1.Jre官方下载; http://www.oracle.com/technetwork/java/javase/downloads/index.html 2.点击左侧的JAVA字样图

  • 配置java环境变量(linux mac windows7)

    linux配置java环境变量(详细) 一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586.bin 这时会出现一段协议,连继敲回车,当询问是否同意的时候,输入yes,回车.之后会在当前目录下生成一个jdk1.6.0_14目录,你可以将它复制到 任何一个目录下. 二. 需要配置的环境变量 1. PATH环境变量.作用是指定命令搜索路径,在shell下面执行命令时,它会到PATH变量所指定的路

  • 一款js和css代码压缩工具[附JAVA环境配置方法]

    TBCompressor的安装很简单,点击install.cmd就可以了,安装后会在里的右键菜单里出现"Compress CSS or JS"选项,需要压缩文件时只需选取目标文件然后右键点选"Compress CSS or JS"即刻.压缩后的文件会自动重命名. 这里对jQuery1.3 Development版进行压缩测试,效果如下:可以看到效果还是非常不错的:) TBCompressor下载 需要注意的是使用TBCompressor必须要有JAVA环境的支持,需

  • Java+Spring+MySql环境中安装和配置MyBatis的教程

    1.MyBatis简介与配置MyBatis+Spring+MySql 1.1MyBatis简介       MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架.MyBatis 摒除了大部分的JDBC代码.手工设置参数和结果集重获.MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型.Map 接口和POJO 到数据库记录.相对Hibernate和Apache OJB等"一站式"ORM解决方案而言,Mybatis 是一种"半自动化"的O

  • java环境变量为什么要配置path和classpath详细解答

    当时初学java时只是关心如何做,现在回过头来研究为什么这个问题,先从最开始环境变量配置开始吧! 为何配置path: 在cmd命令中输入一个指令时先在当前文件目录下查找命令文件,path的环境变量中依次查找命令文件,以最先找到的为准,因为配置了path,所以在cmd命令下可以直接输入java和javac等jdk的命令 为何配置classpath: jvm在查找class文件时如果没有设置classpath会在当前路径查找,设置classpth后 仅在classpath路径下查找class文件 写

  • java环境变量path和classpath的配置

    在Java的学习中,涉及到两个系统环境变量path和classpath 一. path环境变量 path环境变量是系统环境变量的一种,它用于保存一系列的路径,每个路径之间用分号分隔.当在命令行窗口运行一个可执行文件时,操作系统首先会在当前目录下查找是否存在该文件,如果不存在会继续在path环境变量中定义的路径下寻找这个文件,如果仍未找到,系统会报错. 在Windows7系统下配置环境变量: 1.右击[计算机],选择[属性],出现如下界面: 图1 2.点击[高级系统设置],出现如下界面: 图2 3

随机推荐