Java语言初探表面特性

1:java语言是面向对象的,静态语言【需要先编译后执行】,对象中封装了他的状态变量和相应的方法。执行的方式也是最初是直接解释执行后来增加了编译执行【JIT,解释器位于JVM中】的,具备高效性能。同时java是多线程、动态执行【是指java的执行代码是在运行时动态载入的(参考程序升级案例)。但java是静态语言 JVM虚拟机支持动态编译java源文件并加载类(就是支持动态加载代码模块并检查,且在运行时可以动态修改代码)】的,对类型具有严格检查【由字节码校验器完成】的语言。他会在语言定义,字节码检查,程序执行三个阶段(级)都进行代码检查,包括参数类型匹配,对象访问权限,内存(垃圾)回收【java提供了系统级线程完成此项功能】、越界,小应用使用等情况。事实上java对代码检查方式会根据代码来源的不同而不同,对于本地代码采用字节码校验器完成检查,对于网络加载的小应用会使用应用运行系统自主完成三级检查。Java以离线网页的形式提供了丰富的API文档和类库,可获取全部包名,类、接口详情。

 

2:java和C++非常类似,但删除了C++中不常用的地方,例如没有了指针、结构和类型定义等,没有全局变量,不支持多重继承,也没有#include和#define等预处理器,不用自己释放占用的内存。Java的重点在于对象和接口的设计,提供了简单的类机制和动态的接口模型,提供了一类对象的原型,可用来继承实现复用。Java解释器占用很少内存,能在大部分机器上运行。主要完成加载代码【类加载器】+检查代码【字节码校验器】+运行代码【运行时解释器】

 

3:java从一开始就着重从事网络应用,内置TCP/IP,HTTP,FTP等协议类库,具有分布式特性。Java内置语言级多线程功能,提供了Thred类,用来编写多线程程序,java的同步机制保证了各线程对共享数据的正确访问。而C与C++早期就不支持多线程,只能编写顺序执行的程序【C++11之后也支持多线程了】。真正的多线程需要多个CPU的物理基础+语言级线程支持。不支持多线程的程序语言在得到系统API的支持的情况下,也可以实现同一时刻做多件事的多进程效果。进程与线程的前世今生以及关系:早期只有进程【一个应用就是一个进程(程序,数据,进程控制组成)】,进程是获取计算机资源和可被调度运行【分配cpu时间片】的基本单位,不同进程之间相互天然隔离,拥有自己的独立空间【早期linux采用的是多进程不支持多线程】。但也因此创建销毁切换开销过大,进而引出了线程的概念,同时进程的概念也发生了相应的变化,进程作为线程的载体,一个进程至少包含一个(主)线程。进程依然作为获取计算机资源的基本单位线程则作为获取调配运行cpu时间片的基本单位,进程内的所有线程可并发执行,共享进程内的计算机资源。线程的创建销毁切换远比进程付出的开销小。进程间通信通过tcp/ip端口实现,线程间通信通过共享内存实现。

 

4:java程序运行的原理。首先java具备一次编译,到处运行的特性,【用java创建的二进制程序,可以不加改变的运行于多个平台】实现平台无关性,所以和运行在各种各样的设备上。这是源于他的编译和执行过程的特点决定的【源代码(.java)->字节码(.class一种特定的人二进制码)->机器指令(普通01代码)】。虽然java语言是平台无关的,但是JVM是与平台有关的,不同的机器要安装对应的JVMJVM的作用就是将字节码转换成平台对应的二进制文件,然后执行。源代码编译成字节码是具有统一格式的,这也源于java语言的严格规范,它不像C/C++依赖于站位宽度【int在16位和32位上占的字节数不同,编译结果也就不同】,java它是自己固定的,例如int占4个字节就是占4个字节,不会因为计算是多少位不同而不同,基本数据类型在所有平台都一致。JVM虚拟机就是用来执行【解释或转译】字节码的,并不关心字节码是什么语言编译而来的,这也就为其他语言提供了同样的跨平台机会。就JVM执行字节码这一过程中间存在将字节码转换成二进制码的重要步骤,JVM提供了两种混合运行方式,一种是解释运行【转译器逐行翻译执行微处理器指令,无需等待。】,另一种是编译执行【JIT以class为单位编译并缓存成原生指令码,直接在硬件平台上执行】

 

5:JDK ,JRE, JVM三者的关系。简单说就是包含关系JDK【JRE【JVM】】。JVM就是运来运行java程序的编译后的字节码的,但是只有JVM是运行不起来java程序的,因为JVM还需要调用一些类库lib帮助解释执行,所以这样说来,java运行环境JRE【就是运行java程序的】包括JVM和一些类库lib。JDK是java开发工具包,用来开发java程序的,针对于开发者的。他比JRE多了一些开发工具如编译器调试器等。所以jdk是最大的,有了jdk就能开发并运行java程序了。平时开发时往往我们会分别安装JRE和JDK【并列关系】,这样就相当于安装两个JRE。这两的异同点:都可以作为开发java程序的运行环境。Jdk自带的开发工具【用java开发的】,只能使用jdk自己目录下的JRE。而外部的独立的那个JRE,一般用于运行我们自己开发的java程序。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值