Java 笔记【第一章 Java程序设计概念】


Java 白皮书的关键术语(节选)

  • 简单性: Java 语法是C++ 语法的一个纯净版本。这里没有头文件、指针运算、结构、联合、操作符重载、虚基类等。 现在有一个独立的具有较小类库的Java 微型版,这个版本适用嵌入式设备。

  • 面向对象:面向对象是一种程序设计技术。它将重点放在数据(即对象)和对象的接口上。

  • 分布式:Java 有一个丰富的例程库,用于处理像HTTP 和 FTP 之类的TCP/IP 协议。 Java 应用程序能够通过URL打开和访问网络上的对象。

  • 健壮性: Java 和 C++ 最大的不同在于Java 采用的指针模型可以消除重写内存和损坏数据的可能性。

  • 安全性: 不可行代码在一个沙箱环境中执行,在这里它不会影响主系统。用户可以确信不会发生不好的事情。因为Java 代码不论来自哪里,都不能脱离沙箱。

  • 体系结构中立: 编译器 -> 字节码 -> 动态翻译成本地机器代码 虚拟机中有一个选项可以将执行最频繁的字节码序列翻译成机器码,这一过程称为即时编译。

  • 可移植性: 在Java 中,数据类型具有固定的大小。

  • 高性能: 字节码可以在运行时刻,动态地翻译成对应运行这个应用的特定CPU的机器码。 即时编译器可以监控经常执行哪些代码并优化这些代码以提高速度。更为复杂的优化是消除函数调用(即内联)。即时编译知道哪些类已经加载。基于当前加载的类集,如果特定的函数不会被覆盖,就可以使用内联。必要时,可以撤销优化。

  • 多线程: Java 是第一个支持并发程序设计的主流语言。


关于字节码、编译器、即时编译、JVM等的关系
  • 字节码:Java 编译器(javac.exe)将Java 源文件(.Java)编译成字节码文件(.class)

  • JVM:一种呢你够运行Java字节码的虚拟机。

  • JVM 把每一条要执行的字节码交给解释器,翻译成对应的机器码,然后由解释器执行。

  • Java解释器:是JVM的一部分。是一种电脑程序,能够把高级编程语言一行一行直接翻译运行。解释器不会一次把整个程序翻译出来,只像一位“中间人”,每次运行程序时都要先转成另一种语言再作运行,因此解释器的程序运行速度比较缓慢。它每翻译一行程序叙述就立刻运行,然后再翻译下一行,再运行,如此不停地进行下去。

  • 即时编译(Just-in-time compilation: JIT):又叫实时编译、及时编译。是指一种在运行时期把字节码编译成原生机器码的技术,一句一句翻译源代码,但是会将翻译过的代码缓存起来以降低性能耗损。这项技术是被用来改善虚拟机的性能的。JIT编译器是JRE的一部分。原本的Java程序都是要经过解释执行的,其执行速度肯定比可执行的二进制字节码程序慢。为了提高执行速度,引入了JIT。在运行时,JIT会把翻译过来的机器码保存起来,以备下次使用。而如果JIT对每条字节码都进行编译,则会负担过重,所以,JIT只会对经常执行的字节码进行编译,如循环,高频度使用的方法等。它会以整个方法为单位,一次性将整个方法的字节码编译为本地机器码,然后直接运行编译后的机器码。

  • 机器码,完全依附硬件而存在,并且不同硬件由于内嵌指令集不同,即使相同的0 1代码 意思也可能是不同的,根本不存在跨平台性。比如,不同型号的CPU,你给他个指令10001101,他们可能会解析为不同的结果。

  • JAVA是跨平台的因为JVM, 无论哪种硬件只要你装有JVM,那么他就认识这个JAVA字节码.至于底层的机器码,咱不用管,JVM会把字节码再翻译成所在机器认识的机器码。

参考博客
Bill好想


对JIT的进一步探索

JVM运行原理:
JVM运行原理

在部分商用虚拟机中(如HotSpot),Java程序最初是通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为“热点代码”。为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器。

更多详细介绍可以参考:博客nogos

2018年2月6日00:41:30
– end –

Java面向对象程序设计第三版耿祥义第一章主要介绍了Java基础知识和面向对象的概念。 1. Java语言的特点 Java语言是一种面向对象的编程语言,具有以下特点: - 简单易学:Java语言的语法类似C++,但是去掉了C++中比较难理解的特性,使得Java更加容易学习和使用。 - 面向对象:Java语言是一种纯面向对象的编程语言,所有的程序都是由对象组成的。 - 平台无关性:Java语言可以在不同的操作系统和硬件平台上运行,只需要安装相应的Java虚拟机即可。 - 安全性:Java语言的安全性非常高,可以在不信任的环境下运行程序,避免了一些安全漏洞。 - 高性能:Java语言的运行速度比较快,且可以通过各种优化技术来提高性能。 2. 面向对象的概念 面向对象是一种软件设计的思想,其核心是将问题看作是由对象组成的。对象是指具有一定属性和行为的实体,属性是对象的特征,行为是对象的动作。 在面向对象的设计中,需要考虑以下几个方面: - 类的设计:类是创建对象的模板,需要定义类的属性和方法。 - 对象的创建:创建对象时,需要使用new关键字来调用类的构造方法。 - 对象的访问:访问对象的属性和方法时,需要使用点号操作符来进行访问。 - 继承和多态:继承是指一个类可以继承另一个类的属性和方法,多态是指同一种行为可以用不同的方式实现。 3. Java基础知识 Java语言的基础知识包括数据类型、运算符、流程控制语句等。 - 数据类型:Java语言的数据类型包括基本数据类型和引用数据类型。基本数据类型包括整型、浮点型、字符型和布尔型,引用数据类型包括类、接口、数组等。 - 运算符:Java语言的运算符包括算术运算符、关系运算符、逻辑运算符、位运算符等。 - 流程控制语句:Java语言的流程控制语句包括if语句、switch语句、for循环、while循环、do-while循环等。 4. Java程序的基本结构 Java程序的基本结构包括类的定义、方法的定义和语句块的定义。 - 类的定义:类是Java程序的基本组成单元,需要使用class关键字来定义类。 - 方法的定义:方法是类中的一个函数,用于实现特定的功能,需要使用方法名、参数列表和返回值类型来定义方法。 - 语句块的定义:语句块是一组语句的集合,需要使用大括号来定义语句块。 总的来说,Java面向对象程序设计第三版耿祥义第一章介绍了Java语言的基础知识和面向对象的概念,为后续的学习打下了基础
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值