计算机语言发展史
机器语言
- 基本计算方式基于二进制方式
- 直接输入给计算机使用
汇编语言
- 解决人类无法读懂机器语言的问题
- 指令代替二进制
- 目前应用
- 逆向工程
- 机器人
- 病毒
- ……
高级语言
- 大体上分为:面向过程 和 面向对象 两大类
- C语言史典型的面向过程的语言
- C++、Java是典型的面向对象的语言
故事:Java帝国的诞生
C&C++
- 1972年C诞生
- 贴近硬件,运行极快,效率极高。
- 操作系统,编译器,数据库,网络系统等。
- 指针和内存管理
- 1982年C++诞生
- 面向对象
- 兼容C
- 图形领域、游戏等
Java
- Java
- 语法有点像C
- 没有指针
- 没有内存管理
- 真正的可移植性,编写一次,到处运行
- 面向对象
- 类型安全
- 高质量的类库
Java特性和优势
简单性
- c++语法的纯净版。没有头文件、指针运算、结构、联合、操作符重载、虚基类等等。由于语法基于c,因此学习起来完全不费力。
面向对象
- 面向对象是一种程序设计技术,他将重点放在数据(即对象)和对象之间的接口上。
可移植性(跨平台性)
- JAVA的一个重要的优势。JAVA代码或者说字节码、二进制码可以跨平台的移植,而不用管具体的操作系统和硬件环境。“一次编写,随处运行”:“write once, run anywhere”
- JAVA在设计时就很注重移植和跨平台性。比如:JAVA的Int永远都是32位。不像c++可能是16,32,可能是根据编译器厂商规定的变化。这样的话程序的移植就会非常麻烦。
高性能
- JIT(JUST IN TIME)即时编译。将一些“热点”字节码编译成本地机器码,并将结果缓存起来,在需要的时候重新调用。这样的话,使JAVA程序的执行效率大大提高,某些代码甚至接近c++的效率。
分布式
- JAVA是为internet的分布式环境设计的,因为他能够处理tcp/ip协议。事实上,通过url访问一个网络资源和访问本地文件是一样简单的。
- Java还支持远程方法调用(RMI,remote method Invocation),使程序能够通过网络调用方法。
动态性
- 在需要时将某些代码添加到正在运行的程序中。
- 反射机制。当需要把某些代码添加到正在运行的程序中时,动态性是一个非常重要的特性。Java的动态特性是其面向对象设计方法的扩展。它允许程序动态地装入运行过程中所需要的类,这是C++语言进行面向对象程序设计所无法实现的
多线程
- 多线程的使用可以带来更好的交互响应和实时行为。多线程的简单性是Java成为主流服务器端开发语言的主要原因之一。
安全性
- Java适合于网络/分布式环境,为了达到这个目标,在安全性方面投入了很大的精力,使Java可以构建防病毒,防篡改的系统。
健壮性
- Java是一种健壮的语言,吸收了C/C++ 语言的优点,但去掉了其影响程序健壮性的部分(如:指针、内存的申请与释放等)。
- Java程序不可能造成计算机崩溃。Java系统仔细检测对内存的每次访问,确认它是合法的,而且不致引起任何问题。
- 不过,即使Java程序也可能有错误。如果出现某种出乎意料之事,程序也不会崩溃,而是把该例外抛弃。再通过异常处理机制,程序就会发现这类例外,并加以处理。
Java三大版本
- JavaSE:标准版(桌面程序、控制台开发……)
- JavaME(手机、小家电……)
- JavaEE(web端、服务器开发……)
JDK JRE JVM
- JDK:Java Development Kit —— Java开发者工具
- JRE:Java Runtime Environment —— Java运行环境
- JVM:Java Virtual Machine —— Java虚拟机
搭建开发环境
JDK下载与安装
配置环境变量
HelloWorld
- 新建一个文件夹存放代码
- 新建一个Java文件
- 文件后缀名为.java
- Hello.java
- 编写代码
public class Hello{public static void main(string[] args){System.out.print("Hello,world!");}}
- 编译java文件 javac Hello.java,会生成一个class文件
- 运行java文件 java Hello
- Java是大小写敏感的
- 文件名和类名保持一致
- 符号要保证使用英文
Java程序运行机制
计算机的高级编程语言类型: 编译型、解释型,Java 语言是两种类型的结合。
科普:编译型 ,解释型
- 编译型:有一个负责翻译的程序来对我们的源代码进行转换,生成相对应的可执行代码。这个过程说得专业一点,就称为编译(Compile),而负责编译的程序自然就称为编译器(Compiler)
- 编译型与解释型,两者各有利弊。
- 编译型由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用编译型语言,像C/C++、Pascal/Object Pascal(Delphi)、VB等基本都可视为编译语言。
- 而一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言,如Java、JavaScript、VBScript、Perl、Python等等。
- Java语言虽然比较接近解释型语言的特征,但在执行之前已经预先进行一次预编译,生成的代码是介于机器码和Java源代码之间的中介代码,运行的时候则由JVM(Java的虚拟机平台,可视为解释器)解释执行。它既保留了源代码的高抽象、可移植的特点,又已经完成了对源代码的大部分预编译工作,所以执行起来比“纯解释型”程序要快许多。
第一步:编译
利用编译器(javac)将源程序编译成字节码
字节码文件名:源文件名.class
第二部:运行
利用虚拟机(解释器,java)解释执行class字节码文件。
IDEA安装
- 输入psvm —— public static void main(String[] args)
- 输入sout —— System.out.println()