05 2014 档案
摘要: 欢迎来到“Under The Hood”第五期。本期我们来看看JVM中处理对象和数组的字节码。你可能需要阅读往期的文章才能更好的理解本文。
阅读全文
摘要: JVM支持IEEE-754浮点数标准(1985)。该标准定义了32位和64位浮点数的格式,以及在此之上的各种运算。在JVM中,浮点运算是基于32位float数和64位double数的。对每个操作float数的字节码,都有一个对应的操作double数的版本。
阅读全文
摘要: 字节码是JVM的机器语言。JVM加载类文件时,对类中的每个方法,它都会得到一个字节码流。这些字节码流保存在JVM的方法区中。在程序运行过程中,当一个方法被调用时,它的字节码流就会被执行。根据特定JVM设计者的选择,它们可以通过解释的方式,即时编译(Just-in-time compilation)的方式或其他技术的方式被执行。
阅读全文
摘要: Java类文件(.class文件)是一个为已编译Java程序仔细定义的格式。Java源代码被编译成能够被任何JVM加载和执行的类文件。在被JVM加载之前,类文件可能是由网络传输而来。类文件是独立于底层平台的,所以适用于更多的地方。它们由简洁的JVM字节码组成,这样就能轻装上阵。类文件常常被压缩,以极快的速度通过网络,到达世界各地的JVM。
阅读全文
摘要: JVM(Java虚拟机)是一个运行已编译Java程序的抽象计算机。之所以说是”虚拟“的,是因为它基于“真正”的硬件平台和操作系统,一般以软件的形式实现。所有的Java程序都为JVM而编译。因此,在特定平台上运行已编译Java程序之前,该平台的JVM必须先要被实现。
阅读全文
摘要: Java开发者,要想恰当的使用状态模式和策略模式,必须清楚的理解它们之间的区别。虽然状态模式和策略模式拥有相似的结构,虽然它们都基于SOLID设计原则中的O(开闭原则),但是,它们的意图是完全不同的。
阅读全文
摘要: 上一篇中,你看到了Java中Lambda表达式的一种形式:参数 + “->” + 表达式。如果代码实现的逻辑一条语句完成不了,你可以写成类似方法的形式:代码写在“{}”中,再加上显式的return语句。例如:
阅读全文
摘要: 变量作用域
你经常会想,如果可以在Lambda表达式里访问外部方法或类中变量就好了。
阅读全文
摘要: 在上世纪九十年代,Java被设计成了OOP语言,在当时,OOP是软件开发中的标杆。远在OOP还没有出现的时候,已经产生了FP语言,例如Lisp和Scheme,但是它们的益处,并没有受到学术圈外的人重视。最近,FP的重要性被提升了,因为它非常适合并发编程和事件驱动编程。然而,这并不意味着OO不好,相反,好的策略应该是混用OOP和FP。就算你对并发编程不感兴趣,这也很有道理。例如,如果编程语言有一个方便写函数表达式的语法,集合类库就能拥有强大的API。
阅读全文
摘要: 在软件开发中,好的建议是可遇不可求的。通用设计原则可以指导我们,但现实总是逼着我们,在看起来相互冲突的目标之间妥协,比如,可扩展性和可维护性与规模和复杂性。同样的,现有代码库可以在很大程度上让我们避免重复造轮子,但想要初级开发者轻松组合那些现有组件来做项目,依然不现实。
阅读全文