JavaSPI(一)基础实例

我们系统里抽象的各个模块,往往有很多不同的实现方案,比如日志模块的方案,xml解析模块、jdbc模块的方案等。面向的对象的设计里,我们一般推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。一旦代码里涉及具体的实现类,就违反了可拔插的原则,如果需要替换一种实现,就需要修改代码。 为了实现在模块装配的时候能不在程序里动态指明,这就需要一种服务发现机制。java spi就是提供这样的一个机制:为某个接口寻找服务实现的机制。有点类似IOC的思想,就是将装配的控制权移到程序之外,在模块化设计 ...

Java注解(三)编译时注解

注解的处理除了可以在运行时通过反射机制处理外,还可以在编译期进行处理。 在编译期处理注解时,会处理到不再产生新的源文件为止,之后再对所有源文件进行编译。 在JDK6中,将注解处理器这一功能进行了规范化,形成了java.annotation.processing的API包,Mirror API则进行封装,形成javax.lang.model包。注解处理器的开发进行了简化,不再单独使用apt工具,而将此功能集成到了javac命令中。 1、定义注解 @Target(Element ...

Java注解(二)运行时注解

如果没有用来读取注解的工具,那注解将基本没有任何作用,它也不会比注释更有用,读取注解的工具叫作注解处理器。 Java提供了两种方式来处理注解: 第一种是利用运行时反射机制; 另一种是使用Java提供的API来处理编译期的注解。 本文章主要讲解使用反射机制方式的注解处理器,仅当定义的注解的@Retention为RUNTIME时,才能够通过运行时的反射机制来处理注解。 下面结合例子来说明这种方式的处理方法。 Java中的反射API(如java.lang.Class ...

Java注解(一)注解基础

注解(Annotation)是在JAVA5中开始引入的,它为在代码中添加信息提供了一种新的方式。注解在一定程度上把元数据与源代码文件结合在一起,正如许多成熟的框架(Spring)所做的那样。那么,注解到底可以做什么呢? 1、注解的作用 提供用来完整地描述程序所需要的信息,如编译期校验程序信息。 生成描述符文件,或生成新类的定义。 减轻编写“样板”代码(配置文件)的负担,可以使用注解自动生成。 更加干净易读的代码。 编译期类型检查。 2、Java提供的标 ...

Java锁(五)CyclicBarrier分析

CyclicBarrier的字面意思是可循环使用(Cyclic)的屏障(Barrier)。它要做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续干活。CyclicBarrier默认的构造方法是CyclicBarrier(int parties),其参数表示屏障拦截的线程数量,每个线程调用await方法告诉CyclicBarrier我已经到达了屏障,然后当前线程被阻塞。 1、CyclicBarrier使用实例 ...

OpenJDK8构建

1.环境介绍 OpenJDK代码: http://hg.openjdk.java.net/jdk8u/jdk8u 2.JDK安装 这里安装的是构建OpenJDK需要依赖的JDK, 一般是当前构建版本的上一个版本, 比如我们这里需要安装JDK7,已经安装的可以略过这一步。 sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java7-in ...

JNI(一)使用实例HelloWorld

1、编写Java程序TestHello类,声明native方法hello。 package com.charles; public class TestHello { static { System.loadLibrary("TestHello"); } public static native void hello(String msg); public static void main(Strin ...

Java并发(一)volatile使用和解析

volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解一下与内存模型相关的概念和知识,然后分析了volatile关键字的实现原理。 1、内存模型 ...