0、写在前面的话
我们都知道在计算机的底层,它是识别二进制的,也就是说,计算机只能认识0和1。这主要是因为电路的逻辑只有两种状态,所以只需要0和1两个数字就可以表示低电平和高电平。而计算机是由数不清的逻辑电路组成的,所以根据数不清位数的0和1进行组合来表达信息。
为了能够和计算机交流,自然需要所谓的计算机语言了:
机器指令
- 最早,不就是0和1嘛,拿个纸带在固定位置打孔来区别就可以了,1打孔,0不打孔,再将程序通过纸带机输入计算机运算。这种相当于纯粹由0和1组成的指令,都称不上语言,难以阅读修改,也太过复杂,于是后来出现了汇编语言。
汇编语言
- 机器语言用0和1表示我们希望计算机执行的一些操作,汇编语言的差别则是在指令的表达方式上,使用了更容易记忆的格式
- 假设如希望操作 “寄存器BX的内容送到AX中”,机器指令是1000100111011000,汇编指令则是mov ax,bx
- 但汇编语言是机器指令的符号表示,不同CPU有不同的指令系统,即如果采用不同的CPU,汇编语言也不同,一套代码不能在不同机器上通用
- 同时,计算机还是只能认识0和1的,所以程序员使用汇编语言写出了源程序,还需要编译器将其转换为机器码,拿给计算机
高级语言
- 把机器指令转换成人们容易记忆和识别的指令,在汇编语言中已经出现了雏形了,接下来的发展就出现了高级语言
- 高级语言就是高度封装了机器指令的编程语言,以人类日常语言为基础,有较高的可读性,程序员编写更容易
- 高级语言在翻译成机器指令时,有 “解释” 和 “编译” 两种方式:
- 解释 - 编写好的代码,在计算机执行时才进行翻译
- 编译 - 编写好的代码,会事先翻译成机器语言,计算机在操作时就可以直接使用了
- 高级语言诸如C、C#、C++、Java、Python、PHP等
1、Java的前世今生
1991年1月,一个名为“Green Project”的项目启动。该项目旨在为家用电器提供支持,使这些电器智能化并且能够彼此交互,而且这些家电可以由远程客户端控制。
1991年2月,James Gosling是该项目的软件负责人和架构师。他最初的目标是为“绿色项目”找到一个适合的语言来运行。他选择了C++,并对有需要的地方进行了扩展。但是这些功能不能满足计划的需要,因此建立一门新的语言成为当务之急。他开始夜以继日地忙于新语言的开发,并将其命名为“Oak”,因为他办公室窗外有一棵橡树。
但Oak已被另一种已存在的编程语言使用,因此这个名字不可能再用了。James Gosling开始思考,"我们的新语言需要一个名字。" 于是他通过市场部门,请来了一个命名顾问,召开命名征集会。在会上,大家提出了很多名字,最后按大家的评选次序,将十几个名字排列成表,上报给商标律师。
排在第一位的是Silk(丝绸)。尽管大家都喜欢这个名字,但遭到James Gosling的坚决反对而作罢。排在第二和第三的都没有通过律师这一关。James Gosling最喜欢的就是排在第三位的Lyric(抒情诗)。只有排在第四位的名字、得到了所有人的认可和律师的通过。这个名字就是Java。
Java是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名。国外的许多咖啡店用Java来命名或宣传,以彰显其咖啡的品质。
从此一个即好听又好记、具有强大的生命力的编程语言Java诞生了。
2、Java概述和特点
Java语言是一种优秀的编程语言。它最大的优点就是与平台无关,在Windows 9x、Windows NT、Solaris、Linux、MacOS以及其它平台上,都可以使用相同的代码。“一次编写,处处运行”的特点,使其在互联网上广泛采用。
由于Java语言的设计者们十分熟悉C++语言,所以在设计时很好地借鉴了C++语言。可以说,Java语言是一种比C++语言“还面向对象”的一种编程语言。Java语言的语法结构与C++语言的语法结构十分相似,这使得C++程序员学习Java语言更加容易。
2.1 解释执行
计算机无法理解高级语言,所以我们使用高级语言完成编程之后,还要将它翻译成机器语言。翻译,有两种方式,即编译和解释,主要是时间上的不同:
- 编译:在程序没有执行时,就先将高级语言进行翻译,比如windows下的exe文件,之后程序就可以直接运行了;
- 解释:在程序开始运行的时候才去翻译,而且程序每次执行都要翻译一次
而Java程序在执行后,首先是生成了class文件,成为字节码,并不是所谓的0101的机器码。在执行时,Java虚拟机的解释器,会根据当前平台的特征,对class文件进行进一步的解释,生成符合当前规范的机器码,得以运行。所以Java到底是属于编译性的语言还是解释性的语言,很难有一个准确的界定。
2.2 跨平台
跨平台其实就是建立在解释执行的基础上的,所谓“一次编写,处处运行”,得益于class字节码和Java虚拟机这个中间层。实际上真正跨平台的是Java程序,但是Java虚拟机却不是跨平台的,不同平台下需要安装不同版本的Java虚拟机。
2.3 面向对象
Java语言是一门面向对象的语言,具备面向对象语言的三大特征:封装、继承、多态。
2.4 自动垃圾回收
在Java中程序员无权回收内存,而是统一由Java虚拟机进行自动管理,对垃圾进行检查和内存释放。
2.5 鲁棒性
即是说,Java语言是健壮的。Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java也更具健壮性。
2.6 支持多线程
支持多线程编程时很多编程语言能够实现的功能,Java当然也不例外。
2.7 简单性
Java语言取消了很多容易混淆的概念,比如多继承、goto语句等。Java也没有让人头疼的指针概念,可以说是非常友好了。
3、Java语言的运行环境
3.1 JDK
Java Development Kit:给Java开发人员使用的工具包,包括Java的开发工具,也包括JRE。其中开发工具包括编译工具(javac.exe)、运行工具(java.exe)、打包工具(jar.exe)等。
JDK = JRE + 开发工具
3.2 JRE
Java Runtime Enviroment:Java的运行环境,包括Java虚拟机和Java程序运行所需的核心类库。
JRE = JVM + 核心类库
3.3 Java语言的环境配置
要使用Java语言进行程序开发,必然先要配置Java的使用环境,这个网上一搜一大把,就不具体阐述了,直接丢链接: