提示:本文中部分内容图片节选自互联网,无意冒犯。如有侵权请私信联系作者即可删除、更改。
前言
编程语言的两种常见的程序运行方式:编译执行、解释执行。
- 编译执行:
源文件(程序员编写的文件。如:Java中的.java文件)经过编译器编译后生成目标机器的机器码文件,所以运行效率很高,缺点是不能跨平台,此方式的程序适合复杂的算法程序。 - 解释执行
源文件经过解释器逐行翻译成机器码并执行。这种方式可跨平台。因为只需要在不同平台上安装不同的解释器就可将源文件解释为不同平台的机器码,但由于解释执行需要解析平台然后逐行解释,花费的时间较长,执行效率低。脚本语言一般都是解释执行。如Javascript。
Java结合两者提出先编译后解释的运行方式:源文件(.Java)经过编译器编译后转换成字节码文件(.class文件,这种文件是Java虚拟机通用识别语言,并为机器码文件)再由解释器逐行翻译成机器码并执行。
这样相比于直接解释的编程语言而言提高了运行效率,并且保留了跨平台的特性。如下图为java 的运行方式:
由图可知,java的跨平台是因为JVM对不同操作系统或者平台分别做了支持,并且屏蔽了系统间的差异。
Java的基本组成
如下图为最流行的Java语言结构图:
下边为图中的组成进行简单介绍:
-
JDK
全称Java Development Kit, 是Java 语言的软件开发工具包 (SDK)。Java开发环境。包含JRE 、开发工具Tools、编译器Javac、调试工具jdb、Java执行器Java、文档生成器Javadoc.exe、Java打包器等。是Java语言开发使用的基础开发包。 -
JRE
全称Java Runtime Environment,是Java运行时环境包。用于Java运行,包含Java虚拟机和标准类函数库(API Lib),是Java程序程序运行的环境。 -
Java Virtual Machine
简称:JVM ,是Java虚拟机。JVM规定一个整形空间位为4个字节,用于屏蔽各个操作系统底层间的差异。JAVM规范定义了指令集、寄存器集、类文件结构、堆栈、垃圾收集堆、内存区域。使所有软件在不同操作系统中拥有相同的运行环境。所以Java源文件只要符合JVM规定即可,它是Java跨平台的基础。 -
Java.lang
Java的基础包,在Java编程中该包中的类无序引用,Java编译时自动引用该包。
图中其他部分相比于以上四种都不是太重要,就不需要过多解释了。以下说明Java的三个版本:
-
Java EE(Java Enterprise Edition服务器企业级)
多用于企业级开发,此版本包括web开发的各种Jar包。如Servlet和JSP以及其他一些Web相关的工具包。是在JavaSE的基础上构建的他提供Web 服务、组建模型、管理和通信API。可以用来实现企业级的面向服务体系结构(SOA)和 Web应用程序。 -
Java SE(Java Standard Edition标准版本)
用于一般Java程序的开发 (如桌面程序)GUI。用于开发在桌面、服务器、嵌入式环境中使用的Java应用程序。Java SE 包括支持Java Web服务开发的类,并为 Java EE提供基础。Java SE 中主要包含两种类型程序:Application独立程序:是现在创建的项目级的应用,需要运行时环境(JRE)才能运行。
Applet程序:是早期用于镶嵌在HTML中非独立程序,有专门的appletViewer或者浏览器调用JVM运行,现在基本已经废弃。 -
Java ME(Java Platform,Micro Edition)
用于为移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供运行环境。Java ME 包括许多内置的网络协议以及对可以动态下载的连网和离线应用程序的支持。并且包含跨平台的特性。
术语引用
- SDK:全称Software Development Kit是软件开发工具包,一般都是软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。
- API:全称Application Program Interface。是应用程序可用以与计算机操作系统交换信息和命令的标准集。一个标准的应用程序界面为用户或软件开发商提供一个通用编程环境,以编写可交互运行于不同厂商计算机的应用程序。API不是产品,而是战略,所有操作系统与网络操作系统都有API。在网络环境中不同机器的API兼容是必要的,否则程序对其所驻留的机器将是不兼容的。
- SOA:全称service-oriented architecture,是面向服务的架构是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。