J2SE四大技术体系

原文地址:http://hxraid.iteye.com/blog/663203 作者:Heart.X.Raid


讲到Java,很容易就想到程序设计语言。实际上,Java技术包含的内容远不止一种编程语言怎么简单。通常说的J2SE(java 2 标准版)就是在全局上对Java技术的一种称呼。


1、J2SE技术体系结构

下图包含J2SE体系结构的全部重大相关技术,也描述了java程序运行不可缺少的过程。

 

要精通J2SE,必须对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虚拟机的优势体现

和Java API一样,JVM是平台相关的。如果Java程序需要访问本地资源的话,Java虚拟机是一定要调用本地方法的。也正是应为JVM的存在,才导致了Java平台无关性的优势。

 

代价:

Java做到了不同硬件平台、不同操作系统的平台无关性要求。但却牺牲了Java在某些特定环境中使用的资格。在很多的大型IT公司,其后台开发或者算法设计方面都要求C/C++,而不是Java。

(1).Java的运行效率是一直被人攻击的问题。其根本原因就在于JVM需要先将class文件解释成系统平台能够运行的底层指令,再由底层平台运行。而这一过程肯定是要比直接运行编译好的底层指令要慢的多。当然,随着JIT(即时编译器)和自适应优化器的产生,使得JVM解释执行的过程效率提高了很多。使得Java与C在运行效率上的差距不再那么明显了,但是在要求极高的实时环境下,仍然还是不够的。


(2).Java的另外一个代价就在于内存管理和线程调度方面的缺陷。垃圾回收机制虽然使得开发效率提高了不少,但是你并不知道垃圾收集器什么时候开始回收垃圾。这一点对于很多需要海量数据处理,高性能的系统就很不适应。另外,JVM对线程调度的规范是十分笼统的,松散的规则有利于Java程序的移植,但却牺牲了很多特定环境下的效率。比如需要实时响应事件的软件。

 

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

本书内容非常全面,涵盖了《Java编程思想》、《Java学习笔记》等书籍所有知识要点,并结合作者自己经验总结而编写,内容丰富程度胜过一切书籍 众所周知,一般书籍为了销售需要,往往很少的知识点,却需要添加大量的废话、例子,以增加书本厚度,使得阅读者需要花大量时间去看、理出要点,非常浪费时间,本电子书仅仅为了作者查阅资料用而编写,因此内容虽丰富,但却非常精简,结构清晰,语言简洁,非常易于理解,可大大节省了阅读者的学习时间,欢迎下载 目录: .....Java语言认识 ..........概述 ..........Java语言认识 ..........Java底层平台认识 .....JDK安装与配置 ..........安装JDK ..........设置环境变量 ..........虚拟机的内存 .....JDK工具使用 ..........javac.exe(编译) ..........java.exe(运行) ..........javadoc.exe(生成文档) ..........jar.exe(打包) ..........native2ascii.exe(转码) ..........apt.exe(注解处理工具) .....Java语法入门 ..........概述 ..........变量与数据类型 ..........标识符 ..........运算符 ..........控制台输入输出 ..........流程控制 ..........数组的使用 .....字符串和正则表达式 ..........字符串 ..........正则表达式 .....类和对象 ..........类的对象的使用 ..........自定义类 ..........自定义时使用修饰符 .....继承和多态 ..........继承(扩展) ..........多态 .....接口和抽象类 ..........接口和抽象类 ..........接口和抽象类相关设计模式 .....GUI(图形用户界面)和Applet ..........GUI_添加组件 ..........GUI_添加事件 ..........GUI_双缓冲作图 ..........Applet .....异常处理 ..........概述 ..........异常处理 ..........自定义异常 .....断言 ..........概述 ..........使用断言 .....枚举 ..........概述 ..........定义枚举 .....泛型 ..........概述 ..........定义泛型类 .....注解(Annotation) ..........概述 ..........注解的定义/使用/解析 .....I/O_体系 ..........认识IO ..........Java中的IO .....I/O_BIO ..........I/O流对象与使用 ..........文件相关类的使用 .....集合 ..........概述 ..........集合API .....线程 ..........概念 ..........操作线程 ..........线程安全-使用同步 ..........线程池-ThreadPoolExecutor .....反射 ..........概述 ..........Class类 ..........类的加载 ..........操作对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值