
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版本或需要安装系统缺少的依赖项时。
恭喜!你成功地运行了一个包含量子计算的程序。