欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

J2SE 四大技术体系与java跨平台,j2se四大java

来源: javaer 分享于  点击 16274 次 点评:45

J2SE 四大技术体系与java跨平台,j2se四大java


J2SE的四大重要技术

(1) Java 程序设计语言
(2) Java Class 文件格式
(3) Java 虚拟机
(4) Java 应用程序接口(Java API)

实际上,每一次Java版本的升级,其主要的变化就在Java 虚拟机和Java API上,通常这两大技术也称为Java运行时环境(JRE)。JDK5.0、JDK6.0等的区别也就在JRE上。

2、J2SE体系结构的优势以及代价

J2SE的体系结构使得Java更适应于网络。其最大的两个优势就是:平台无关性和网络移动性。这一点在其体系结构的各个技术上都有体现。
(1) Java class文件的优势体现
Java编译器并不能将Java编译成底层的二进制指令,而是编译成一种与底层平台无关的中间格式文件(.class)。 通常情况下不同硬件平台或操作系统的二进制指令时不能通用的。而.class文件是可以运行在任何支持Java虚拟机的硬件和操作系统上的。另外,class文件设计紧凑,可以快速的在网络上传输。
(2) Java API的 优势 体现
Java API是运行库的集合,它提供了一套访问主机系统资源的标准方法。运行Java程序时,虚拟机装在.class文件所使用的Java API class文件,并和所有已经加载的动态库(本地方法)共同组成Java虚拟机运行的整个程序。
Java API天生就和平台相关的。 不同平台的Java API和本地方法进行交互的方式可能不同,但是对Java应用程序的显示接口是完全一样的。这才保证了Java应用程序的平台无关性。
(3) Java 程序设计语言的 优势 体现
Java在语言也体现出一定的平台无关性。比如所有的基本数据类型所占用的字节大小都是固定的。另外Java语言也是一种非常通用、安全的语言。与C++不同,Java对内存的自动管理要强的多,也更加安全。比如放弃指针,而使用对象引用。使用垃圾回收机制而不是让程序员自己手动回收。
(4) Java虚拟机的优势体现
JVM也是一个软件,不同的平台有不同的版本。我们编写的Java源码,编译后会生成一种 .class 文件,Java虚拟机就是负责将字节码文件翻译成特定平台下的机器码然后运行。也就是说,只要在不同平台上安装对应的JVM,就可以运行字节码文件,运行我们编写的Java程序。
JVM是一个”桥梁“,是一个”中间件“,是实现跨平台的关键,Java代码首先被编译成字节码文件,再由JVM将字节码文件翻译成机器语言,从而达到运行Java程序的目的。

注意:编译的结果不是生成机器码,而是生成字节码,字节码不能直接运行,必须通过JVM翻译成机器码才能运行。不同平台下编译生成的字节码是一样的,但是由JVM翻译成的机器码却不一样。
跨平台的是Java程序,不是JVM。JVM是用C/C++开发的,是编译后的机器码,不能跨平台,不同平台下需要安装不同版本的JVM。

代价:
Java做到了不同硬件平台、不同操作系统的平台无关性要求。但却牺牲了Java在某些特定环境中使用的资格。在很多的大型IT公司,其后台开发或者算法设计方面都要求C/C++,而不是Java。
(1) Java的运行效率是一直被人攻击的问题。其根本原因就在于JVM需要先将class文件解释成系统平台能够运行的底层指令,再由底层平台运行。而这一过程肯定是要比直接运行编译好的底层指令要慢的多。当然,随着JIT(即时编译器)和自适应优化器的产生,使得JVM解释执行的过程效率提高了很多。使得Java与C在运行效率上的差距不再那么明显了,但是在要求极高的实时环境下,仍然还是不够的。
(2) Java的另外一个代价就在于内存管理和线程调度方面的缺陷。垃圾回收机制虽然使得开发效率提高了不少,但是你并不知道垃圾收集器什么时候开始回收垃圾。这一点对于很多需要海量数据处理,高性能的系统就很不适应。另外,JVM对线程调度的规范是十分笼统的,松散的规则有利于Java程序的移植,但却牺牲了很多特定环境下的效率。比如需要实时响应事件的软件。

总而言之,Java语言适合网络环境中的Web开发,但并不适合对运行性能和实时响应要求极高的后台系统。因此,如果还在Java和C++之间难以抉择的IT同行们,首先问问自己想干什么更加实际一些。

大量参考:J2SE 四大技术体系

相关文章

    暂无相关文章
相关栏目:

用户点评