本文目录一览:
java如何运行,从哪运行?
jdk安装好配置环境变量后,系统就承认了 java,javac等命令,当编译好java文件,就可以在开始——运行——cmd的dos系统下运用指定命令运行java文件。
JDK 是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。
JDK包含的基本组件包括:
javac – 编译器,将源程序转成字节码
jar – 打包工具,将相关的类文件打包成一个文件
javadoc – 文档生成器,从源码注释中提取文档
jdb – debugger,查错工具
java – 运行编译后的java程序(.class后缀的)
appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。 Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。 Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。 Jconsole: Java进行系统调试和监控的工具
总之,jdk并不是一个应运软件,并不能从哪里运行。编译时在任何可输入文本的软件中均可(通常用.txt记事本编译),编译好后改名.java文件,在dos系统中用 javac命令编译连接 java命令 .运行。
运行JAVA软件需要做什么?
1.安装JDK,安装过程中可以自定义62616964757a686964616fe78988e69d8331333332643230安装目录等信息,例如我们选择安装目录为D:\java\jdk1.5.0_08;
2.安装完成后,右击“我的电脑”,点击“属性”;
3.选择“高级”选项卡,点击“环境变量”;
4.在“系统变量”中,设置3项属性,JAVA_HOME,PATH,CLASSPATH(大小写无所谓),若已存在则点击“编辑”,不存在则点击“新建”;
5.JAVA_HOME指明JDK安装路径,就是刚才安装时所选择的路径D:\java\jdk1.5.0_08,此路径下包括lib,bin,jre等文件夹(此变量最好设置,因为以后运行tomcat,eclipse等都需要依*此变量);
Path使得系统可以在任何路径下识别java命令,设为:
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
CLASSPATH为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别,设为:
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar (要加.表示当前路径)
%JAVA_HOME%就是引用前面指定的JAVA_HOME;
6.“开始”-;“运行”,键入“cmd”;
7.键入命令“java -version”,“java”,“javac”几个命令,出现画面,说明环境变量配置成功;
8.好了,打完收工。下面开始你的第一个java程序吧。
下面讲讲java几个环境变量的含义和linux下的配置方法:
通常,我们需要设置三个环境变量:JAVA_HOME、PATH 和 CLASSPATH。
JAVA_HOME:该环境变量的值就是 Java 所在的目录,一些 Java 版的软件和一些 Java 的工具需要用到该变量,设置 PATH 和 CLASSPATH 的时候,也可以使用该变量以方便设置。
PATH:指定一个路径列表,用于搜索可执行文件的。执行一个可执行文件时,如果该文件不能在当前路径下找到,则依次寻找 PATH 中的每一个路径,直至找到。或者找完 PATH 中的路径也不能找到,则报错。Java 的编译命令 (javac),执行命令 (java) 和一些工具命令 (javadoc, jdb 等) 都在其安装路径下的 bin 目录中。因此我们应该将该路径添加到 PATH 变量中。
CLASSPATH:也指定一个路径列表,是用于搜索 Java 编译或者运行时需要用到的类。在 CLASSPATH 列表中除了可以包含路径外,还可以包含 .jar 文件。Java 查找类时会把这个 .jar 文件当作一个目录来进行查找。通常,我们需要把 JDK 安装路径下的 jre\lib\rt.jar (Linux: jre/lib/rt.jar) 包含在 CLASSPATH 中。
PATH 和 CLASSPATH 都指定路径列表,列表中的各项 (即各个路径) 之间使用分隔符分隔。在 Windows 下,分隔符是分号 (;),而在 Linux 下,分隔符是冒号 (:)。
下面分别说明三个环境变量在 Windows 和 Linux 下如何设置,不过在此之前,我们需要做个假设。假设 JDK 在 Windows 下的安装路径是 C:\jdk\,在 Linux 下的安装路径是 /usr/local/jdk/。那么,安装后的 JDK 至少会包括如下内容:
C:\jdk (/usr/local/jdk)
|-- bin
|-- demo
|-- include
|-- jre
| |-- bin
| `-- lib
`-- lib
***** 在 Windows 下设置
Windows 下使用 set 命令设置环境变量,为了使每一次启动计算机都设置这些环境变量,应该在系统盘根目录下的 autoexec.bat 文件中进行设置,如:
set JAVA_HOME=C:\jdk
set PATH=%JAVA_HOME%\bin;C:\Windows;C:\Windows\Command
set CLASSPATH=%JAVA_HOME%\jre\lib\rt.jar;.
有些版本的 Windows 不能用 %变量名% 来替换环境变量的内容,那么就只好直接写 C:\jdk 而不是 %JAVA_HOME% 了。另外,C:\Windows 和 C:\Windows\Command 是 Windows 会自动加入路径的,所以可以从设置中去掉。如果在 autoexec.bat 中已经设置了 PATH,那只需要将 %JAVA_HOME%\bin 加到原来设置 PATH 的那条语句中就行了。
CLASSPATH 也可以根据需要设置或者加入其它的路径,比如你想把自己写的一些类放在 C:\java 中,就可以把 C:\java 也添加到 CLASSPATH 中去,set CLASSPATH=%JAVA_HOME%\jre\lib\rt.jar;C:\java;.。
注意,在 CLASSPATH 中包含了一个“当前目录 (.)”。包含了该目录后,就可以到任意目录下去执行需要用到该目录下某个类的 Java 程序,即使该路径并未包含在 CLASSPATH 中也可以。原因很简单:虽然没有明确的把该路径包含在 CLASSPATH 中,但 CLASSPATH 中的 “.” 在此时就代表了该路径,如:
假设在 C:\java 目录下有可运行的类 HelloJava.class,那么
C:\ set CLASSPATH=C:\jdk\jre\lib\rt.jar;. // 设置 CLASSPATH 环境变量,注意最后有一个 “.”
C:\ cd java // 转到 C:\java 目录
C:\java java HelloJava // 运行 HelloJava
Hello, Java. // 运行结果
C:\java _
**** 在 Linux 下设置
Linux 下使用“变量名=变量值”设置变量,并使用 export 命令将其导出为环境变量。为了使每一次登录都自动设置好这些变量,你需要在 ~/.bash_profile 里或者 ~./bashrc 里进行设置,如
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/jre/lib/rt.jar:.
设置 PATH 时用的 $JAVA_HOME 是指替换变量 JAVA_HOME 的值到 $JAVA_HOME 所在位置。如上句实际就是 export PATH=/usr/local/jdk/bin:$PATH。这句中 $PATH 也是同样的作用,不过这里的 PATH 是指以前设置的 PATH 变量的值,而非本次设置 PATH 变量的值。
注意,在 CLASSPATH 中包含了一个“当前目录 (.)”。包含了该目录后,就可以到任意目录下去执行需要用到该目录下某个类的 Java 程序,即使该路径并未包含在 CLASSPATH 中也可以。原因很简单:虽然没有明确的把该路径包含在 CLASSPATH 中,但 CLASSPATH 中的 “.” 在此时就代表了该路径,例如
假设在 /home/fancy/java 目录下有可运行的类 HelloJava.class,那么
[fancy@matrix fancy]$ export CLASSPATH=/usr/local/jdk/jre/lib/rt.jar:. // 设置 CLASSPATH,注意最后的“.”
[fancy@matrix fancy]$ cd ~/java // 转到 /home/fancy/java
[fancy@matrix java]$ pwd // 显示当前目录
/home/fancy/java // 当前目录是 /home/fancy/java
[fancy@matrix java]$ java HelloJava // 运行 HelloJava
Hello, Java // 运行结果
[fancy@matrix java]$ _
析
***** 实例分析
只是操作系统不同,略有差别。
两个例子都提到一个“可运行的类”,它是指包含了 public static void main(String[] args) 方法的类,这将在下一章 HelloJava 一节中详述。例中的 CLASSPATH 均未包含 HelloJava.class 所在的目录(C:\java, /home/fancy/java),但是均包含了当前目录 (.)。因此转到包含 HelloJava.class 的目录下去执行 java HelloJava,在 Java 寻找到 CLASSPATH 中的“. (当前目录,C:\java, /home/fancy/java)”时,找到了 HelloJava.class,运行成功。
java程序运行的五个步骤
1、Java程序从源文件创建到程序运行要经过两大步骤:1、源文件由编译器编译成字节码(ByteCode) 2、字节码由java虚拟机解释运行。因为java程序既要编译同时也要经过JVM的解释运行,所以说Java被称为半解释语言( "semi-interpreted" language)。
第一步(编译): 创建完源文件之后,程序会先被编译为.class文件。Java编译一个类时,如果这个类所依赖的类还没有被编译,编译器就会先编译这个被依赖的类,然后引用,否则直接引用,这个有点像make。如果java编译器在指定目录下找不到该类所其依赖的类的.class文件或者.java源文件的话,编译器话报“cant find symbol”的错误。
编译后的字节码文件格式主要分为两部分:常量池和方法字节码。常量池记录的是代码出现过的所有token(类名,成员变量名等等)以及符号引用(方法引用,成员变量引用等等);方法字节码放的是类中各个方法的字节码。
第二步(运行):java类运行的过程大概可分为两个过程:1、类的加载 2、类的执行。需要说明的是:JVM主要在程序第一次主动使用类的时候,才会去加载该类。也就是说,JVM并不是在一开始就把一个程序就所有的类都加载到内存中,而是到不得不用的时候才把它加载进来,而且只加载一次。
2、下面是程序运行的详细步骤:
在编译好java程序得到Main.class文件后,在命令行上敲java Main。系统就会启动一个jvm进程,jvm进程从classpath路径中找到一个名为Main.class的二进制文件,将Main的类信息加载到运行时数据区的方法区内,这个过程叫做Main类的加载。
然后JVM找到Main的主函数入口,开始执行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()函数。