什么是Java?Java的特点是什么?
从今天开始,将进行对Java所有内容的总结和回顾,里面所牵扯的很多内容都来自,我的编程启蒙老师:MEC铁血教主,朱某人亲身传授给我的知识,有问题的地方希望各位高手可以给予指点改正。
什么是Java?
首先大家需要明白Java是一门高级程序设计语言(这样的编程语言有很多种,类似C,C++,BASIC,Python等等),可以用于我们与计算机之间的沟通,实现人机互动。
Java在“市面上”首先被提及的是“面向对象的程序设计语言”,并且他是一个“解释型”程序设计语言。C语言是编译型程序设计语言;BASIC是解释型程序设计语言。何为解释型呢?即编写的源程序需要在“解释器”的作用下,一遍编译,一遍执行;也就是说,解释型“执行”的是源代码编译型:编写的源程序需要先进行“编译”,翻译成机器语言文件(.exe);在执行时,直接执行的是最终的.exe(可执行)文件。
与C语言学习一样,学习Java编程首先需要安装Java的编译、执行软件,这些笼统地称为Java环境。详细地说,Java环境是由两部分组成的:JDK 和 JRE。
JDK其实就包括了所谓的JVM(Java虚拟机),JVM其实就是Java解释器;不过,JVM解释的不是Java源程序代
码,其解释、执行的是.class文件。
Java源程序代码也是ASCII码格式的,也需要进行“翻译”。但是,与C语言不同的是,C语言编译器将C语言源代码直接翻译成可执行文件,就是可以直接在计算机硬件上执行的机器指令集合;而Java的工作模式是:Java源代码文件(.java)→编译→ Java字节码文件(.class) →JVM解释(字节码文件(*.class)需要进一步翻译成目的机代码才能执行,完成这个“进一步翻译”的系统就是JVM,即,Java虚拟机。)→ 执行结果。也即是说,Java不是一个纯粹的编译型系统,而是一个“半解释”系统,Java介于解释型和编译型之间。所以,相同结构和算法的Java程序,执行速度比C程序要慢。这当然是Java的一个弱点。但是,凡事都有两面。Java放弃了执行速度上的优势,一定是为了换取其他优势,否则,Java就没有必要存在了。那么,Java的这种执行机制能够换来什么样的优势呢?
答案是:实现平台无关性(跨平台)!
所谓与平台无关的意思可以由C语言和Java语言运行方式的比较加以说明:首先,C语言源代码被C语言编译器直接翻译成了最终机器指令。这时候就需要插入我的老师教主:朱某人在教学C语言时候将给我们的故事:“梅超风和郭靖建立了一套指令体系,欧阳锋和欧阳克也建立了一套指令体系;由于双方是各自独立建立自己的指令体系的,所以,虽然他们师出同门,但是,相同的指令编号却对应不同的武术动作。因此,让欧阳克指挥梅超风的话,那梅超风就真的疯掉了!”
JDK:Java Development Kit
JRE:Java Runtime Environment
JVM:Java Virtual Machine
(图片来源于网络)
随着我们后续学习的深入,上图中的内容都会慢慢了解到。
Java的特点是什么?
Java语言有下面一些特点 :简单、面向对象、分布式、解释执行、鲁棒、安全、体系结构中立、可移植、高性能、多线程以及动态性。
1.面向对象
Java语言的设计集中于对象及其接口 ,它提供了简单的类机制以及动态的接口模型。对象中封装了它的状态变量以及相应的方法 ,实现了模块化和信息隐藏 ;而类则提供了一类对象的原型 ,并且通过继承机制 ,子类可以使用父类所提供的方法 ,实现了代码的复用。
2.分布性
Java是面向网络的语言。通过它提供的类库可以处理 TCP/IP协议 ,用户 可以通过 URL地址在网络上很方便地访问其它对象。
3.简单性
Java语言是一种面向对象的语言 ,它通过提供最基本的方法来完成指定的任务 ,只需理解一些基本的概念 ,就可以用它编写出适合于各种情况的应用程序。 Java略去了运算符重载、多重继承等模糊的概念 ,并且通过实现自动垃圾收集大大简化了程序设计者的内存管理工作。另外 ,Java也适合于在小型机上运行 ,它的基本解释器及类的支持只有 40KB左右 ,加上标准类库和线程的支持也只有 215KB左右。库和线程的支持也只有 215KB左右。
4.鲁棒性
Java在编译和运行程序时 ,都要对可能出现的问题进行检查 ,以消除错误的产生。它提供自动垃圾收集来进行内存管理 ,防止程序员在管理内存时容易产生的错误。通过集成的面向对象的例外处理机制 ,在编译时,Java提示出可能出现但未被处理的例外 ,帮助程序员正确地进行选择以防止系统的崩溃。另外,Java在编译时还可捕获类型声明中的许多常见错误 ,防止动态运行时不匹配问题的出现。
5.可移植性(跨平台性)
与平台无关的特性使 Java程序可以方便地被移植到网络上的不同机器。同时 ,Java的类库中也实现了与不同平台的接口 ,使这些类库可以移植。另外,Java编译器是由 Java语言实现的 ,Java运行时系统由标准 C实现 ,这使得Java系统本身也具有可移植性。
6.体系结构中立
Java解释器生成与体系结构无关的字节码指令 ,只要安装了 Java运行时系统 ,Java程序就可在任意的处理器上运行。这些字节码指令对应于 Java虚拟机中的表示 ,Java解释器得到字节码后 ,对它进行转换 ,使之能够在不同的平台运行。
7.安全性
用于网络、分布环境下的 Java必须要防止病毒的入侵。 Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现 ,这样就防止程序员使用"特洛伊 "木马等欺骗手段访问对象的私有成员 ,同时也避免了指针操作中容易产生的错误。
8.解释执行
Java解释器直接对 Java字节码进行解释执行。字节码本身携带了许多编译时信息 ,使得连接过程更加简单。
9.动态性(反射机制)
Java的设计使它适合于一个不断发展的环境。在类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行。并且 Java通过接口来支持多重继承 ,使之比严格的类继承具有更灵活的方式和扩展性。
10.多线程
多线程机制使应用程序能够并行执行 ,而且同步机制保证了对共享数据的正确操作。通过使用多线程 ,程序设计者可以分别用不同的线程完成特定的行为 ,而不需要采用全局的事件循环机制 ,这样就很容易地实现网络上的实时交互行为。
11.高性能
和其它解释执行的语言如 BASIC、 TCL不同 ,Java字节码的设计使之能很容易地直接转换成对应于特定CPU的机器码 ,从而得到较高的性能。
和其它解释执行的语言如 BASIC、 TCL不同 ,Java字节码的设计使之能很容易地直接转换成对应于特定CPU的机器码 ,从而得到较高的性能。