[Java]Java简介
Java版本历史
- 1995年5月23日,Java语言诞生
- 1996年1月,第一个JDK1.0诞生
- 1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入JAVA技术
- 1996年9月,约8.3万个网页应用了JAVA技术来制作
- 1997年2月18日,JDK1.1发布
- 1997年4月2日,JavaOne会议召开,参与者逾一万人,创当时全球同类会议规模之纪录
- 1997年9月,JavaDeveloperConnection社区成员超过十万
- 1998年2月,JDK1.1被下载超过2,000,000次
- 1998年12月8日,JAVA2企业平台J2EE发布
- 1999年6月,SUN公司发布Java的三个版本:标准版(J2SE)、企业版(J2EE)和微型版(J2ME)
- 2000年5月8日,JDK1.3发布
- 2000年5月29日,JDK1.4发布
- 2001年6月5日,NOKIA宣布,到2003年将出售1亿部支持Java的手机
- 2001年9月24日,J2SE1.3发布
- 2002年2月26日,J2SE1.4发布,自此Java的计算能力有了大幅提升
- 2004年9月30日18:00PM,J2SE1.5发布,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE1.5更名为Java SE 5.0
- 2005年6月,JavaOne大会召开,SUN公司公开Java SE 6。此时,Java的各种版本已经更名,以取消其中的数字“2”:J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME
- 2006年12月,SUN公司发布JRE6.0
- 2009年12月,SUN公司发布Java EE 6
- 2010年11月,由于Oracle公司对于Java社区的不友善,因此Apache扬言将退出JCP
- 2011年7月28日,Oracle公司发布Java SE 7
- 2014年3月18日,Oracle公司发表Java SE 8
2、Java平台:
广泛地说,只要能执行Java bytecode者,就可以称为Java 平台(Java platform)。大致上,实现Java平台(implementations of the Java SE platform)的方式有三种,分别是:
- Java虚拟机器(Java Virtual Machine,JVM)
- Java操作系统(Java Operating System)
- Java芯片(Java Chip)
以下就此三种Java平台提出解说,并比较之。
2.1、Java虚拟机器:
所谓的Java虚拟机器,指的是在操作系统上执行的一种程序,此程序可以解读Java 字节码(bytecode),并在操作系统的帮助下执行Java 字节码。这样的执行架构,大致上可以分成四层,分别是:
- 第一层(最上层)的Java bytecode
- 第二层的Java虚拟机器
- 第三层的操作系统
- 第四层(最底层)的芯片
芯片执行上面的操作系统,操作系统执行上面的Java虚拟机器,Java虚拟机器执行上面的Java bytecode。对于Java bytecode来说,它只接触到Java虚拟机器,所以当然“误以为”Java 虚拟机器就是它的平台。
实例:Pentium III Chip + Windows 2000 OS + Sun HotSpot Client VM + Together/ Java pplication。
2.2、Java 操作系统:
如果把Java虚拟机器整合进既有的操作系统中(例如:Mac OS X),或是打造一个全新的操作系统专门执行Java bytecode(例如:JOS),这类能直接执行Java bytecode的操作系统也可视为Java平台。这样的执行架构,大致上可以分成三层,分别是:
- 第一层(最上层)的Java bytecode
- 第二层的 Java 操作系统
- 第三层(最底层)的芯片
2.3、Java 芯片:
如果把Java操作系统和既有的芯片整合起来成为一组新的芯片(例如:ARM 7、ARM 9),或者打造一个全新的Java专用芯片(例如:aJile aJ-100)那么此一种类的芯片也是Java平台。这样的执行架构,大致上可以分成两层,分别是:
- 第一层(最上层)的Java bytecode
- 第二层(最底层)的Java 芯片
三种方式的比较
这三种都是 Java 平台,各有优缺点,很难说那一种方式比较好,必须看你的需求而定。
透过虚拟机器来执行Java是最常见的架构方式,一方面是因为虚拟机器的Java平台最容易被实作出来(相较于Java操作系统和Java芯片 而言),二方面是因为只要有虚拟机器就可以让在不更动实体平台(操作系统和CPU)的情况下多了执行Java程序的功能。目前,多数主流的实体平台(包括 Windows、Linux、Mac、Solaris、PalmOS、EPOC...)都已经有Java虚拟机器了。
虚拟机器的架构因为分了太多层级,所以效率上当然会比较差,这是虚拟机器架构最为人所抨击的地方。但是由于虚拟机器的技术一直在进步,所以执行 效率一直都有持续的提升。目前已经相当逼近Java操作系统的架构方式,所以虚拟机器的方式应该会继续成为PC上的Java平台主流。
一般来说,透过Java操作系统来执行Java bytecode,效率会比虚拟机器的方式好。所以Java虚拟机器被整合进操作系统中,来提升该操作系统的附加价值,这种作法有可能会成为一种趋势(例 如MacOS X就把 Java和操作系统作了很好的整合)。但如果设计一套只能执行Java的全新操作系统,可能不容易成功,因为全新的操作系统势必面临驱动程序 (device driver)不足的严重困扰。因为此原因,加上事实证明操作系统的Java平台,比虚拟机器的Java平台效率提升不如预期多,所以IBM和Sun合作 的纯Java操作系统“JavaOS”计划已经停摆。
利用芯片的方式来实作Java平台,对于Java程序的执行速度会有很大的提升,毕竟硬件的速度比软件快许多。这种方式以后会成为嵌入式系统的 主流,许多Java的IA产品(例如:Set-Top Box)都会开始使用 Java芯片。但是这种方式已经把Java整个变成硬件平台,不适合再称为跨平台了。
[Java]Java简介的更多相关文章
- Java SE 简介 & 环境变量的配置
Java SE 简介 & 环境变量的配置 一.Java 技术的三个方向 Java 技术分为三个方向 javaSE( Java Platform Standard Edition 标准版)用来开 ...
- Java异常(一) Java异常简介及其架构
概要 本章对Java中的异常进行介绍.内容包括:Java异常简介Java异常框架 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3544168.html ...
- 一、Android NDK编程预备之Java jni简介
转自: http://www.eoeandroid.com/thread-264384-1-1.html 游戏开发 视频教程 博客 淘帖 论坛›eoe·Android应用开发区›Androi ...
- Java RMI 简介及其优劣势总结
今天,帮别人看UDAS配置问题时,看到采用的是RMI方式的调用,如:rmi://10.20.134.140:2299/DataServer,而且这个端口是被直接硬编码在UDAS的代码中的.既然看到了, ...
- Java多线程简介
Java多线程简介 Java中内置了对多线程的支持,让多线程的开发方便很多,但同时也带来了另外的复杂,线程间的交互以及很多的不确定性让多线程又显得很复杂.在此只是针对Java中多线程的基础做些说明,有 ...
- Java异常简介、异常捕获还是上抛总结
概要 本章对Java中的异常进行介绍.内容包括:1.Java异常简介2.Java异常框架 一.Java异常简介 Java异常是Java提供的一种识别及响应错误的一致性机制. Java异常机制可以使程序 ...
- Java Script 简介
Java Script 简介 JavaScript 是世界上最流行的编程语言. 这门语言可用于 HTML 和 web,更可广泛用于服务器.PC.笔记本电脑.平板电脑和智能手机等设备.JavaScrip ...
- Java NIO系列教程(一)java NIO简介
这个系列的文章,我们开始玩一玩IO方面的知识,对于IO和NIO,我们经常会接触到,了解他们的基本内容,对于我们的工作会有特别大的帮助.这篇博文我们仅仅是介绍IO和NIO的基本概念,以及一些关键词. 基 ...
- Java异常(一)Java异常简介及其框架
Java异常(一)Java异常简介及其框架 概要 本章对Java中的异常进行介绍.内容包括:Java异常简介Java异常框架 Java异常简介 Java异常是Java提供的一种识别及响应错误的一致性机 ...
- java设计模式简介
设计模式简介: 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用.设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案.这些解决方案是众多 ...
随机推荐
- 开机使用root用户登录
有的fedora版本默认不支持开机以root用户登录,这是出于安全机制的考虑,可以通过设置实现开机root用户登录 步骤: 1.修改.etc/pam.d/gdm文件,注释掉auth pam_succ ...
- Hbase之取出行数据指定部分+版本控制(类似MySQL的Limit)
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.CellScanner; import org. ...
- Windows菜单
目录 第1章 Windows菜单 1 1.1 窗口菜单和弹出菜单 1 1.2 使用SetMenu 2 1.3 使用TrackPopupMenu 4 第1章 Windows菜单 ...
- Controller简介
Controller控制器,是MVC中的部分C,为什么是部分呢?因为此处的控制器主要负责功能处理部分: 1.收集.验证请求参数并绑定到命令对象: 2.将命令对象交给业务对象,由业务对象处理并返回模型数 ...
- ASP.NET页面与IIS底层交互和工作原理详解
转载自:http://www.cnblogs.com/lidabo/archive/2012/03/13/2393200.html 第一回: 引言 我查阅过不少Asp.Net的书籍,发现大多数作者都是 ...
- webstorm激活码
2016.2.3版本 43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTczWVlKIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZW ...
- 《Java程序设计》第四周学习总结
20145224-陈颢文 <Java程序设计>第四周学习总结 教材学习内容总结 第六章 继承与多态 ·继承就是面向对象中,子类继承父类,避免重复的行为定义.重复再程序设计上是非常不好的信号 ...
- js-- 一些题目
1. ~~3.14~~3.14=-((~3.14)+1)=-(-(3.14+1)+1)=-(-(3+1)+1)=-(-4+1) =-(-3)=3 按位非(NOT)(~)操作数的负值减1. 2. var ...
- MyBatis实体类映射文件模板
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC " ...
- python中列表的操作
list1 = ['A' , 'B' , 'C'] list1[0] ; list1[-1] # 取第一个和最后一个元素 list1[ : ] ; list1[ : len(list1)] # 取所有 ...