什么是JVM
JVM(Java Virtual Machine),即Java虚拟机。Java是个高级语言,要让计算机执行程序,必须通过编译程序的翻译。不过Java编译时(原始码扩展名.java)并不直接编译为相依于某平台的0、1序列, 而是翻译为中介格式的位码(.class)。要想执行位码文档(可执行文件),目标平台必须安装JVM,它将位码翻译为相依于平台的机器码。
区分JRE与JDK
JRE:Java Runtime Environment,即Java执行环境,包括Java SE API、JVM、部署技术。
JDK:Java Development Kit,即Java 软件开发工具包,包括了javac、appletviewer、javadoc等工具程序。要开发java程序必须安装JDK,总结来说,JDK包括了java程序语言、工具程序与JRE(本身附带Private JRE)。
撰写java程序需要JDK,执行java程序只要JRE就可以了,因为不需要javac这些工具程序
配置环境变量
JAVA_HOME ————–配置JDK安装路径
PATH————————配置JDK命令文件的位置
CLASSPATH ————–配置类库文件的位置
PATH与CLASSPATH根本就是不同层次的环境变量,实际操作系统搜索可执行文件是看PATH,JVM搜索可执行文件.class只看CLASSPATH
管理原始码和位码文档
原始码文档就是以.java结尾的源代码,位码文档就是以.class结尾的可执行文件,如果我们在一个项目之中将两种文件放在一起,明显会使java开发变得混乱,为了对Java进行有序的管理,所以我们一般会在项目目录之下在建立两个文件夹,分别命名为src(源码目录),classes(位码目录),可以使用javac -d <classes目录> ***.java
直接将编译好的位码文档放进classes目录下
使用package管理类
一个应用程序会有多个类彼此合作,也有可能由多个团队共同分工,完成各自功能块,最后组合在一起。但是整合时,就会发生文档覆盖的问题。Java语法中的package关键词可以协助你避免这些的发生
比如在程序的最开始处加上这样一行代码:package com.paranoid.unit1 也就是说我们将接下来所定义的类放在com.paranoid.unit1类下,这个命名通常是将我们个人或团队域名进行反向命名所得到的,以目录的形式也是一层层的从com包含到 unit1,这样做的话不同的组织或单位要将原始码放在一起管理的话就不会发生覆盖的问题了
完全吻合名称
在原始码中指定使用某个类时,如果是相同包中的类,只要使用class所定义的名称即可,而不同包的类,必须使用完全吻合名称。由于Main与Console类是位于不同的包中,在Main类中要使用Console类,就必须使用cc.openhome.util.Console,这样就可以避免发生名称冲突问题
使用import偷懒
包管理解决了实体文档与撰写程序时类名称冲突的问题,但若每次撰写程序都得输入完全吻合名称,就太麻烦了。使用import,可以使编译器认识你调用的其他目录下的类。
inport和#include不同,无论原始码中有没有import,编译后的.class都是一样的,不会影响执行效能。所以简单地说import是偷懒工具,不能偷懒就回归最保守的写法
IDE
由IDE代劳一些原始码文档与位码文档等资源管理工作,可以提升效率。学长推荐使用IDEA,正在学习中~