Java基础教程(2)--Java开发环境

摘要:本文主要介绍了Java的开发环境。首先对Java中的几个术语进行了阐述,然后手把手地教大家如何搭建Java环境,并通过一个非常简单的例子进行了验证,最后向大家推荐了一款非常好用的Java集成开发环境——Intellij IDEA。

一.JVM、JRE和JDK的概念

  对于初学者来说,这三个术语出现的频率很高,而且有关这它们的问题在面试题中也会经常出现。因此,理解它们的定义、区别和联系就显得尤为重要。在学习这几个专业术语之前,我们先来了解一下Java代码的编译运行过程。
  机器语言是用二进制代码表示的,能够被计算机直接识别和执行的一种机器指令的集合。也就是说,通过机器语言,我们可以直接操控电脑去做任何我们想要执行的操作。但是,由于机器语言是用二进制表示的,这就导致了它学习成本高、代码晦涩难懂、不便于调试等缺点。试想一下,写代码只用0和1,每个指令都要查手册,而且一旦手误写错一个数字,很难靠肉眼识别出来,这对于程序员来说,无疑是一件非常痛苦的事。
  高级语言是以人类的日常语言为基础的一种编程语言,使用一般人易于接受的文字来表示(例如汉字、不规则英文或其他外语),它的学习成本相对于机器语言来说大大降低,从而使程序编写更容易,亦有较高的可读性。编译器是将高级语言翻译成机器语言的软件,使用高级语言编写的代码经过编译器翻译以后得到电脑可以直接执行的机器语言代码,这就相当于变相地编写机器语言。电脑领域已经发明了成百上千种编程语言,每种语言都有对应的编译器。在编写高级语言之前,首先要确保电脑上已经安装了对应的编译器。
  高级语言大体上可分为编译型语言和解释型语言。编译型语言首先将源代码通过编译器生成机器语言代码,再由电脑运行生成的机器语言代码。像C和C++等都是编译型语言。解释型语言不需要事先编译,直接将源代码解释成机器语言并立即执行,每次执行都需要重新翻译。像Python和JavaScript等都是解释型语言。
  Java语言是一种特殊的存在。Java源代码(文件后缀名为.java)首先经过编译之后转换为一种称为Java字节码的中间语言(文件后缀名为.class),再由Java虚拟机对字节码进行解释和执行。如果说它是编译型语言,它编译之后得到的并不是机器语言代码,无法直接运行,这与编译型语言的定义相矛盾;但是如果说他是解释型语言,似乎也不太合理,因为它在解释之前有一个编译过程。因此,可以说它既是编译型语言,又是解释型语言,也可以说它既不是编译型语言,又不是解释型语言。
  现在回过头来看JVM、JRE和JDK的概念。JVM(Java Virtual Machine,Java虚拟机)是将Java字节码解释给本地系统运行的软件。JVM是Java实现其平台无关性特点的关键。Java语言使用JVM屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。
  但是只有JVM还不能执行字节码,因为在解释字节码的时候JVM需要调用解释所需要的类库。JRE(Java Runtime Environment,Java运行时环境)是运行Java程序所必需的环境的集合,包含JVM标准实现及Java核心类库。也就是说,如果要运行Java程序,那么电脑上必须安装JRE。
  安装JRE之后,我们就可以在电脑上运行编译好的Java程序了。这对于Java程序的用户来说足够了,但是如果是Java开发人员,那么只安装JRE将无法进行Java开发,因为无法将Java源代码编译成字节码。JDK(Java Development Kit,Java开发工具包)中包含了编译Java源代码的工具javac,提取Java文档的工具javadoc等工具和JRE。因此,安装JDK以后,我们既可以进行Java的开发,也可以运行Java程序。下面这张图很好地说明了这三者之间的关系:


image

二.安装JDK

1.下载JDK

  正如上一篇文章中所说,我们选择安装JDK11。这里是它的下载地址。个人比较喜欢压缩包的安装方式,所以这里选择windows64位的zip文件。注意要勾选Accept License Aggrement。

image

将下载的压缩包解压至任何你想要安装的位置。这里我将解压出的jdk-11文件夹放在了F盘的env文件夹下。

2.配置环境变量

  接下来需要配置环境变量Path和JAVA_HOME。首先介绍一下为什么需要配置这两个环境变量。Path环境变量用来指定cmd中可执行文件的搜索路径。编译Java源代码需要使用javac.exe,运行字节码需要使用java.exe,如果没有配置这两个可执行文件的路径,那么在cmd中使用这两个命令时将会出现“xxx不是内部或外部命令”的错误。而JAVA_HOME环境变量则是用来定义JDK的安装路径。在一个环境变量中可以使用其他环境变量的值,使用时需要在其他环境变量前后加%。例如,JDK的安装路径是F:\env\jdk-11,那么JAVA_HOME也需要配置为F:\env\jdk-11。javac.exe和java.exe的路径为F:\env\jdk-11\bin,那么Path中只需要配置%JAVA_HOME%\bin即可。这样做的一个好处是,如果要切换或修改JDK的路径,只需要修改JAVA_HOME的值。另外一个需要配置JAVA_HOME的原因是,许多组件依赖于Java的环境,如果不配置JAVA_HOME环境变量,这些组件将会因为找不到Java的安装路径而报错,例如tomcat、maven等。
  在许多其他有关配置JDK环境变量的教程中都配置了CLASSPATH,但是从Java1.5开始就可以不配置这个环境变量了,而且每篇教程里CLASSPATH的值都不一样,有配置rt.jar的,有配置dt.jar的,也有配置tools.jar的,这对于初学者来说非常不友好。这里我们选择不配置CLASSPATH变量。
  最后再来介绍一下系统变量和用户变量。在配置每个环境变量时,既可以将其配置在系统变量里,又可以配置在用户变量里。但是系统变量对所有用户都有效,而用户变量只对当前用户有效。并且系统变量的优先级高于用户变量,也就是说如果一个环境变量在系统变量和用户变量中都进行了配置,那么电脑将优先使用系统变量。因为系统变量中有许多比较重要的环境变量,所以我选择在用户变量中配置Path和JAVA_HOME变量。
  如果是使用IDEA(一个JDK的集成开发环境,下文会讲到)进行开发的话,Path变量是没有必要配置的,因为可以在IDEA中配置Java的安装路径。但是为了演示在cmd中使用javac和java命令,我们将同时配置Path和JAVA_HOME变量。
  下面是具体的配置步骤:
(1)右键我的电脑,属性,找到高级系统设置;


image

(2)高级,环境变量;


image

(3)在用户变量中新建JAVA_HOME变量,复制JDK的安装路径并粘贴到变量值,确定;
image

(4)在用户变量中编辑Path变量(如果没有就新建),填入%JAVA_HOME%\bin,确定;
image

  之后一直点击确定即可退出环境变量的配置。至此,JDK的环境变量就全部配置完成了。此时可以打开cmd测试一下(如果配置前已经打开了cmd,需要关闭并重新打开,因为环境变量会在下一次打开cmd时才生效)。输入javac -version和java -version,看到如下输出则表示配置成功:
image

三.第一个Java程序--HelloWorld

  下面我们将编写一个非常简单的Java程序来体验Java代码的编写、编译和运行。
  首先新建一个文本文档,然后编写以下代码:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!"); // Display the string.
    }
}

  保存,然后将文件名修改为“HelloWorld.java”。打开cmd,切换到这个文件所在的目录(我将这个文件放在了F盘的根目录下),然后运行javac HelloWorld.java进行编译,此时会在目录中看到生成了一个HelloWorld.class文件,这个文件就是编译之后生成的字节码。接着运行java HelloWorld(这里不用加.class后缀),命令行将会输出“Hello World!”。


image

  这里看不懂没有关系,我们会在后面的文章中对每一个语法进行介绍。

四.集成开发环境

  上一节中,我们已经了解了如何从命令行编译和运行一个Java程序,这是一个很有用的技能。但是每次编译和运行都要手动输入命令则会显得有点麻烦。集成开发环境(Integrated Development Environment,以下简称IDE)集成了这些功能,在编写完代码后只需要点击运行按钮,IDE将会在后台自动为我们执行这些命令并将输出显示在控制台上。当然,IDE的功能远不止于此,它还提供了调试、分析、自动补全、语法检测等许多功能,它使得我们的开发工作更加轻松高效。
  Java的IDE有很多,其中最出名的要属eclipse和Intellij IDEA了。eclipse是一个开源的、免费的集成开发环境。笔者刚开始学习Java使用的就是这款IDE,直到后来遇到了IDEA。个人更加喜欢IDEA,功能非常强大,界面也很美观。网上有很多人就eclipse和IDEA哪个更好展开了激烈的讨论,在我看来这是没有必要的。IDE只是一个工具,每个人选择自己用着顺手的工具就可以了,我们真正关注的编程语言本身,而不是使用什么工具并且说服别人一定要去用什么工具。在后面的教程中我都会使用IDEA进行讲解。
  IDEA分为社区版(Community)和旗舰版(Ultimate),社区版免费,但是相对于旗舰版来说少了很多功能,不过对于Java初学者来说肯定是够用了。旗舰版收费,而且非常贵,第一年的价格是499美刀,之后每年便宜100美刀,第三年及以后都是299美刀。学生党可以凭借教育网邮箱(后缀为.edu.cn的邮箱)申请免费试用。如果不是学生党到但是还是想使用旗舰版的话,这里推荐一个提供免费注册码的网站,上面有详细的教程。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容