博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
概述(一):java概述
阅读量:5305 次
发布时间:2019-06-14

本文共 2936 字,大约阅读时间需要 9 分钟。

Java概述

java技术体系:

  环境:

  • JDjava程序开发的最小环境
    • java程序设计语言
    • java虚拟机
    • javaAPI类库
  • JRE:支持java程序运行的标准环境

    • javaSEAPI子集

    • java虚拟机

javaCard:支持java程序运行在小内存设备上的平台(智能卡)。

javaME:支持java程序运行在移动终端上的平台(手机、PDA)。

javaSE:支持java程序面上桌面级应用的平台(Windows下的应用程序)。

javaEE:支持使用多层架构的企业级应用(ERP、CRM应用)。

Java语言发展史

  • 1991-4:java语言的前身 JamesGosling领导的开始启动绿色计划Oak(开发一种能够在各种消费性电子产品上运行程序的架构:机顶盒,冰箱)。
  • 1995-5-23:java诞生:Java1.0发布,Oak改名java,提出一次编写,到处运行
  • 1996-1-23:JDK1.0发布:提供纯解释执行的java虚拟机、Applet、AWT等
  • 1997-2-19:JDK1.1发布:JAR文件格式、JDBC、JavaBeans、RMI、内部类、反射。
  • 1999-4-8:JDK1.1.0-JDK1.1.8发布
  • 1998-12-4:JDK1.2发布:拆分3个技术体系:J2SE、J2EE、J2ME,java虚拟机第一次内置JIT编译器。添加strictfp关键字,Collections集合类。
  • 1999-4-27:HotSpot发布。
  • 2000-5-8:JDK1.3发布。JNDI为平台及服务提供。使用CORBA_IIOP实现RMI通信协议。增加JavaSound类库。
  • 2002-2-13:JDK1.4发布。正则表达式、异常链、NIO、日志类、XML解析器、XSLT转换器。
  • 2004-9-30:JDK1.5发布。自动装箱、泛型、动态注解、枚举、可变参数、遍历循环(foreach循环),改进java内存模型。提供java.util.concurrent并发包。
  • 2006-12-11:JDK1.6发布。提供动态语言支持(通过内置Mozilla_JavaScript_Rhino引擎),提供编译API和微型HTTP服务器API。Java虚拟机内部改进:锁与同步、垃圾收集、类加载
  • 2011-7-28:JDK1.7发布:提供G1收集器、加强对非java语言的调用支持(JSR-292,目前没有完全实现),升级类加载架构。

Java虚拟机发展史

  • Sun Classic VM:JDK1.0使用,世界上第一款商用Java虚拟机,只能用纯解释器的方式来执行Java代码,

如果要使用JIT编译器,必须使用外挂(但是如果外挂了JIT编译器,JIT编译器就完全接管了虚拟机的执行系统,解释器便不再工作了),

其中sunwjit就是sun提供的外挂编译器。
如果使用了编译器执行,每一个方法,每一行代码都进行编译。无论他们执行的频率是否具有编译的价值。Java虚拟机很慢的信息就是在这时候开始在用户中心树立起来的。

  • ExactVM:具备现代高性能虚拟机的雏形:两级即时编译器、编译器和解释器混合工作。使用准确式内存管理。

如内存中有一个32位的整数123456,到底是一个reference类型指向123456的内存地址还是一个123456的整数,虚拟机有能力分辨,抛弃以前Classic VM基于Handler的对象查找方式,每次定位对象都少了一次间接查抄的开销,提升执行性能

  • Sun HotSpot VM:最初由LongviewTechnologies设计,在1997年由Sun公司收购。HotStop指它的热点代码探测技术,可以通过执行计数器找出最具有编译价值的代码,然后通知JIT编译器以方法为单位进行编译。如果一个方法或方法中有效循环次数很多,将会分别处罚标准编译和OSR(栈上替换)编译动作:通过编译器和解释器协同工作,可以在最优化的程序响应时间与最佳执行性能中取得平衡,而且无需等待本地代码输出才能执行程序,即时编译的时间压力也相对减小,这样有助于引入更多的diamante优化技术,输出质量更高的本地代码。
  • KVM:简单,清凉,高度可移植,运行速度较慢。用于Android、IOS等手机操作系统出现前的手机平台
  • CDC/CLDC:JavaME重要支柱,在手机,电子书,PDA等设备上建立统一的java编程接口。
  • Squawk VM:运行于SunSPOT(一种手持的WIFI设备),也曾用于JavaCard。Java代码比重很高的嵌入式虚拟机实现。如:类加载器,字节码验证器,垃圾收集器,解释器,编译器,线程调度。
  • JavaInJava:Java语言实现Java本身的运行环境,即元循环(指语言自身来实现其运行环境),必须运行在另外一个宿主虚拟机上,内部没有JIT编译器。代码只能以解释器模式运行
  • Maxine VM:和JavaInJava相似,只有勇于启动JVM加载器使用C语言编写。有先进的JIT编译器和垃圾收集器,么有解释器,可在宿主模式或独立模式下执行,执行效率接近HotStop Client VM水平。
  • JRockit:曾经号称世界上速度最快的Java虚拟机、专注于服务端(服务器硬件和服务器应用场景),程序启动速度较慢,内部不包含解释器实现,全部代码靠即时编译器编译后执行。
  • J9VM:最初由IBMSmallTalk虚拟机拓展来,当时有一个bug是由8k值定义引起的,后来解决了这个错误,这个版本的虚拟机称为K8,后来扩展支持Java的虚拟机,称为J9。他的主要市场是和IBM产品搭配以及在AIX和z/OS平台上部署java应用。
  • Azui VM:
  • 在HotSpot基础上进行大量改进,运行于AzulSyetems公司转悠硬件Vega系统上的java虚拟机。
  • Liquid VM:即现在的JRockit_VE,相当于运行在BEAHypervisor系统上的JRockitVM的虚拟化版本。不需要操作系统的支持、本身实现了一个专用操作系统的必要功能。
  • Apache Harmony:Apache软件基金会旗下兼容JDK1.5和JDK1.6的java程序运行平台。包含自己的虚拟机和Java库。没有通过TCK认证。Apache基金会曾要求Sun公司提供TCK使用授权,但遭到拒绝,后来Oracle收购Sun之后,Apache退出了JCP。这是目前为止Java社区最严重的一次分裂。
  • Dalvik VM:Android平台核心组成部分之一。并不是一个Java虚拟机,没有遵循java虚拟机规范,不能直接运行Java的Class文件,
    可以运行通过Class文件转化成dex文件,使用寄存器架构而不是JVM中常见的栈架构,
    在Android2.2中yi6tigong即时编译器实现,在执行性能上有了很大的提高
  • Microsoft:Windows下性能最好的Java虚拟机,当时Sun公司曾阻止微软在Windows中支持Java

转载于:https://www.cnblogs.com/lllllht/p/9164490.html

你可能感兴趣的文章
leetCode 刷题 无重复最长字符串
查看>>
leetCode 刷题 两数相加
查看>>
PID程序实现
查看>>
串口调试助手--Qt
查看>>
Docker使用 - 镜像
查看>>
算法 - 查找
查看>>
Docker简介
查看>>
算法 - 排序
查看>>
Docker使用 - 容器
查看>>
JWT加密原理
查看>>
分布式锁介绍
查看>>
单例模式
查看>>
ASM字节码增强技术
查看>>
javaagent 简介
查看>>
skywalking介绍与使用
查看>>
RabbitMQ几个常用面试题
查看>>
BTC功能类
查看>>
jsonRPC
查看>>
layui -page 分页类
查看>>
ETH功能类
查看>>