我已经玩 JDK8 Lambda Developer Preview 几个星期了。以下是我为简化代码的编译和测试所做的工作:
配置 JEdit 以编译 JDK 8 代码
以下指南介绍了如何配置 Apache Ant 和 JEdit,以便使用 JDK 8 Lambda 表达式和 JDK 8 Lambda 开发者预览版中的新 API 功能轻松编译源代码。
这就是我今天所做的,主要是因为还没有 IDE 支持这些 JDK 8 功能。
下载以下内容:
然后创建如下目录结构:
Sanbox
|-----jdk8
|-----ant
|-----projects
- 将未压缩的 JDK 构建放在 jdk8 目录中。
- 将解压后的 Apache Ant 放到 ant 目录中。
- 项目目录将用于 JEdit 项目。
然后安装以下 JEdit 插件:
- 蚂蚁农场
- Java 折叠
- 项目生成器
- 项目查看器
- 项目向导
- SVN 插件(我用它来同步我的项目和我的仓库,不过你可能不需要它)
现在,配置您的 Apache Ant:
- 在您的主文件夹中创建一个名为 antrc_pre.bat 的文件(即 %USERPROFILE%\antrc_pre.bat)。
- (注意:如果您使用的是 Linux,您可以在 ~/.ant/ant.conf 中进行配置)。
- 该文件将在运行任何任务之前由 Apache Ant 运行,因此,这是一个通过定义 JAVA_HOME 变量来配置或覆盖要使用的 JDK 的地方。
- 在此文件的顶部定义 JAVA_HOME 变量并使其指向安装 JDK8 的目录。有点像这样:
SET JAVA_HOME=C:\Sanbox\jdk8
- 确保在完成 JDK 8 会话后将其注释掉,以便 Ant 继续使用默认配置。
是时候配置 JEdit Ant 插件了
- 在 JEdit 中转到插件 -> 插件选项 -> Ant Farm -> 构建选项
- 在对话框中选择选项:“使用外部脚本/构建文件运行 Ant 目标”
- 选择 ant.bat 脚本(即 C:\Sandbox\ant\bin\ant.bat)。
- 注意:如果您使用的是 Ant 1.8.x,可能需要在插件的属性部分添加一个属性:build.compiler=javac1.7,否则编译时会出错JDK 8。不过,Ant 1.7 没有这个问题。
然后新建一个Java项目:
- 在 JEdit 中转到插件 -> 项目生成器 -> 创建新项目
- 选择 Java 应用程序并单击下一步
- 选择您的项目目录作为查找文件的位置(即 C:\Sanbox\projects)。
瞧!此时,JEdit 会在工具栏中呈现四个按钮:Build Application、Compile、Clean 和 Run Application。这些都是基于 build.xml 文件并根据相应的 Ant 任务执行的。一切顺利,您可以开始编写 lambda 表达式并使用新的 API:-)
并行示例
在上一个开发者预览版 (b50) 中,几乎没有实现并行。我可以看到他们在一个单独的分支中做更多的工作(如果你想下载并构建 OpenJDK8 源代码)。
但是,您可以使用 Arrays.parallell 方法在数组上创建 ParallelIterable 包装器。您可以使用它来测试一些并行功能。
我做了一个例子来在一个大数组中找到素数。当我并行运行它时,我可以验证我所有的四个内核都被使用了。
Integer[] source = new Integer[30000000];
for(int i=0; i<source.length; i++)
source[i] = i;
ParallelIterable<Integer> allIntegers = Arrays.parallel(source).filter(isPrime);
Iterable<Integer> primes = allIntegers.into(new LinkedList<Integer>());
这在我使用 Apache Ant 8.4.x 和 JDk8-b50 的 JEdit 项目中编译和运行良好。
我希望这会有所帮助。
警察局:
为了不影响示例的简单性,我没有在上面的代码中定义谓词isPrime。我很确定每个人都可以轻松地定义一个素数谓词来尝试这段代码。