一、什么是Java
Java是Java程序设计语言和Java平台的总称。
Java平台:Java分为三个平台,分别为Java SE(J2SE,Java2 Platform Standard Edition,标准版),JavaEE(J2EE,Java 2 Platform, Enterprise Edition,企业版),Java ME(J2ME,Java 2 Platform Micro Edition,微型版。运行在各种终端(如pc,服务器,移动设备,嵌入式设备)的系统软件。Pc机上的程序是用SE开发出来的,服务器端的程序是用EE开发出来的,移动设备端的程序是用ME开发出来的。
Java SE:JAVA标准版,是ME(微版)和EE(企业版)的基础。
二、 Java语言的特性
- 简单
相比较c来说没有头文件没有指针运算,不需要分配内存等。 - 面向对象
面相对象是一种程序设计技术,重点是对象和对象之间的接口,Java中万物皆对象。 - 可移植性
即跨平台性,Java的跨平台特性主要是字节码文件可以在任何具有java虚拟机的计算机或者电子设备上运行。Java虚拟机中的java解释器负责将字节码文件解释为特定的机器码进行运行。因此在运行时,java源程序需要通过编译器编译为.class文件。 - 高性能
效率高 - 分布式
可以处理TCP/IP协议的内容,专门为处理分布式环境设计。 - 动态性
Java本身是不具备动态性的,但是通过Java中的反射机制可以实现 - 多线程
带来更好的交互式体验 - 安全性
异常处理机制 - 健壮性
三、环境搭建、简述
JDK:Java Development Kit 开发者工具包
JRE:Java Runtime Environment 运行时环境
JVM:Java Virtual Machine 虚拟机
顾名思义,JDK是专门给Java开发人员使用的,目的就是用来编译和调试Java程序的,如果只是用来运行某个Java程序,那么只需要下载JRE即可。Java语言最大的特性–可移植性又叫跨平台性,Write once,Run Anywhere.这主要是由于JVM的存在,JVM可以看做是运行在操作系统的一款软件,负责将字节码解释成为特定的机器码进行运行,值得注意的是在运行过程中,Java源程序需要通过编译器编译为.class文件,否则JVM不认识,三者的关系如图所示。
JVM其它理解:是JRE的一部分,是一个虚构出来的计算机,是通过在实际的计算机上模拟个各种计算机功能来实现的。Java代码都运行在JVM上,JVM运行在操作系统上。
四、 运行机制
任何编程语言编写的程序归根到底都是由底层机器的机器代码(01序列)执行的,无论是编译型语言还是解释型语言。而任何高级编程语言程序的源代码都是一个字符序列,这个字符序列到底层的01序列是通过编译器或解析器经过多次转换完成的。
编程语言的层次结构 |
高级语言 |
汇编语言 |
机器语言 |
这个层次结构中,从高到低越来越接近于机器硬件。机器代码就是01序列,汇编语言就是描述本地机器的指令集体系结构,而高级语言就包含相应的数据结构和语法结构,更接近人类的语言习惯。因此,层次越高就越面向于人类。在计算机科学中,CPU被抽象为指令集体系结构,这个指令集描述了CPU所有完成的所有功能。所有的程序都经过编译或解释转化为这个指令集表示的机器程序。
Java程序从源代码到运行的三个阶段:编码——编译——运行。Java在编译阶段则体现了跨平台的特点。编译过程大概是这样的:首先是将Java源代码转化成.CLASS文件字节码,这是第一次编译。.class文件就是可以到处运行的文件。然后Java字节码会被转化为目标机器代码,这是是由JVM来执行的,即Java的第二次编译。
编译执行和解释执行的区别:
- 编译:将源代码一次性转换成目标代码的过程,类似英语中的全文翻译。执行编译过程的程序叫做编译器。
- 编译器:把源代码转换成(翻译)低级语言的程序。编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快。
- 解释:将源代码逐条转换成目标代码同时逐条运行的过程,类似英语中的同声传译。执行解释过程的程序叫做解释器。
- 解释器:直接执行用编程语言编写的指令的程序。解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的。
编译过程只进行一次,所以,编译过程的速度并不是关键,目标代码的运行速度是关键。因此,编译器一般都集成尽可能多的优化技术,使生成的目标代码具备更好的执行效率。
解释则在每次程序运行时都需要解释器和源代码,不能集成太多优化技术,因为代码优化技术会消耗运行时间,使整个程序的执行速度受到影响。
Java是一种通过解释执行的语言。也是一种跨平台执行的语言。Java语言编写的程序既是编译型的又是解释型的。(Python是脚本语言,解释执行。Java是静态语言,编译执行。但是java在运行时,JVM普遍采用混合模式。)