java的技术体系

java技术体系所包含的内容:

 

java虚拟机的发展史:

各种公司的各种虚拟机的概览:

1、Sun Classic / Exact VM 

2、Sun HotSpot VM 

3、Sun Mobile-Embedded VM / Meta-Circular VM 

4、BEA JRockit / IBM J9 VM 

5、Azul VM / BEA Liquid VM

6、Apache Harmony / Google Android Dalvik VM

7、Mocrosoft JVM 及其他

 

java技术体系的主要平台:

  • Java SE  ---- 支持面向桌面级应用(如Windows下的应用程序)的java平台,提供了完整的java核心API,这个版本以前称为J2SE                
  • Java SE Subscription  ----  甲骨文公司已经改进了Java SE(标准版)的商业支持计划,由之前企业一次性支付永久许可费用加年度支持费用的模式,改为新的订阅模式,并宣布新的模式将于2018年7月开始启用。个人使用和非商业使用可继续享受免费支持,无需订阅。该订阅被称为 Java SE Subscription,为用于任务关键型 Java 部署的新程序提供商业许可,并具有诸如高级 Java 管理控制台等功能。 
  • Java Embedded ----  感觉上跟tomcat embedded是一个思想意思,提供了一个嵌入式的开发环境,包括SE、ME embedded等。
  • Java EE ---- 支持使用多层架构的企业应用(如ERP、CRM应用)的java平台,除了提供Java SE API外,还对其做了大量的扩充并提供了相关的部署支持,这个版本以前成为J2EE
  • Java ME ---- 支持java程序运行在移动终端上的平台。为在物联网的嵌入式和移动设备上运行的应用程序提供了一个健壮、灵活的环境:微控制器、传感器、网关、移动电话、个人数字助理(pda)、电视机顶盒、打印机等。java me包括灵活的用户界面、健壮的安全性、内置的网络协议,以及对可以动态下载的网络和离线应用程序的支持。基于java me的应用程序在许多设备上都是可移植的,但是利用了每个设备的本机功能。
  • JavaFX  ----  GUI的应用程序的开发,桌面的独立Swing应用。JavaFX 2.0版本之前,开发者需使用一种名为JavaFX Script的静态的、声明式的编程语言来开发JavaFX应用程序。因为JavaFX Script将会被编译为Java bytecode,程序员可以使用Java代码代替。JavaFX 2.0之后的版本摒弃了JavaFX Script语言,而作为一个Java API来使用。因此使用JavaFX平台实现的应用程序将直接通过标准Java代码来实现。在桌面系统上,最新版本的JavaFX支持Windows XPWindows VistaWindows 7Mac OS XLinux操作系统。JavaFX 2.X版本暂时不支持Solaris操作系统和智能手机操作系统。但是Oracle计划将JavaFX集成到Java SE embedded 8之中,JavaFX for ARM处理器也正处于开发者预览阶段。
  • Java Card ---- 支持一些Java小程序(applets)运行在小内存设备(如智能卡)上的平台。Java Card技术主要是让智慧卡或与智慧卡相近的装置上,以具有安全防护性的方式来执行小型的Java Applet,此技术也被广泛运用在SIM卡、提款卡上。
  • Java TV ---- Java TVAPI被尽可能地限制在只适用于电视接收机的独特的功能上,一些消费电子装置通用的API,如持久存储机制,没有包括在其中。
  • Java DB ----  新安装了 JDK6 的程序员们也许会发现,除了传统的 bin、jre 等目录,JDK 6 新增了一个名为 javadb 的目录。这便是 Java 6 的新成员:JavaDB。这是一个纯 Java 实现、开源的数据库管理系统(DBMS),源于 Apache软件基金会(ASF)名下的项目 Derby。它只有 3MB 大小,对比动辄上 G 的数据库来说可谓袖珍。但这并不妨碍 Derby功能齐备,支持几乎大部分的数据库应用所需要的特性。更难能可贵的是,依托于 ASF 强大的社区力量,Derby得到了包括 IBM 和 Sun 等大公司以及全世界优秀程序员们的支持。这也难怪 Sun 公司会选择其 10.2.2 版本纳入到 JDK 6 中,作为内嵌的数据库。这就好像为 JDK 注入了一股全新的活力:Java 程序员不再需要耗费大量精力安装和配置数据库,就能进行安全、易用、标准、并且免费的数据库编程。
  • Developer Tools ---- 开发者工具集

问题1:Java SE和Java EE有什么不同?

JavaEE:Java Enterprise Edition,Java企业版,多用于企业级开发,包括web开发等等。企业版本帮助开发和部署可移植、健壮、可伸缩切安全的服务端Java应用。Java EE是在JavaSE的基础上构建的他提供Web 服务、组建模型、管理和通信API.可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和web2.0应用程序。

JavaSE:通常是指Java Standard Edition,Java标准版,就是一般Java程序的开发就可以(如桌面程序),可以看作是JavaEE的子集。它允许开发和部署在桌面、服务器、嵌入式环境和实施环境中使用的Java应用程序。JavaSE 包括支持Java Web服务开发的类,并为Java Platform,Enterprise Edition(Java EE)提供基础。

简单来说 JAVA EE 比 JAVA SE 多了几个jar包, 别的没啥明显区别
用于提供企业级开发的支持(包括但不限于对ejb,jsp,xml,servlet等)

以前呢, 是没有JAVA EE SDK的 都是下载JAVA SE SDK 也就是通常说的JDK, 但是也可以用来开发J2EE项目,开发的时候把tomcat、jboss等web容器的J2EE支持包导进来就可以了

现在oracle网站上出现了JAVA EE SDK 没用过 猜测是自己按照J2EE的规范 把上述支持的类库包装进去了,因为oracle自己出了web容器, 然并卵,如果你用tomcat开发, 还是得用tomcat提供的servlet-api.jar 。。。
不然可能有兼容性问题。

问题2:open JDK和oracle JDK有什么不同?

Oracle JDK采用了商业实现,而OpenJDK使用的是开源的FreeType。当然,“相同”是建立在两者共有的组件基础上的,Oracle JDK中还会存在一些Open JDK没有的、商用闭源的功能,例如从JRockit移植改造而来的Java Flight Recorder。预计以后JRockit的MissionControl移植到HotSpot之后,也会以Oracle JDK专有、闭源的形式提供。

Oracle的项目发布经理Joe Darcy在OSCON 2011上对两者关系的介绍也证实了OpenJDK 7和Oracle JDK 7在程序上是非常接近的,两者共用了大量相同的代码(如下图,注意图中提示了两者共同代码的占比要远高于图形上看到的比例),所以我们编译的OpenJDK,基本上可以认为性能、功能和执行逻辑上都和官方的Oracle JDK是一致的。

 

展望Java技术的未来

1、模块化。如OSGI技术。

2、混合语言。即每个应用层可以采用不同的编程语言。如展示层使用JRuby/Rails,中间层使用的是Java。接口对每一层的开发者都是透明的,各种语言之间的交互不存在任何困难,就像使用自己的语言的源生API一样方便,因为它们最终都运行在一个虚拟机之上。

3、多核并行。如JDK1.5就引入java.util.concurrent包实现了一个粗粒度的并发框架。而JDK 1.7中加入的java.util.concurrent.forkjoin包是对这个框架的一次重要补充。Fork/Join模式是处理并行编程的一个经典方法,能够轻松的利用多个CPU核心提供的计算资源来写作完成一个复杂的计算任务。通过Fork/Join模式,我们能够更加顺畅地过渡到多核时代。JDK外围,也出现了专门满足并行计算需求的计算框架,如Apache的Hadoop Map/Reduce,这个是一个简单易懂的并行框架,能够运行在上千个商用机器组成的大型集群上,并且能够以一种可靠的容错方式并行处理TB级别的数据集。

4、进一步丰富语法。如自动装箱,泛型,动态注解,枚举,可变长参数,遍历循环,Lambda语法等。

5、64位虚拟机。由于指针膨胀和各种数据类型对齐补白的原因,运行于64位系统上的Java应用需要消耗更多的内存,通常要比32位系统额外增加10% ~ 30%的内存消耗;其次,多个机构的测试结果显示,64位虚拟机的运行速度在各个测试项中几乎全面落后于32位虚拟机,两者大概有15%左右的性能差距。所有接下来会对这个情况做进一步的改善。

6、编译自己的JDK。想要一探JDK内部的实现机制,最编辑的路径之一就是自己编译一套JDK,通过阅读和跟踪调试JDK源码去了解Java技术体系的原理。如openJDK。阅读JDK源码或者HotSpot源码。

你可能感兴趣的:(java基础知识)