Java简介

一、计算机语言发展史

  1. 第一代语言:机器语言(二进制)→第二代语音:汇编→第三代语言:高级语言(C、Java、C++)
  2. 如果程序员直接操作硬件,就只能用机器指令,也就是二进制编码,这是一个非常枯燥、繁琐、容易出错的工作。
  3. 有了操作系统之后,我们不需要直接操作机器,因此也就产生了扩展机器指令,用代码代表机器指令,程序员编程就可以把视角集中在运算,而不用考虑具体的执行过程,即代码:代表二进制编码的东西就叫做代码,扩展机器指令的出现,也就是代码的开始。
  4. 有了数据库管理系统之后,程序员可以将数据信息进行相应的封装,不再是处理基于“流”的信息或者记录简单的信息,可以有更复杂的对象式,或者关系式的数据处理。仍然需要机器指令和数据库语言两种方式来进行程序设计。
  5. 高级语言的出现,让编程从面向目标机器变成了面向目标解决,各种具体的运算也无需考虑,程序员只需要考虑逻辑关系。
  6. 【注:计算机硬件系统:只提供机器语言,也就是只认二进制编码、操作系统的资源管理:机器语言+广义指令(扩展硬件指令)、操作系统的文件系统:机器语言+系统调用、数据库管理系统:数据库管理语言(扩展了功能更强的信息资源管理)】

二、什么是Java

1、Java帝国的诞生

2、Java的特性和优势

  1. 简单性
    Java中有一种机制:自动垃圾回收机制(GC机制),JVM(Java虚拟机)负责调度GC机制,程序员不需要干涉。Java语言屏蔽了指针概念,在Java语言中通过JVM在执行过程中去操作内存,所有的Java程序都是运行在JVM当中。对于c或者c++来说程序员是可以直接通过指针操作内存,但相对于c语言来说,Java不容易导致内存的泄漏,C++或者C语言使用不当时很容易导致内存泄漏。
  2. 可移植性
    编译后的Java程序可以在任何安装JDK的系统的系统上运行
  3. 面向对象
    所谓对象,就是指程序设计中的封装、继承、多态等设计方法。通过面向对象的方式,对人类来说可以让复杂的问题简单化。
    1)传统程序设计主张将程序看作一系列的函数的集合,或者说一系列对电脑下达的指令。这样的程序编写非常痛苦和繁琐,容易出错。
    2)面向对象程序设计中,每一个对象都能够接受数据、处理数据、将数据传达给其他对象。因此每一个功能单元都可以看作一个“小型机器”,也就是对象。
  4. 分布式
    建立在计算机网络之上,可以访问网络上的资源通过网络调用接口,一套程序不是全部在一台计算上,而是在多台计算上以通过互联网共同运行。比如客户端和服务器之间就是分布式关系,JavaWeb就是典型的分布式系统。
  5. 动态性
    反射机制
  6. 多线程
    线程是指允许一个应用程序同时存在两个或两个以上的线程,用于支持事务并发和多任务处理。 Java除了内置的多线程技术之外,还定义了一些类、方法等来建立和管理用户定义的多线程。
  7. 安全性
    1)Collector会让你的程序不会出现内存泄露。内存泄露是很危险的,黑客可以通过这个入侵你的电脑
    2)Exception,凡是错误的编码都会被检测出来,小红叉告诉你这里写错了,哪怕是已经在运行了,出现错误的时候也会告诉你哪里错了。
    3)没有指针,不容易导致内存的泄漏。
  8. 健壮性
    简单性、可移植性、安全性,共同构成了Java的健壮性

3、Java的三个版本

在这里插入图片描述

  1. JavaME(Java Platform Micro Edition,Java微型版):适用于小型设备和智能卡
  2. JavaSE(Java Platform Standard Edition,Java标准版):适用于桌面系统的
  3. JavaEE(Java Platform Enterprise Edition):开发企业环境下的应用程序,主要针对web程序开发

4、JDK、JRE、JVM

在这里插入图片描述
在这里插入图片描述JDK:Java开发工具箱
JRE:Java运行环境
JVM:Java虚拟机
JDK包括JRE,JRE包括JVM。JVM不能独立安装,JRE和JDK可以独立安装,安装JDK的时候JRE会自动安装,同时JRE内部的JVM也会自动安装。单独安装JRE的时候JVM也会自动安装,如果给客户部署项目只需要安装JRE即可。

三、Java的运行机制

1、高级语言的执行过程

计算机并不能接受和执行高级语言编写的程序,高级语言程序需要一个“翻译程序”来翻译成计算机能识别的二进制目标代码程序,这里的“翻译”通常有两种方式
1)编译,编译就是把一个事先编好的叫做“编译程序”的机器语言程序安装在计算机内,当需要执行高级语言程序时,编译程序就把整个“高级语言的源程序”翻译成“机器语言的目标程序”。比如c语言,经过编译后变成了exe可执行文件(在操作系统中可执行,不是在机器中可执行)。
在这里插入图片描述
2)解释,高级语言进入计算机后,解释程序一边扫描一边解释,逐句输入逐句翻译,计算机一行一行执行,并不产生目标程序,比如JAVA就是一种解释型高级语言。

2、Java的运行过程

编译期(可以在windows上)
第一步:新建一个xxx.java文件,使用记事本或者其它文本编辑器打开xxx.java文件
第二步:在xxx.java文件中编写"符合java语法规则的”源代码并保存
第三步:使用编译器(javac【JDK安装后自带】)对xxx.java文件进行编译。
第四步:如果xxx.java文件中编写的源代码是符合语法规则的,编译会通过,如果xxx.java文件中编写的源代码违背了语法规则,那么编译器会报错,编译器报错之后class文件是不会生成的,只有编译通过了才会生成class字节码文件。并且一个java源文件是可以生成多个class文件的。(编译实质上是检查语法)
运行期(JRE在起作用,可以在windows上,也可以在其他的os上)
第五步:如果是在Linux上运行,需要将windows上生成的ciass文件拷贝过去不需要拷贝源代码,真正运行的是字节码。(但是源代码也不要删除,有用)
第六步:使用JDK自带的一个命令/工具: java(负责运行的命令/工具)执行字节码
第七步:往下的步骤就全部交给JVM了,就不需要程序员干涉了。
JVM会将字节码文件装载进去,然后JVM对字节码进行解释(解释器负责将字节码解释为1010101010…等的二进制)
第八步:JVM会将生成的二进制码交给os操作系统,操作系统会执行二进制码和硬件进行交互。
在这里插入图片描述
注意:
.java文件就是源文件,这个文件中编写源代码。
.class文件就是字节码文件,但不是二进制文件,这个文件是编译源代码而得到的。
一个文件要被执行,必须要有一个执行的起始点,这个起始点就是main函数.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值