上面详细解释了虚拟机的不同部分。我们通过一个具体的例子来分析一下它的执行过程。
虚拟机的启动是通过调用指定类的main方法,向main传递一个字符串数组参数,从而加载指定的类,并绑定和初始化该类使用的其他类型。例如,对于程序:
publicclassHelloApp{
publicstaticvoidmain(String[]args){
n("HelloWorld!");
for(inti=0;i<;i++){
n(args);
}
}
}
编译后,输入行模式命令:javaHelloApprunvirtualmachine
Java虚拟机将通过调用HelloAppmain方法来启动,并向main传递一个包含“run”、“virtual”和“machine”三个字符串的数组。现在我们描述虚拟机在运行HelloApp时可以遵循的步骤。
我开始尝试运行HelloApp类的main方法,发现该类还没有被加载,意味着虚拟机当前不包含该类的二进制表示,因此虚拟机使用ClassLoader来尝试找到这样的二元代表。如果此过程失败,则会引发异常。一旦加载了类,在调用main方法之前,HelloApp类必须链接到其他类型,然后进行初始化。装订涉及三个步骤:检查、准备和分析。该检查检查加载的主类的符号和语义。准备工作创建类或接口的静态字段,并将这些字段初始化为标准默认值。解析负责检查从主类到其他类或接口的符号引用。步骤,这是可选的。初始化一个类就是执行类中声明的静态初始化函数和静态字段的初始化构造函数。在初始化一个类之前,必须先初始化其父类。整个流程如下:
JAVA有什么技术特点?
Java是美国SUN公司(被Oracle公司收购)于1995年发明的。它是目前业界使用最广泛的语言,连续多年成为全球第一大语言,堪称“计算机语言世界中的英语”。
Java的哪些特性获得如此高的评价?
1.跨平台/可移植性
这是Java的主要优点。在开发Java时,非常重视可移植性和跨平台功能。示例:Java的int始终为32位。与C++不同,C++可以是16或32,它可以根据编译器制造商的规定而变化。这种情况下,转移程序会非常费力。
Java首先使用文本编辑器编写Java源程序,源文件的后缀为.java。然后它使用编译器(javac)将源程序编译为字节码文件。字节码文件的后缀是.class。最后利用虚拟机(解释器,Java)进行解释和执行。如下:
2.安全性
Java在安全性方面适合网络/分布式环境,为了让使用Java创建防病毒和防篡改系统变得更加容易。例如,Java已经消除了强大但危险的指针。因为指针可以进行移动操作,所以指针可以指向何内存区域,而不管该区域是否可用,这是危险的。
3.面向对象
面向对象是一种非常适合大型软件设计和开发的编程技术。由于C++兼容C来服务大量的C语言用户,所以就变成了只是有类的C语言,这多少影响了它面向对象的彻底性!Java是一种完全面向对象的语言。
4.简单
Java是C++语法的简化版本。我们也可以将Java称为“C++-”。跟着我说“C加加减”,意思是去掉C++的一些内容,例如:头文件、指针运算、结构体、联合、运算符重载、虚基类等。由于语法是基于C语言的,所以学习起来也完全不费力。
高性能
Java早期一直被诟病“性能低下”;客观地说,高级语言的运行效率总是低于低级语言的。这是无法避免的。Java语言本身的发展中,通过优化虚拟机,运行效率提升了数十倍。例如,JIT(JUSTINTIME)即时编译技术提高了运行效率。将一些“热”字节码编译为本机机器代码,缓存结果,并在需要时检索它们。这样,Java程序的执行效率大大提高,有些代码甚至接近C++的效率。
至此,Java性能低下的缺点就被彻底解决了。从行业发展来看,我们也看到很多C++应用已经转移到Java开发,很多C++程序员变成了Java程序员。
6.分布式
Java是为Internet的分布式环境而设计的,因为它可以处理TCP/IP协议。事实上,通过URL访问网络资源就像访问本地文件一样简单。Java还支持远程方法调用(RMI,RemoteMethodInitation),它允许程序通过网络调用方法。
7.多线程
使用多线程可以带来更好的交互响应和更好的实时行为。Java多线程的简单性是Java成为流行的服务器端开发语言的主要原因之一。
8.健壮性
Java是一种健壮性语言,它继承了C/C++语言的优点,但去掉了影响程序健壮性的部分(例如指针、内存)。申请、发布等)。Java程序不可能导致计算机崩溃。即使Java程序也可能有错误。如果发生意外情况,程序不会崩溃,而是抛出异常并通过异常处理机制进行处理。
以上特点你了解吗?记得点个赞哦!
当然,事情还没有结束。除了这些特性之外,Java还有一些其他特性,我将向您介绍!!
的风格在某种意义上与Java类似。不过,Java放弃了C和C++中容易出错且难以理解的指针、结构体和内存管理;
2Java是强类型语言,比C/C++有更多的检查,Java区分上层和下层小写字母;
禁止非法访问内存,因为Java没有指针,内存使用和共享;
4、Java虚拟机的存在决定了Java的可移植性;
提供自动垃圾回收机制gc,有效避免C、C++的内存泄漏问题;
记得点赞!
上一篇:怎么看电脑能不能加内存条
下一篇:java虚拟机是什么意思