最近开始学习Java,觉得比之前学习的c语言有趣的多,决定用博客记录我一天天的成长。。Java的学习我都是在Linux下进行的!
本片博客配置Java环境变量的部分建议大家先学习一下Linux下的shell的相关知识,对环境变量有个认识,然后配置环境就简单许多,也不至于死记硬背,然后强调一下,我的环境变量和你们不一样,每个人的环境都有可能不同,但学习了shell之后会发现语法和怎么配置与生效都是一样的,所以如果照我的环境变量一模一样的配的话就有可能会出现错误~
JDK
什么是JDK
我们学习Java,肯定需要有一个Java的编辑器,而我们在安装编辑器的时候,并不能像c语言那样,安装好VC或DEV C++就直接能使用,我们在使用Java编辑器之前,必须安装JDK这个东西。
Java并不只是一门语言,它也是一种标准,我们知道,Java是具有跨平台性的,要运行Java这个程序,需要JVM这个让JAVA认识的虚拟操作系统,而JVM与各种API的封装就基本组成了JRE,而我们这些要开发Java的程序员,不仅需要JRE这种JAVA的运行环境,更需要诸如javac这种开发工具,而这些开发工具与JRE的封装便是JDK了,所以我们要开发JAVA,只用编辑器是不行的,必须和JDK组合使用。
JDK的使用
为什么我们先说JDK,因为在Linux终端下,基本上有VIM和JDK就可以开发JAVA程序了,IDE只是一个管理工具,可以提高我们的开发效率。
配置环境变量(PATH)
我们在下载好JDK后先要配置环境变量,要不然就会出现我们根本无法使用JDK的情况,因为在系统环境中装不到我们所执行的命令。在Linux下我们安装好JDK后,将它可以放在/usr/lib下,也可以放在/opt下,这两个目录我是比较推荐的,然后我们需要执行 vim /ect/profile这条命令修改系统的环境变量,我的环境变量最后加了这几行:(修改之后执行source /etc/profile命令刷新环境变量)
注意:如果我们安装好JDK之后却没有进行环境变量的设置,那么在我们每次使用javac这个命令编译java文件时,需要将javac的完整路径全部打出来,要不然系统是不知道javac在哪的。
CLASSPATH
在上面我们说了PATH是系统的环境变量,它的作用是告诉系统javac在哪,让它编译java程序然后生成.class可执行文件,而在终端下我们要执行.class可执行文件,就需要java这个命令,而CLASSPATH的作用就是告诉操作系统java这个命令在哪,如在上图中我已经将PATH和CLASSPATH环境都已配置好,我们使用的时候只需要执行命令就可以了。具体操作及效果如下图:
IDE
IDE可以极大的提高我们开发Java程序的工作效率,它对于Java下包的管理,项目的管理,原始码文档与位码文档的管理有着极为方便的操作。对于IDE开发工具,我推荐使用IDEA或Eclipse。
管理原始码和位码文档
由于Java常是以项目的形式进行程序开发的,所以我们需要对Java进行有序的管理,以便对代码的维护和共同开发变得比较简单易行。
原始码文档就是以.java结尾的源代码,位码文档就是以.class结尾的可执行文件,如果我们在一个项目之中将两种文件放在一起,明显会使java开发变得混乱,所以我们一般会在项目目录之下在建立两个文件夹 ,分别命名为src(源码目录),classes(位码目录),使用java -d选项直接将编译好的位码文档放进classes目录下。
package管理类
当我们在公司进行团队合作进行Java程序研发的时候,明显只将源码和位码单纯的分开来放,明显是不够的,我门有可能是多个团队进行共同开发,那么我们也应该对文档的管理进行分门别类,如果不这样做,我们在进行多个部门的文件整合时,就有可能发生文档和原始码覆盖的问题。
我们在开发Java项目的时候,往往会使用package管理类的方式,我们需要在程序的最开始处加上这样一行代码:package com.paranoid.unit1 这表示,我们将接下来所定义的类放在com.paranoid.unit1类下,这个命名通常是将我们个人或团队域名进行反向命名所得到的,以目录的形式也是一层层的从com包含到 unit1,这样做的话,不同的组织或单位要将原始码放在一起管理的话就不会发生覆盖的问题了。
完全吻合名称
在原始码中我们要指定某个类的时候,要是相同包中的类,直接使用class所定义的名称就可以了,但是如果两个类是位于不同的包的话,就要使用完全吻合名称,比如在Main中使用Console类,就要使用com.paranoid.unit1.Console。
使用import偷懒
使用包管理,解决了我们开发程序时有可能出现的名称冲突的问题,但是也引发了另一个问题,当我们在一个类中要引用不再同一个目录下的类,那么每次都输入完全吻合名称的话未免显得很麻烦,使用import,可以使编译器认识你调用的其他目录下的类。
比如给程序刚开始加上import com.paranoid.unit1.Console这句话,它就告诉了编辑器一句话,如果你在下面的代码中不认识我调用的Console的话,那么编译器就会试着使用import所声明的东西,,结果可以在我们声明的路径下找到相应的类,就可以进行编译了。