量子计算实战
上QQ阅读APP看书,第一时间看更新

2.2 用Strange运行第一个示例程序

本书附带一个包含许多使用Strange的示例的代码库,可以在本书的配套资源中找到此代码库。附录A解释了运行示例的要求和说明,第一个示例位于ch02/hellostrange目录中。

注意:所有示例都要求使用Java 11或更高版本,附录A包含了安装必需的Java软件的指导。

可以使用Gradle或Maven构建工具构建并运行示例。示例中包含可用Gradle处理的build.gradle文件和可用Maven处理的pom.xml文件。

建议你使用最喜欢的IDE(IntelliJ、Eclipse 或 NetBeans等)运行这些示例程序。每个IDE关于如何运行Java应用程序的说明都不同。本书通过命令行使用Gradle和Maven构建系统,并使用其提供的Gradle和Maven配置文件,隐式地确保下载所有必需的代码依赖项,如图2.2所示。

图2.2 利用Gradle或Maven运行Java应用程序

注意:在使用命令行界面运行示例时,Maven和Gradle采用的方法略有不同。使用Maven时,需要执行cd命令进入示例所在的目录(包含pom.xml文件)。而使用Gradle时,需要留在根目录(包含.gradle构建文件),并提供章节和项目名称以运行示例。我们将在HelloStrange示例中进行解释。

如果要使用Maven构建系统以运行基本的HelloStrange应用程序,则需要进入ch02/hellostrange目录,然后执行

mvn clean javafx:run

结果如下所示:

mvn clean javafx:run
[INFO] Scanning for projects...
[INFO]
[INFO] ---------------------------------------------------------------------
[INFO] Building hellostrange 1.0-SNAPSHOT
[INFO] ---------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ helloquantum ---
[INFO] Deleting /home/johan/quantumcomputing/manning/public/quantumjava/ch02
/hellostrange/target
[INFO]
[INFO] >>> javafx-maven-plugin:0.0.6:run (default-cli) > process-classes @ h
elloquantum >>>
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ helloq
uantum ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/johan/quantumcomputing/mann
ing/public/quantumjava/ch02/hellostrange/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ helloquantu
m ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to /home/johan/quantumcomputing/manning/publi
c/quantumjava/ch02/hellostrange/target/classes
[INFO]
[INFO] <<< javafx-maven-plugin:0.0.6:run (default-cli) < process-classes @ h
elloquantum <<<
[INFO]
[INFO] --- javafx-maven-plugin:0.0.6:run (default-cli) @ helloquantum ---
[INFO] Toolchain in javafx-maven-plugin null
Using high-level Strange API to generate random bits
\----------------------------------------------------
Generate one random bit, which can be 0 or 1. Result = 1
Generated 10000 random bits, 4967 of them were 0, and 5033 were 1.
[INFO] ---------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ---------------------------------------------------------------------
[INFO] Total time: 1.790 s
[INFO] Finished at: 2021-08-18T14:52:58+02:00
[INFO] Final Memory: 13M/54M
[INFO] ---------------------------------------------------------------------

注意:有经验的Maven用户可能会好奇为什么不直接用mvn exec: java命令使用Maven的Java插件。我们推荐使用mvn javafx: run,因为这包含了Maven JavaFX插件。这个插件同时支持标准的Java应用程序和JavaFX应用程序的运行。我们将在生成用户界面的许多示例中用到后者。为了避免在Java和JavaFX插件中来回切换,始终调用JavaFX插件更加方便。但当我们运行不带用户界面的Java应用程序时,并不严格要求这样做。

如果使用Gradle,则需要在根目录下运行Gradle,并传入项目的名称。你可以查阅settings.gradle文件的内容,里面包含代码库所有项目的名称。

在Linux和macOS运行程序的命令是

./gradlew ch02:hellostrange:run

在Windows运行程序的命令是

gradlew.bat ch02:hellostrange:run

这些命令都将得到如下输出:

> Task :run
Using high-level Strange API to generate random bits
----------------------------------------------------
Generate one random bit, which can be 0 or 1. Result = 1
Generated 10000 random bits, 4961 of them were 0, and 5039 were 1.
 
BUILD SUCCESSFUL in 3s

注意:Gradle可能输出更多内容,尤其是当你第一次使用某个Gradle版本或需要安装系统缺少的依赖项时。

恭喜!你成功地运行了一个包含量子计算的程序。