2024-03-20 02:25:26 | 我爱编程网
java -version
echo %classpath%
echo %path%
echo %JAVA_HOME%
JDK安装完成之后我们来设置环境变量:
我的电脑点右键,选择“属性”,选择“高级”标签,进入环境变量设置,分别设置如下三个环境变量:
(1)设置好path变量,使得我们能够在系统中的任何地方运行java应用程序,比如javac、java、javah等等,这就要找到我们安装JDK 的目录,比如我们的JDK安装在C:\jdk1.6.0目录下,那么在C:\jdk1.6.0\bin目录下就是我们常用的java应用程序,我们就需要 把C:\jdk1.6.0\bin这个目录加到path环境变量里面。
在系统变量里找到path变量,选择->编辑;(里面已经有很多的变量值,是在变量值的最前面加上C:\jdk1.6.0\bin;)
变量名: path
变量值: C:\jdk1.6.0\bin;
(2)classpath环境变量,是当我们在开发java程序时需要引用别人写好的类时,要让java解释器知道到哪里去找这个类。通常,sun为我们 提供了一些额外的丰富的类包,一个是dt.jar,一个是tools.jar,这两个jar包都位于C:\jdk1.6.0\lib目录下,所以通常我们 都会把这两个jar包加到我们的classpath环境变量中set classpath=.;C:\jdk1.6.0\lib\tools.jar;C:\jdk1.6.0\lib\dt.jar。
在系统环境变量那一栏中点->新建classpath
变量名: classpath
变量值: .;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;(注意,CLASSPATH最前面是有个 “.”的,表示当前目录,这样当我们运行java AClass的时候,系统就会先在当前目录寻找AClass文件了。);
(3)设置JAVA_HOME:
一是为了方便引用,比如,JDK安装在C:\jdk1.6.0目录里,则设置JAVA_HOME为该目录路径, 那么以后要使用这个路径的时候, 只需输入%JAVA_HOME%即可, 避免每次引用都输入很长的路径串;
二则是归一原则, 当JDK路径改变的时候, 仅需更改JAVA_HOME的变量值即可!!!!!!!!!!, 否则,就要更改任何用绝对路径引用JDK目录的文档, 要是万一没有改全, 某个程序找不到JDK, 后果是可想而知的----系统崩溃!
三则是第三方软件会引用约定好的JAVA_HOME变量, 不然, 你不能正常使用该软件.
在系统环境变量那一栏中点->新建JAVA_HOME (JAVA_HOME指向的是JDK的安装路径)
变量名: JAVA_HOME
变量值: C:\jdk1.6.0
配置完成下面写一个简单的java程式来测试J2SDK是否已安装成功:
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello world!");
}
将程式保存为文档名为HelloWorld.java的文档。
打开命令提示符窗口,进入到HelloWorld.java所在目录,键入下面的命令
javac HelloWorld.java
java HelloWorld
此时若打印出来HelloWorld则安装成功,若没有打印出这句话,仔细检查以上配置是否正确。
如果您只是想在电脑上运行一个java程序,你先确定你的电脑上有没有安装java虚拟机。
如果没装的话,就到 java.sun.com上下载一个 jre就行了。
如果你是想学java程序开发,就到 java.sun.com 上下载一个jdk。
运行Java程序需要以下软件:
Java Development Kit(JDK):JDK是Java开发的核心工具集,包括了Java运行时环境(JRE)和Java开发工具(如编译器、调试器等)。要运行Java程序,首先需要安装JDK。
Java Runtime Environment(JRE):JRE是Java运行时环境,包含了Java虚拟机(JVM)和Java类库。安装JRE可以让你的计算机能够运行Java程序。
如果你需要进行Java开发,除了安装JDK和JRE外,还需要选择一个Java集成开发环境(IDE)来编写、调试和运行Java程序。以下是一些常用的Java IDE:
Eclipse:Eclipse是一个开放源代码的、基于Java的可扩展开发平台,附带了一个标准的插件集,包括Java开发工具(JDT)。
MyEclipse:MyEclipse是Eclipse的升级版,也是一款功能强大的J2EE集成开发环境,由Genuitec公司发布,提供免费版和收费版。
IntelliJ IDEA:IntelliJ IDEA是一款综合的Java编程环境,被许多开发人员和行业专家誉为市场上最好用的IDE之一,与MyEclipse齐名。
NetBeans:NetBeans IDE是一个屡获殊荣的集成开发环境,可以方便的在Windows、Mac、Linux和Solaris中运行。
BlueJ:BlueJ是一款支持Java编程语言的集成开发环境(IDE)。
Java程序从
源文件
创建到程序运行要经过两大步骤:1、源文件由
编译器
编译成字节码(ByteCode)
2、字节码由java虚拟机解释运行。因为java程序既要编译同时也要经过JVM的解释运行,所以说Java被称为半解释语言( "semi-interpreted" language)。
下面通过以下这个java程序,来说明java程序从编译到最后运行的整个流程。代码如下:
//MainApp.java
public class MainApp {
public static void main(String[] args) {
Animal animal = new Animal("Puppy");
animal.printName();
}
}
//Animal.java
public class Animal {
public String name;
public Animal(String name) {
this.name = name;
}
public void printName() {
System.out.println("Animal ["+name+"]");
}
}
第一步(编译): 创建完源文件之后,程序会先被编译为.class文件。Java编译一个类时,如果这个类所依赖的类还没有被编译,编译器就会先编译这个被依赖的类,然后引用,否则直接引用,这个有点象make。如果java编译器在指定目录下找不到该类所其依赖的类的.class文件或者.java源文件的话,编译器话报“cant find symbol”的错误。
编译后的字节码
文件格式
主要分为两部分:常量池和方法字节码。常量池记录的是代码出现过的所有token(类名,成员变量名等等)以及符号引用(方法引用,成员变量引用等等);方法字节码放的是类中各个方法的字节码。下面是MainApp.class通过反汇编的结果,我们可以清楚看到.class文件的结构:
第二步(运行):java类运行的过程大概可分为两个过程:1、类的加载 2、类的执行。需要说明的是:JVM主要在程序第一次主动使用类的时候,才会去加载该类。也就是说,JVM并不是在一开始就把一个程序就所有的类都加载到内存中,而是到不得不用的时候才把它加载进来,而且只加载一次。
下面是程序运行的详细步骤:
在编译好java程序得到MainApp.class文件后,在
命令行
上敲java AppMain。系统就会启动一个jvm进程,jvm进程从classpath路径中找到一个名为AppMain.class的二进制文件,将MainApp的类信息加载到运行时数据区的方法区内,这个过程叫做MainApp类的加载。
然后JVM找到AppMain的
主函数
入口,开始执行
main函数
。
main函数的第一条命令是Animal animal = new Animal("Puppy");就是让JVM创建一个Animal对象,但是这时候方法区中没有Animal类的信息,所以JVM马上加载Animal类,把Animal类的类型信息放到方法区中。
加载完Animal类之后,Java虚拟机做的第一件事情就是在堆区中为一个新的Animal实例分配内存, 然后调用
构造函数
初始化Animal实例,这个Animal实例持有着指向方法区的Animal类的类型信息(其中包含有方法表,java动态绑定的底层实现)的引用。
当使用animal.printName()的时候,JVM根据animal引用找到Animal对象,然后根据Animal对象持有的引用定位到方法区中Animal类的类型信息的方法表,获得printName()函数的字节码的地址。
开始运行printName()函数。
特别说明:java类中所有public和protected的实例方法都采用动态绑定机制,所有私有方法、静态方法、构造器及初始化方法都是采用静态绑定机制。而使用动态绑定机制的时候会用到方法表,静态绑定时并不会用到。
2024-03-02 02:58:47
2024-01-01 09:58:48
2024-01-26 10:37:53
2024-03-04 07:43:42
2024-01-17 23:29:33
2024-01-01 04:24:22