您的位置:首页 > 编程语言 > Java开发

java中的jdk和jre

2013-05-15 14:31 148 查看
jdk和jre的区别:

jdk:java开发工具包,面向开发人员。里面包含了各种类库和工具。当然也包括了一个jre。这个jre中包含了client和server两个JVM。jdk/bin目录下是编译java文件时要用的命令。jdk/lib目录下编译java文件时要用到类库。

jre:java运行环境,面向用户(非开发人员)。既然要运行,当然要包含bin/client/jvm.dll,jvm是通过bin/java.exe启动的。lib目录下是java标准类库的class文件。

java文件先要被编译器编译成.class文件,再由JVM执行。java文件的编译是通过jdk/bin/javac.exe执行的。编译后的class文件是是二进制指令,不是机器指令,java虚拟机可以识别这些二进制指令。这样class文件就有了可移植性。可以把class文件拿到windows、Linux等不同的操作系统上通过java虚拟机执行。jre/bin/java.exe只是启动jvm,jvm负责对class文件的内容进行处理。将字节码文件解释成机器指令后执行。

要想在系统上运行java文件,首先要配置环境变量。JAVA_HOME的配置是为了找到java命令。PATH的配置是为了找到javac的命令。CLASSPATH的配置是为了找到class文件,以及运行该class文件时要用到其他的class文件和配置文件。

eclipse通常是自动编译java文件的。当你创建好一个java类时,eclipse会自动编译一次,之后在每次修改这个文件单击保存或CTRL+S时都会自动编译。如果工程项目较大,电脑配置较低,而且工程需要经常保存的情况下,就可以选择取消自动编译----勾掉Project--Build Automatically前面的对号,然后执行Project--Clean....在弹出的对话框中选择要编译的项目。

下面是在Linux下运行某个class文件之前要做的准备工作

if [ "$INDEX_JAVA_HOME" != "" ]; then

echo "run java in $INDEX_JAVA_HOME"

JAVA_HOME=$INDEX_JAVA_HOME

fi

if [ "$JAVA_HOME" = "" ]; then

  JAVA_HOME=/usr/lib/jvm/java-6-openjdk    //jre的安装目录

fi

JAVA=$JAVA_HOME/bin/java            //找到启动jvm的java.exe

JAVA_HEAP_MAX=-Xmx1024m      //设置jvm的最大内存 ,-Xms是jvm的初始化内存大小

如果jvm内存不够时,会出现Exception in thread "main" java.lang.OutOfMemoryError: Java heap space异常

#check envvars which might override default args

if [ "$INDEX_HEAPSIZE" != "" ]; then

echo "run with heapsize $INDEX_HEAPSIZE"

JAVA_HEAP_MAX="-Xmx""$INDEX_HEAPSIZE""m"

echo $JAVA_HEAP_MAX

fi

# CLASSPATH initially contains $NUTCH_CONF_DIR, or defaults to $NUTCH_HOME/conf

CLASSPATH=${NUTCH_CONF_DIR:=$NUTCH_HOME/conf}     //用到了参数置换功能

IFS=

#add libs to CLASSPATH

for f in $INDEX_HOME/lib/*.jar;do            //配置CLASSPATH

 CLASSPATH=${CLASSPATH}:$f;

done

unset IFS

在设置CLASSPATH或PATH时,jar(class)间,windows下用分号隔开,Linux下用冒号隔开

CLASS=com.fujitsu.cgm.indexer.PageIndexer

exec "$JAVA" $JAVA_HEAP_MAX -classpath "$CLASSPATH" $CLASS    //启动jvm,运行class文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: