Java虚拟机怎么使用?
java_home=...\jdk //你自己的JDK安装路径path=%java_home%\binclasspath=.;%java_home%\lib\tools.jar;%java_home%\lib\dt.jar先确保这些配置正确然后再编译执行你的文件javac xxx.javajava xxx虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。
Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。
Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
请问eclipse是必须运行在java虚拟机上吗?
没有自带jdk,先要自己下载个jdk,然后把它放在c盘或别的地方,点击jdk进入,里面有两个文件夹:分别是jdk……和jre……,注意,文件带有版本号,先要把它改为jre然后只把jre复制出来,放到你解压出来的eclipse软件的自带的eclipse文件夹目录里,然后就可以点击eclipse运行了 。
清楚吗?
java程序要在虚拟机里运行,那么在window下运行java编写的软件也要...
虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。
Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。
JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
Java虚拟机(Java Virtual Machine 简称JVM)是运行所有Java程序的抽象计算机,是Java语言的运行环境,它是Java 最具吸引力的特性之一Java虚拟机是Java语言底层实现的基础。
这有助于理解Java语言的一些性质,也有助于使用Java语言。
对于要在特定平台上实现Java虚拟机的软件人员,Java语言的编译器作者以及要用硬件芯片实现Java虚拟机的人来说,则必须深刻理解Java虚拟机的规范。
另外,如果你想扩展Java语言,或是把其它语言编译成Java语言的字节码,你也需要深入地了解Java虚拟机。
JAVA虚拟机的技术难度比操作系统难吗?
两者各有难点,个人觉得都很难,否则Sun就可以造一个和微软一样的操作系统, 而微软也可以造一个虚拟机来和Sun对抗, 事实上微软后来真的造了类似的东西出来, 微软为了把java程序员吸引到他的平台上来,就有了VJ++。
后来有了 C# 平台。
但都是没有像java那样做得专业。
Sun是没那么容易被打败的.所以你不觉得java的虚拟机还有点技术含量的吧? 哈哈 现在从技术细节上来分析: 1。
操作系统所面对的技术是有 内存管理、进程调度、设备管理等等等等 2。
相对于虚拟机,它相当于一个大管家,所有java做出来的应用,都先经过虚拟机,再由虚拟机转交给操作系统。
在这个意义上,虚拟机相当于一个大型软件,它可以管理其它的软件。
然而,在虚拟机下面也运行着大大小小的N个java程序,也需要对这些程序进行内存管理,进程的调度。
它为它下面的所有程序做好了内存安全机制,垃圾回收机制,try异常捕捉机制等等,(普通的C程序没有这些) 在这个意义上,虚拟机又像是一个操作系统; 补充楼主的补充: C语言的程序无法做到在一个平台上制作,代码拿到另一个平台编译后就可以运行! 最重要的原因是字节长度问题,如在32位机器上一个整数占4个字节,但在64位机器上就占8个字节。
这时程序编译就会出错。
一个字节占8位,所以32位有4个字节,所以32位机器每次进行操作的单位是4字节,而64位机器是8字节,这是速度明显快过32机的原因。
所以~~~~~~~ 很多在windowsXP下可以跑的游戏和软件在Windows Vista下去跑就会挂掉。
或者根本不给你安装. 虚拟机在这两年内是不太可能开源的,sun是有限制地进行了开源,他开源的是他的一部分Java编程语言, 你用这些java代码是开源的,用它们来制作软件,但是软件必须跑在虚拟机之上,虚拟机就不是开源的了。
也许过几年java会做一些虚拟机的开源项目出来,但现在还不会。
另一方面,sun也做了一些开源项目, 如收购的Hibernater,mySql,等等 Bea是不是由sun做的我不太清楚,不过看Bea和sun的关系还是很紧的,我想既使不是sun做的,那技术也来源于sun 在嵌入式开发界,有很多公司都己经在开发虚拟机,但这些只是sun的冰山一角。
这些虚拟机只能运行在手机、电视机顶盒等上面跑Kjava的 cdc和cldc程序 离sun的差距还挺大, 但过几年世界上也许会有新的sun公司出来. 呵呵,让我们拭目以待
什么是Java虚拟机?
展开全部 虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。
Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。
JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
这种解释应该算是正确的,但是只描述了虚拟机的外部行为和功能,并没有针对内部原理做出说明。
一般情况下我们不需要知道虚拟机的运行原理,只要专注写java代码就可以了,这也正是虚拟机之所以存在的原因--屏蔽底层操作系统平台的不同并且减少基于原生语言开发的复杂性,使java这门语言能够跨各种平台(只要虚拟机厂商在特定平台上实现了虚拟机),并且简单易用。
这些都是虚拟机的外部特性,但是从这些信息来解释虚拟机,未免太笼统了,无法让我们知道内部原理。
从进程的角度解释JVM 让我们尝试从操作系统的层面来理解虚拟机。
我们知道,虚拟机是运行在操作系统之中的,那么什么东西才能在操作系统中运行呢?当然是进程,因为进程是操作系统中的执行单位。
可以这样理解,当它在运行的时候,它就是一个操作系统中的进程实例,当它没有在运行时(作为可执行文件存放于文件系统中),可以把它叫做程序。
对命令行比较熟悉的同学,都知道其实一个命令对应一个可执行的二进制文件,当敲下这个命令并且回车后,就会创建一个进程,加载对应的可执行文件到进程的地址空间中,并且执行其中的指令。
下面对比C语言和Java语言的HelloWorld程序来说明问题。
首先编写C语言版的HelloWorld程序。
编译C语言版的HelloWorld程序: gcc HelloWorld.c -o HelloWorld运行C语言版的HelloWorld程序: zhangjg@linux:/deve/workspace/HelloWorld/src$ ./HelloWorld hello world gcc编译器编译后的文件直接就是可被操作系统识别的二进制可执行文件,当我们在命令行中敲下 ./HelloWorld这条命令的时候, 直接创建一个进程, 并且将可执行文件加载到进程的地址空间中, 执行文件中的指令。
作为对比, 我们看一下Java版HelloWord程序的编译和执行形式。
首先编写源文件HelloWord.java : 编译Java版的HelloWorld程序: 运行Java版的HelloWorld程序: zhangjg@linux:/deve/workspace/HelloJava/src$ java -classpath . HelloWorld HelloWorld从上面的过程可以看到, 我们在运行Java版的HelloWorld程序的时候, 敲入的命令并不是 ./HelloWorld.class 。
因为class文件并不是可以直接被操作系统识别的二进制可执行文件 。
我们敲入的是java这个命令。
这个命令说明, 我们首先启动的是一个叫做java的程序, 这个java程序在运行起来之后就是一个JVM进程实例。
上面的命令执行流程是这样的:java命令首先启动虚拟机进程,虚拟机进程成功启动后,读取参数“HelloWorld”,把他作为初始类加载到内存,对这个类进行初始化和动态链接(关于类的初始化和动态链接会在后面的博客中介绍),然后从这个类的main方法开始执行。
也就是说我们的.class文件不是直接被系统加载后直接在cpu上执行的,而是被一个叫做虚拟机的进程托管的。
首先必须虚拟机进程启动就绪,然后由虚拟机中的类加载器加载必要的class文件,包括jdk中的基础类(如String和Object等),然后由虚拟机进程解释class字节码指令,把这些字节码指令翻译成本机cpu能够识别的指令,才能在cpu上运行。
从这个层面上来看,在执行一个所谓的java程序的时候,真真正正在执行的是一个叫做Java虚拟机的进程,而不是我们写的一个个的class文件。
这个叫做虚拟机的进程处理一些底层的操作,比如内存的分配和释放等等。
我们编写的class文件只是虚拟机进程执行时需要的“原料”。
这些“原料”在运行时被加载到虚拟机中,被虚拟机解释执行,以控制虚拟机实现我们java代码中所定义的一些相对高层的操作,比如创建一个文件等,可以将class文件中的信息看做对虚拟机的控制信息,也就是一种虚拟指令。
编程语言也有自己的原理, 学习一门语言, 主要是把它的原理搞明白。
看似一个简单的HelloWorld程序, 也有很多深入的内容值得剖析。
JVM体系结构简介 为了展示虚拟机进程和class文件的关系,特意画了下面一张图: 根据上图表达的内容,我们编译之后的class文件是作为Java虚拟机的原料被输入到Java虚拟机的内部的,那么具体由谁来做这一部分工作呢?其实在Java虚拟机内部,有一个叫做类加载器的子系统,这个子系统用来在运行时根据需要加载类。
注意上面一句话中的“根据需要”四个字。
在Java虚拟机执行过程中,只有他需要一个类的时候,才会调用类加载器来加载这个类,并不会在开始运行时加载所有的类。
就像一个人,只有饿的时候才去吃饭,而不是一次把一年的饭都吃到肚子里。
一般来说,虚拟机加载类的时机,在第一次使用一个新的类的时候。
本专栏后面的文章会具体讨论Java中的类加载器。
由虚拟机加载的类,被加载到Java虚拟机内存中之后,虚拟机会读取并执行它里面存在的字节码指令。
虚拟机中执行字节码指令的部分叫做执行...
JAVA是什么软件?主要是干什么用的?
它是个面向网络的程序设计语言,用来让程序员创建应用程序,这些应用程序可以通过网络下载,而且可在任何计算平台上安全地运行。
如果再加上万维网和公司内部网体系,你将会拥有一个标准的网络计算环境,Java作为一个分布式的,面向对象的程序设计语言,可以让位于任何地方的任何计算机应用网络上的应用程序。
如果在商业角度看待Java,Java是个时髦话。
同不少已经有20年历史的其他程序设计语言相比,Java吸收了计算机科学领域的各种最新成果,另外一方面,由于Java还比较年轻,它缺少诸如Visual Basic 或C++那样的丰富的编程工具的支持。
同C++一样, Java是个面向对象的语言,这就意味着软件可以以部件的形式编制,为了满足某种任务,软部件可以互相配合。
运行Java,不必非得在网络环境中进行,Java同其他传统的诸如COBOL或 Basic这样的程序设计语言一样,可以创建独立运行的应用程序。
只不过Java对互联网上的应用开发更拿手。
Java适宜于互联网的开发应用,其中一个原因是它使用了虚拟机,虚拟机是个用来解释Java指令的软件包,可以让Java在任何机器上运行,比如有运行在Mac或 UNIX下的虚拟机软件包。
虚拟机并不是Java语言本身,它是个为特定机器编写的解释器软件。
Java的虚拟机策略就相当于世界语,这是个人造的国际语言,目的是使得不同语言之间的翻译和沟通更加容易。
要称作一个通用的计算机语言,Java是最适合不过的,这意味着它可以在所有的计算机上运行,(尽管需要为各种机器编写Java虚拟机软件),可以根据需要提供软部件,并且具有内在的安全机制。
用Java编写的操作系统,称为JavaOS,是个基于语言的操作系统,它看起来似乎没有机会来占据PC市场。
但是它为Microsoft Windows和MacOS未来的发展提供了线索。
它也许将来会应用到各种仪器设备中,包括电视遥控器和温控器。
基于网络的内容供应商对Java技术很感兴趣,因为它增加了交互性和动画功能,这是吸引观众的关键因素。
对于软件商来说, Java有希望可以让人们采用租用软件的方式,诸如字处理器或者电子表格软件,而无需购买软件,这就改变了目前的商业模式。
Java也使得网络计算机成为现实,无须硬盘的,价值500美元的PC 将可以取代Wintel 结构的计算机。
所有这一切都显出Java的重要性,它的支持者把它视作对付微软和盖茨的最后的和最好的希望,这就是为什么一些人对Java表现出狂热的崇拜的原因。
转载请注明出处51数据库 » java软件必须使用虚拟机吗
哥布拉Plus