如果有人问你“什么是 Java ?”,你可能会做出这样的回答“Java 就是 Java 语言、Java API、Java 字节码以及 Java 虚拟机的总称。”
好吧,这么说看起来也没什么错,不是吗?
Java 一出现就举着“一次编码处处运行”的大旗,这也是 Java 超高兼容性的体现,拥有这个基石,Java 迅速占据市场,并击败了众多竞争者。
但是,因为 Java 语言本身发展缓慢,于是 JVM 语言迅速出现。Groovy、JRuby、Jython、Clojure、Scala ......等等数不胜数,它们都拥有自己的编译器有能力将源码编译为 Java 的字节码文件。在 Java 7 之前,由这些非 Java 语言编译出的字节码比较冗长,效率低下,对 Java 语言本身并不构成实质的威胁。但是从 Java 7 版本之后,由于 Java 虚拟机正式支持 JSR 292 规范,JVM 语言终于迎来了自己的春天。由它们编译出来的字节码运行效率和 Java 语言已无区别,甚至效率比使用 Java 反射还高。至此,Java 语言不再独享 Java 平台,至少在问到“ 什么是 Java?”这个问题的时候,要为 JVM 语言留下一席之地。
JVM 语言的出现算是将 Java 语言和 Java 字节码相分离,Java 语言和 Java 字节码之间不再是一对一的关系,而是多对一的关系(即多个语言对 Java 字节码)。但是 Java 字节码、Java 虚拟机和跨平台等 Java 根本特性依旧无法动摇。
这时,Google 的 Android 系统正式登场,算是对 Java 进行了一次彻底的颠覆。Android 是一个开源操作系统,但也是一个开发平台,并且使用 Java 语言来开发 Android 应用。它不再使用 Java 字节码和虚拟机,而是使用自己的 Dalvik 字节码和虚拟机。Android 出现后,Java 语言不再跨平台,也不再“一次编写处处运行”,因为针对 Android 编写的应用只能在 Android 平台上运行。
Android 的出现,将 Java 语言和 Java 字节码再次分离,让 Java 语言可以对应多个不同的字节码(目前至少有 Java 字节码和 Dalvik 字节码)。至此,Java 语言、Java 字节码、Java 虚拟机之间出现了多对多的关系。
好了,再回到刚开始那个问题,究竟“什么是 Java”?
原文:
http://www.aptusource.org/2014/06/what-is-java/
分享到:
相关推荐
java语言是一种可以撰写跨平台应用软件的面向对象程序设计语言和平台由当时任职太阳微系统的詹姆斯高斯林jamesgosling等人于1990年代初开发它最初被命名为oak后1995年改名javajava随着互联网的迅猛发展而发展逐渐...
java语言是一种可以撰写跨平台应用软件的面向对象程序设计语言和平台由当时任职太阳微系统的詹姆斯高斯林jamesgosling等人于1990年代初开发它最初被命名为oak后1995年改名javajava随着互联网的迅猛发展而发展逐渐...
什么是Java? Java是一种流行的编程语言,创建于1995年。它是Oracle拥有的,运行Java的设备超过30亿。 它用于:移动应用程序(特别是Android应用程序)桌面应用程序Web应用程序Web服务器和应用程序服务器游戏数据库...
java服务端原始码什么是Java? Java是一种流行的编程语言,创建于1995年。 它归Oracle所有,超过30亿台设备运行Java。 它用于: 移动应用程序(特别是Android应用程序)桌面应用程序Web应用程序Web服务器和应用程序...
什么是C语言?什么是VB语言?什么是VF语言?什么是JAVA语言?什么是C++语言?.pdf
1. 什么是 Java?它的特点是什么? 2. 解释面向对象编程(OOP)的概念和特点。 3. Java 中的基本数据类型有哪些? 4. 什么是类和对象?它们之间有什么关系? 5. 如何创建和实例化对象? 6. 解释 Java 中的继承和多态...
1. 什么是Java? 答:Java是一种面向对象的编程语言,由Sun Microsystems公司(现属Oracle公司)于1995年推出。它具有简单、对象 oriented、分布式、多线程、动态、 Architecture neutral、高度可移植、安全等特点。 2....
如何在 Web 浏览器中禁用 Java?
包含html, css, javascript, jquery, bootstrap, xml, servlet, jsp, mysql, linux, redis, maven等技术
什么是覆盖【Overriding】?它们有什么区别? Java中什么是多态?如何实现多态? Java中什么是接口?它有什么作用? Java中什么是抽象类?它有什么作用? Java中什么是final关键字?它有什么作用? Java中什么是...
什么是关系型数据库? - 什么是SQL?有哪些常见的SQL语句? - 什么是连接?有哪些类型的连接? - 什么是索引?如何创建索引? ## 5. Java Web开发 - 什么是Java Servlet? - 什么是Java Server Pages(JSP)? - ...
Java是什么?3分钟了解什么java
为什么我们要学习java?盘点java的8大好处.docx
什么是Java虚拟机(JVM)?它如何工作? 什么是垃圾回收?Java中的垃圾回收是如何实现的? Java中的锁机制有哪些?它们有什么区别? 什么是线程安全?在Java中如何实现线程安全? 什么是继承?Java中的继承有哪些...
...
...
详解java中容器是什么,从各个方面详解
Java WEB 篇八 tomcat 容器是如何创建 servlet 类实例?用到了什么原 理?
...
...