------- android培训、java培训、期待与您交流! ----------
黑马程序员-----java基础(一之java配置)
java概述:
1991年Sun公司的James Gosling等人开始开发名称为 Oak的语言,希望用于控制嵌入在有线电视交换盒、PDA等的微处理器;
1994年将Oak语言更名为Java;
Java的三种技术架构:
JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发;
JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础;
JAVAME:Java Platform Micro Edition,开发电子消费产品和嵌入式设备,如手机中的程序;
1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre。
2,JRE:Java Runtime Environment,java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)。
3,配置环境变量:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。
环境变量的配置:
1):永久配置方式:JAVA_HOME=%安装路径%\Java\jdk
path=%JAVA_HOME%\bin
2):临时配置方式:set path=%path%;C:\Program Files\Java\jdk\bin
特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。
classpath的配置:
1):永久配置方式:classpath=.;c:\;e:\
2):临时配置方式:set classpath=.;c:\;e:\
注意:在定义classpath环境变量时,需要注意的情况
如果没有定义环境变量classpath,java启动jvm后,会在当前目录下查找要运行的类文件;
如果指定了classpath,那么会在指定的目录下查找要运行的类文件。
还会在当前目录找吗?两种情况:
1):如果classpath的值结尾处有分号,在具体路径中没有找到运行的类,会默认在当前目录再找一次。
2):如果classpath的值结果出没有分号,在具体的路径中没有找到运行的类,不会再当前目录找。
一般不指定分号,如果没有在指定目录下找到要运行的类文件,就报错,这样可以调试程序。
4,javac命令和java命令做什么事情呢?
要知道java是分两部分的:一个是编译,编译是通过java自带的编译机JVM将.java一个是运行。
javac:负责的是编译的部分,当执行javac时,会启动java的编译器程序。对指定扩展名的.java文件进行编译。 生成了jvm可以识别的字节码文件。也就是class文件,也就是java的运行程序。
java:负责运行的部分.会启动jvm.加载运行时所需的类库,并对class文件进行执行.
一个文件要被执行,必须要有一个执行的起始点,这个起始点就是main函数.main函数也是一个线程。
小结:
这些知识使我知道了java语言是一种高级的编程语言。它与别的高级编程语言都是为了编写指令给计算机执行。都是需要将语言代码通过转译成为机器识别代码才能使计算机执行。然后我知道了java程序想要执行的话只需要JRE这个工具就可以了。JRE中有一个java自带的工具JVM可以解析.class文件中的代码将其转译成机器识别的二进制代码。由于不同操作系统平台上的JVM工具是不同的。Java语言也就实现了意义上的跨平台性。但这不是说程序员编写的java语言就都能在不同平台上运行。要多注意的是在编写.java文件的时候源代码中的某些特殊的字段在不同平台上的兼容性。比如Windows系统中的回车符是有\r\n。
而在uinx系统平台下是由\n表示的。
在我起初在DOS命令行中运行java代码的时候,经常会出现找不到类名的错误提示,java.lang.ClassNotFoundException而我明明是有这个类文件的啊,这是因为java虚拟机在加载.java源程序的时候是根据当前DOS命令行路径进行的加载。这时候set pahtclass= 指定类文件路径就能解决了。还有会碰到NoClassDefFoundErrorException in thread "main"这样的异常提示。(public class类名与文件名必须相同)因为我的文件名和类名不一样导致的。这些都是很简单的小问题,可是对于刚接触的我是有些摸不着方向。这是由于对java编译运行规则理解不深导致的。我在这建议跟我一样刚接触java的人们不要走弯路,一定要从根本入手。把java的运行编译一定理解透,碰到问题才好使用排除法来找到问题点在什么地方。无从入手是多么痛苦的事情啊想想。