1 关键术语 1.1 简单性首先,我不是一个初学者。笔记仅仅作为知识的补充,笔记将记录其中比较特色,带入作者思考的部分。非操作性,且对实际编程有帮助的内容,会提到,不一定会展开。红色位置代表疑问,可以在后续章节,或者实际操作中完成。
关于这个方面,作者的观点比较有特色。
(1)语法简单
一个是语法上 Java 程序相对于 C++ 而言,删减了其中一些比较复杂的,类似于指针,多重继承,运算符重载,虚基类,结构体,联合这些概念。
(2)基本解释器小
在一些微处理器上,最内核的部分仅仅需要40KB。
1.2 面向对象Java 它是自上而下的,从整体到局部的过程;而 C++ 是自下而上的,从局部到整体过程,C++ 本身更注重工具层次。个人的理解,这部分更深层次的意思是, Java 更多的是考虑人的开发速度, C++ 更注重工具的执行效率。
作者认为两者的主要区别是 C++ 支持多重继承,而 Java 是以接口形式实现的,概念更简单。但是,随着 Java 版本的逐渐增加,实际上 Java 在这个方面,还是向着多重继承的方向上靠拢,或者说有这个趋势。JDK8 开始支持接口内的静态方法和默认方法,JDK9 开始支持接口内的私有静态方法和私有默认方法。我认为后续有继续向 C++ 多继承靠拢的可能性。
其中提到一个概念,运行时自省,需要在第五章解释。
1.3 分布式(网络)和多线程这两点,作者是分开描述的,但因为内容比较少,本身又存在共通性。所以笔记中把两者结合在一起进行叙述。他们的共同点是,都是由 Java 在较早的实际提供了系统库,使程序员再进行这两种操作的时候更方便。
其中多线程,作者有一个强调的点,它是第一个支持并发程序设计的主流语言。
因为 Java 本身不直接支持程序对于指针的操控,所以在安全性方面大大增加。无论是对于堆栈,内存,文件的控制,本身都无法通过外界直接操控,可以说在这个方面 Java 的隔离性做的比较好。但是也报出过安全性问题。
如前一段时间,服务器通过 Log4j2 记录攻击请求中包含的基于 JNDI 和 LDAP 的恶意负载,是攻击者控制的地址。记录的恶意负载被触发,服务器通过 JNDI 向请求。
1.5 class 文件、可移植性、解释器这几个其实都是体现 Java 的跨平台特性。class 文件这种中间格式的产生,是的整个运行速度要比二进制格式要慢的多,需要在不同平台上的解释器上做特定处理,然后才能执行。
同时也源于 Java 设计之初,把基本类型的格式大小调成一样,比如 int 整型固定为 32 位,在任何机器下运行都是一致的。
Java 原本不提供即时解释,立刻执行这种类似于 python 的功能,直到 JDK9 除了一个 jshell 才得以实现
1.6 高性能这部分作者提到的观点是,即时编译器可以及时优化代码。但实际操作过程中,同一段代码可能要执行成千上万次,才会起到对应的即时编译器的期望效果。
个人认为,性能主要体现在虚拟机版本和参数的适配上,好的调参可以充分发挥机器的性能。
1.7 动态性更好的描述是 JDK 自身的稳定性。高版本几乎可以完全兼容低版本的 JDK,而几乎没有副作用。同样的操作系统位数的情况下,是没有副作用的。但是实测,普遍认为 x86 版本的性能要更高一些,对空间的浪费更少。
发展史部分跳过。。。。个人认为对编程技术提升上没有帮助。。。。
1.8 常见误解这部分,个人认为有一部分观点,主观性很强,这部分跳过。
(1) Java 是 HTML 的扩展Java 是程序设计语言, HTML 是超文本标记语言,是用来描述网页结构的,不是程序语言,两者没有共通之处。两者不冲突,可以联合使用。
(2) 使用 XML 不需要 JavaJava 是程序设计语言,XML 是可扩展标记语言,是一种传输保存数据的格式,XML不是程序设计语言,两者不冲突,可以联合使用。
(3) Java 将成为使用与所有平台的通用性语言实际上苹果系统有 IOS, 微软电脑的有 WINDOWS, 这些领域,对应的系统已经具有独特优势, Java 无法进行替代。当然,理论上是可能的。
(4) Java 是解释型的,对于关键的应用程序速度太慢了有 JIT 和虚拟机调参的帮助,这个速度差异不会很明显。
(5) Java 有重大的安全风险和其它平台相比,Java 还是更安全。
(6) Javascript 是 Java 简易版。两者是完全不同的程序设计语言,其中 Java 是强类型的, Javascript 是弱类型的。
公众号:钰娘娘知识汇总,CSDN信息和其它学习内容将同步整理在这里,喜欢的话,关注一下吧!



