jdk jre sdk jvm...

工作了很长时间了..今天突然对java的执行原理和jdk感兴趣了..以前也没有好好总结过..得了趁这个机会好好总结总结...希望来着留言给点建议:thanks a lot

一、 SDK(Software Develop Kit,软件开发工具包)
    用于帮助开发人员的提高工作效率。各种不同类型的软件开发,都可以有自己的SDK。Windows有Windows SDK ; DirectX 有 DirectX 9 SDK ; .NET开发也有Microsoft .NET Framework SDK. JAVA有自己的Java SDK。

二、 JDK(Java Develop Kit)
     原名:Java SDK(Java Software Develop Kit),Java的开发工具包,主要用于开发在Java平台上运行的应用程序、Applet 和组件等。是一切java应用程序的基础,所有的java应用程序是构建在jdk上的(在jdk的基础上开发的)。它是用java编写的一组api

三、JRE(Java Runtime Environment,Java运行环境)
    也就是Java平台。所有的Java程序都要在JRE下才能运行。JDK的工具也是Java程序,也需要JRE才能运行。为了保持JDK的独立性和完整性,在JDK的安装过程中,JRE也是安装的一部分。所以,在JDK的安装目录下有一个名为jre的目录,用于存放JRE文件,这个jre是用来运行jdk里面的java程序所用的。一般在C:\Program Files\Java目录下还有一个jre他是用来为运行开发者编写的java程序而用的。

为什么Sun要让JDK安装两套相同的JRE?
这是因为JDK里面有很多用Java所编写的开发工具(如javac.exe、 jar.exe等),而且都放置在 \lib\tools.jar 里。从下面例子可以看出,先将tools.jar改名为tools1.jar,然后运行javac.exe,显示如下结果: Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/tools/javac /Main 这个意思是说,你输入javac.exe与输入 java -cp c:\jdk\lib\tools.jar com.sun.tools.javac.Main 是一样的,会得到相同的结果。从这里我们可以证明javac.exe只是一个包装器(Wrapper),而制作的目的是为了让开发者免于输入太长的指命。而且可以发现\lib目录下的程序都很小,不大于2 9K,从这里我们可以得出一个结论。就是JDK里的工具几乎是用Java所编写,所以也是Java应用程序,因此要使用JDK所附的工具来开发Java程序,也必须要自行附一套JRE才行,所以位于C:\Program Files\Java目录下的那套JRE就是用来运行一般Java程序用的。

四、 JVM(Java Virtual Machine,Java虚拟机)是JRE的一部分。它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言最重要的特点就是跨平台运行。使用JVM就是为了支持与操作系统无关,实现跨平台。
所以,JAVA虚拟机JVM是属于JRE的,而现在我们安装JDK时也附带安装了JRE(当然也可以单独安装JRE)。

java编译原理:
其实java最大的优点就是可以跨平台吧,但为什么可以跨平台呢?有没有太多的人去关注呢?
其实java的源文件编译都会通过JVM,生成一个任何操作系统都可以识别的文本文件,就是这个原因,所以java是可以跨平台的.同时也是这种原因,java的安全性会高于其它任何编程语言.因为系统给我们提供的是编译后的文件,而真正的源文件我们是无法看到的,因此,java的安全性要高于任何编程语言 【位置真假】

最后在解释一遍:编译器和编辑器是不一样的...
编译器javac
编辑器:eclipse , Idea 但是他们内部的编译工具是不一样的

jdk的安装图解:
http://blog.csdn.net/tangzhiyou_2008/archive/2010/04/25/5526331.aspx

你可能感兴趣的:(java,jvm,jdk,编程,虚拟机)