
专栏合集(一):Java深度历险
本迷你书源自成富先生为InfoQ中文站撰写的《Java深度历险》专栏。本专栏的十篇文章,是关于Java不同方面但深入浅出的主题内容。在几乎每篇专栏的结尾,都有多于平均数量的积极的评论,在InfoQ内部月度内容排行上尤为突出。同样是出于读者的呼声,才有了这本迷你书面世的可能。

本迷你书源自成富先生为InfoQ中文站撰写的《Java深度历险》专栏。本专栏的十篇文章,是关于Java不同方面但深入浅出的主题内容。在几乎每篇专栏的结尾,都有多于平均数量的积极的评论,在InfoQ内部月度内容排行上尤为突出。同样是出于读者的呼声,才有了这本迷你书面世的可能。

对于一个存在于Java虚拟机中的对象来说,其内部的状态只保持在内存中。JVM停止之后,这些状态就丢失了。在很多情况下,对象的内部状态是需要被持久化下来的。对象序列化机制是Java语言内建的一种对象持久化方式,可以很容易的在JVM中的活动对象和字节数组(流)之间进行转换。

安全性是Java应用程序的非功能性需求的重要组成部分,如同其它的非功能性需求一样,安全性很容易被开发人员所忽略。当然,对于Java EE的开发人员来说,安全性的话题可能没那么陌生,用户认证和授权可能是绝大部分Web应用都有的功能。类似Spring Security这样的框架,也使得开发变得更加简单。本文并不会讨论Web应用的安全性,而是介绍Java安全一些底层和基本的内容。

在应用程序中,通常会涉及到两种类型的计算:CPU计算和I/O计算。对于大多数应用来说,花费在等待I/O上的时间是占较大比重的。通常需要等待速度较慢的磁盘或是网络连接完成I/O请求,才能继续后面的CPU计算任务。因此提高I/O操作的效率对应用的性能有较大的帮助。本文将介绍Java语言中与I/O操作相关的内容,包括基本的Java I/O和Java NIO,着重于基本概念和最佳实践。

在上一篇文章中介绍Java注解的时候,多次提到了Java的反射API。与javax.lang.model不同的是,通过反射API可以获取程序在运行时刻的内部结构。反射API中提供的动态代理也是非常强大的功能,可以原生实现AOP中 的方法拦截功能。

JDK 5中引入了源代码中的注解(annotation)这一机制。注解使得Java源代码中不但可以包含功能性的实现代码,还可以添加元数据。注解的功能类似于代码中的注释,所不同的是注解不是提供代码功能的说明,而是实现程序功能的重要组成部分。Java注解已经在很多框架中得到了广泛的使用,用来简化程序中的配置。

Java语言的一个重要特性是引入了自动的内存管理机制,使得开发人员不用自己来管理应用中的内存。Java平台通过垃圾回收器来进行自动的内存管理。本文讲述了Java垃圾回收机制与引用类型。

对于Java来说,在语言内部提供了线程的支持。但是Java的多线程应用开发会遇到很多问题。首先是很难编写正确,其次是很难测试是否正确,最后是出现问题时很难调试。一个多线程应用可能运行了好几天都没问题,然后突然就出现了问题,之后却又无法再次重现出来。如果在正确性之外,还需要考虑应用的吞吐量和性能优化的话,就会更加复杂。本文主要介绍Java中的线程的基本概念、可见性和线程同步相关的内容。

在上一篇文章中介绍了Java字节代码的操纵,其中提到了利用Java类加载器来加载修改过后的字节代码并在JVM上执行。本文接着上一篇的话题,讨论Java类的加载、链接和初始化。

Java类文件中包含的字节代码可以被不同平台上的JVM所使用。Java字节代码不仅可以以文件形式存在于磁盘上,也可以通过网络方式来下载,还可以只存在于内存中。JVM中的类加载器会负责从包含字节代码的字节数组(byte[])中定义出Java类。在某些情况下,可能会需要动态的生成 Java字节代码,或是对已有的Java字节代码进行修改。这个时候就需要用到本文中将要介绍的相关技术。

本迷你书源自成富先生为InfoQ中文站撰写的《Java深度历险》专栏。本专栏的十篇文章,是关于Java不同方面但深入浅出的主题内容。在几乎每篇专栏的结尾,都有多于平均数量的积极的评论,在InfoQ内部月度内容排行上尤为突出。同样是出于读者的呼声,才有了这本迷你书面世的可能。