LetsCoding.cn

天地之间有杆秤,拿秤砣砸老百姓。

2014年5月11日

     摘要: 欢迎来到“Under The Hood”第七期。本期我们介绍JVM处理finally子句的方式及相关字节码。你可能需要阅读往期的文章才能更好的理解本文。

finally子句

JVM执行Java字节码时,它有几种方式可以退出一个代码块(花括号中间的语句)。其中之一,就是简单的执行完其中所有的语句,然后退出代码块。第二种,JVM可能会在代码块中间的任何一处,遇到像break,continue,return之类的语句,强制它跳出该代码块。第三种,JVM可能会在执行过程中,出现了异常,然后它跳转到匹配的catch子句,或者没有找到相应的catch子句,直接退出当前线程。由于单个代码块有如此多的潜在退出点(exit point),拥有一个简单的方式来表达“无论代码块以什么方式退出,有些事情总能发生”是很值得的。然后就有了try-finally子句。  阅读全文
posted @ 2014-06-08 02:42 Rolandz 阅读(2160) | 评论 (1)编辑 收藏
     摘要: 欢迎来到“Under The Hood”第六期。本期我们介绍JVM处理异常的方式,包括如何抛出和捕获异常及相关的字节码指令。但本文不会讨论finally子句,这是下期的主题。你可能需要阅读往期的文章才能更好的理解本文。

异常处理

在程序运行时,异常让你可以平滑的处理意外状况。为了演示JVM处理异常的方式,考虑NitPickyMath类,它提供对整数进行加,减,乘,除以及取余的操作。  阅读全文
posted @ 2014-06-02 03:54 Rolandz 阅读(2747) | 评论 (0)编辑 收藏
     摘要: 欢迎来到“Under The Hood”第五期。本期我们来看看JVM中处理对象和数组的字节码。你可能需要阅读往期的文章才能更好的理解本文。  阅读全文
posted @ 2014-05-30 02:14 Rolandz 阅读(1330) | 评论 (1)编辑 收藏
     摘要: JVM支持IEEE-754浮点数标准(1985)。该标准定义了32位和64位浮点数的格式,以及在此之上的各种运算。在JVM中,浮点运算是基于32位float数和64位double数的。对每个操作float数的字节码,都有一个对应的操作double数的版本。  阅读全文
posted @ 2014-05-26 15:09 Rolandz 阅读(1029) | 评论 (1)编辑 收藏
     摘要: 字节码是JVM的机器语言。JVM加载类文件时,对类中的每个方法,它都会得到一个字节码流。这些字节码流保存在JVM的方法区中。在程序运行过程中,当一个方法被调用时,它的字节码流就会被执行。根据特定JVM设计者的选择,它们可以通过解释的方式,即时编译(Just-in-time compilation)的方式或其他技术的方式被执行。  阅读全文
posted @ 2014-05-22 02:07 Rolandz 阅读(5081) | 评论 (4)编辑 收藏
     摘要: Java类文件(.class文件)是一个为已编译Java程序仔细定义的格式。Java源代码被编译成能够被任何JVM加载和执行的类文件。在被JVM加载之前,类文件可能是由网络传输而来。类文件是独立于底层平台的,所以适用于更多的地方。它们由简洁的JVM字节码组成,这样就能轻装上阵。类文件常常被压缩,以极快的速度通过网络,到达世界各地的JVM。  阅读全文
posted @ 2014-05-19 03:49 Rolandz 阅读(1749) | 评论 (2)编辑 收藏
     摘要: JVM(Java虚拟机)是一个运行已编译Java程序的抽象计算机。之所以说是”虚拟“的,是因为它基于“真正”的硬件平台和操作系统,一般以软件的形式实现。所有的Java程序都为JVM而编译。因此,在特定平台上运行已编译Java程序之前,该平台的JVM必须先要被实现。  阅读全文
posted @ 2014-05-17 21:50 Rolandz 阅读(1582) | 评论 (0)编辑 收藏
     摘要: Java开发者,要想恰当的使用状态模式和策略模式,必须清楚的理解它们之间的区别。虽然状态模式和策略模式拥有相似的结构,虽然它们都基于SOLID设计原则中的O(开闭原则),但是,它们的意图是完全不同的。  阅读全文
posted @ 2014-05-16 03:23 Rolandz 阅读(6384) | 评论 (1)编辑 收藏
     摘要: 上一篇中,你看到了Java中Lambda表达式的一种形式:参数 + “->” + 表达式。如果代码实现的逻辑一条语句完成不了,你可以写成类似方法的形式:代码写在“{}”中,再加上显式的return语句。例如:  阅读全文
posted @ 2014-05-11 12:07 Rolandz 阅读(1811) | 评论 (2)编辑 收藏
     摘要: 变量作用域

你经常会想,如果可以在Lambda表达式里访问外部方法或类中变量就好了。  阅读全文
posted @ 2014-05-11 12:07 Rolandz 阅读(3101) | 评论 (0)编辑 收藏
     摘要: 在上世纪九十年代,Java被设计成了OOP语言,在当时,OOP是软件开发中的标杆。远在OOP还没有出现的时候,已经产生了FP语言,例如Lisp和Scheme,但是它们的益处,并没有受到学术圈外的人重视。最近,FP的重要性被提升了,因为它非常适合并发编程和事件驱动编程。然而,这并不意味着OO不好,相反,好的策略应该是混用OOP和FP。就算你对并发编程不感兴趣,这也很有道理。例如,如果编程语言有一个方便写函数表达式的语法,集合类库就能拥有强大的API。  阅读全文
posted @ 2014-05-11 12:06 Rolandz 阅读(1668) | 评论 (1)编辑 收藏

导航

统计

留言簿(1)

随笔分类(12)

随笔档案(19)

积分与排名

最新评论

阅读排行榜

评论排行榜