60秒内使用Java 9的Project Jigsaw的JavaFX HelloWorld

到目前为止,您可能已经听说过Java 9的新模块系统,即项目Jigsaw。 如果您不了解Java 9的新模块系统,则应访问Mark Reinhold的论文“模块系统的状态” 。 此外,您还应该访问@nipafx Nicolai Parlog的出色博客, 网址为http://blog.codefx.org。在那里,他详细介绍了Java 9的新模块系统和许多场景。

在本文中,我将尝试向您展示如何在60秒内使用Java 9的模块系统创建JavaFX Helloworld应用程序。

要求

在撰写本文时,Java 9仍处于早期访问阶段,这意味着您需要在https://jdk9.java.net/download/上获取最新版本。

  • JDK 9 EA bu​​ild 114或更高版本( JDK 9 EA )

使用说明

假设您已经安装了JDK并设置了适当的环境变量。 另外,您将需要进入命令提示符或终端并键入:java -version来验证已安装的JDK。 例如。

screen-shot-2016-04-25-at-12-09-37-am

步骤1:在主目录中为项目创建目录,例如分别用于Windows OS,Linux和MacOS的目录。 另外,在helloworld项目目录下创建一个src目录。

# Windowsc:\Users\myusername>md helloworldc:\Users\myusername>md helloworld/src# Linux/user/home/myusername $ mkdir -p helloworld/src# Mac/Users/myusername$ mkdir -p helloworld/srccd helloworld

步骤2:根据Java 9的新方法来组织源代码和模块,使用简单的命名约定创建目录。

创建一个名为模块的目录,例如: com.mycompany.helloworld 。 假设当前目录为<用户的主目录> / helloworld /

mkdir src/com.mycompany.helloworld

步骤3:根据HelloWorld.java文件的程序包名称空间创建目录。 在此简单示例中,将使用以下目录结构创建主Helloworld.java

mkdir -p src/com.mycompany.helloworld/com/mycompany/helloworld

目录应如下所示:

<User Home dir>/helloworld/src/com.mycompany.helloworld/com/mycompany/helloworld/

步骤 4:   创建一个module-info.java文件。 这使编译器知道应用程序需要编译和运行哪些核心模块依赖性,例如javafx模块。 在helloworld / src / com.mycompany.helloworld目录下创建一个名为module-info.java的文件 将下面的代码复制并粘贴到module-info.java文件中。 使用vi,nano或记事本。

module com.mycompany.helloworld {requires javafx.base;requires javafx.graphics;requires javafx.controls;exports com.mycompany.helloworld;
}

步骤 5:   创建HelloWorld.java应用程序文件。 该文件将在目录helloworld / src / com.mycompany.helloworld / com / mycompany / helloworld /中创建。 将下面的代码复制并粘贴到HelloWorld.java应用程序中。

package com.mycompany.helloworld;import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.stage.Stage;/*** A JavaFX Hello World*/
public class HelloWorld extends Application {/*** @param args the command line arguments*/public static void main(String[] args) {Application.launch(args);}@Overridepublic void start(Stage stage) {stage.setTitle("Hello World");Group root = new Group();Scene scene = new Scene(root, 300, 250);Button btn = new Button();btn.setLayoutX(100);btn.setLayoutY(80);btn.setText("Hello World");btn.setOnAction( actionEvent -> System.out.println("Hello World"));root.getChildren().add(btn);stage.setScene(scene);stage.show();}
}

步骤 5:   使用带有编译模块位置的-d选项编译源代码。 新的helloworld模块的目录是mods / com.mycompany.helloworld

javac -d mods/com.mycompany.helloworld src/com.mycompany.helloworld/module-info.java src/com.mycompany.helloworld/com/mycompany/helloworld/HelloWorld.java

步骤 6:   将Hello World应用程序作为模块执行。 在将模块编译到mods目录中之后,您现在将使用Java 9的新-modulepath选项来指定已编译模块的目录。 另外,您将指定-m选项以执行该模块及其主类HelloWorld。 使用以下命令:

java -modulepath mods -m com.mycompany.helloworld/com.mycompany.helloworld.HelloWorld

上一条命令的输出:

screen-shot-2016-04-26-at-1-42-13-am

结论

不知道您是否花费了60秒以上的时间,但是假设您的环境已设置并且JDK 9已安装,您应该能够在几秒钟内剪切和粘贴代码。 我发现新的Java 9模块系统非常简单。 尽管为了让编译器知道模块在哪里有一些额外的输入,但实际上它与-classpath选项没有什么不同。

我可以看到大型项目可以将组件分解为模块并从中受益。 我相信在Java世界中,这确实是令人兴奋的时刻,因为工具将能够构建精简的可执行文件,从而缩短加载时间。 我觉得这已经是很长一段时间了,但是一个非常需要的功能将鼓励我们编写,管理和部署模块化软件。

翻译自: https://www.javacodegeeks.com/2016/04/javafx-helloworld-using-java-9s-project-jigsaw-60-seconds.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/353198.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

互补输出级采用共集形式是为了使_天津大学胡文平《先进材料》:溶液法制备厘米级高度取向有机晶体阵列,可用于高性能有机场效应晶体管...

有机场效应晶体管(OFET)以其低成本和柔性受到了广泛关注&#xff0c;在显示驱动、射频识别标签和逻辑电路等方面具有潜在应用。包括小分子材料和共轭聚合物在内的可溶性有机半导体(OSCs)由于其可溶液加工而引起了许多研究者的兴趣&#xff0c;这种溶液可加工性可通过在柔性基底…

win7系统 普通管理员被删除,超级管理员被禁用。普通用户下。怎么激活administrator

需要启用超级管理员帐户&#xff0c;然后可以在超级管理员账户安装&#xff0c;在标准用户下正常使用。 如果你也想启用超级管理员帐户&#xff0c;可以按如下的步骤操作&#xff1a;右键单击“计算机”→“管理”&#xff0c;双击“本地用户和组”→“用户”&#xff0c;在右边…

模运算及其性质

忘了是不是原创了&#xff0c;谁发现了地址请告知。 本文以c语言为载体&#xff0c;对基本的模运算应用进行了分析和程序设计&#xff0c;以理论和实际相结合的方法向大家介绍模运算的基本应用。。 基本理论 基本概念&#xff1a; 给定一个正整数p&#xff0c;任意一个整数n&a…

c++ 显示图片_飞利浦256P1FR显示器一线直连MacBook使用体验分享

前言嗨&#xff0c;大家好&#xff0c;我是默咖&#xff0c;一个喜欢分享的数码控。最近刚忙完给媳妇升级桌面&#xff0c;自己就忍不住想要换一个Type-C直连MacBook Pro的显示器了&#xff0c;不仅仅为了可以单线直连MacBook Pro也是为了减少拓展坞再接一个转接头的麻烦&#…

ghost快速安装系统的详细步骤?

很多时候我们安装系统都是在很快的时间内给安装完毕&#xff0c;不用像原来那样安装一个系统需要一个多小时&#xff0c;有了ghost是比较方便&#xff0c;十几分钟就可以把系统安装完&#xff0c;这也是DIY爱好者的福音&#xff0c;没有事情的时候安装下自己的系统&#xff0c;…

利用位运算的模四算法

将数列a1,2,3,4,5,6,7...变成4,4,4,4,8,8,8,8,12,12...一个很巧妙的办法((a3)>>2)<<2,当然不用位运算就可以用(a3)-(a3)%4 // 模4编号的实现 #include <stdio.h> #include <stdlib.h> int main() {/*for(int i1;i<100;i){//printf("%d %d …

字符内存转成字符串_字符串内存内部

字符内存转成字符串本文基于我对StackOverflow的回答 。 我正在尝试解释String类如何存储文本&#xff0c;内部存储和常量池如何工作。 这里要理解的要点是String Java对象与其内容– private value字段下的char[]之间的区别。 String基本上是char[]数组的包装器&#xff0c;将…

python安装库报错Microsoft visual c++ 14.0 is required问题解决办法

下载安装包安装即可&#xff1a; https://964279924.ctfile.com/fs/1445568-239446865 or http://www.liangchan.net/liangchan/10220.html转载于:https://www.cnblogs.com/stkares/p/9384424.html

Apache PDFBox命令行工具:无需Java编码

在博客文章Apache PDFBox 2中 &#xff0c;我演示了将Apache PDFBox 2用作从Java代码中调用的库来操作PDF。 事实证明&#xff0c;Apache PDFBox 2还提供了可以直接从命令行直接使用的命令行工具 &#xff0c;而无需其他Java编码。 有几种命令行工具可用&#xff0c;我将在本文…

shocked的歌曲 类似shell_Shell Shocked歌词

Shell Shocked歌词添加日期&#xff1a;2014-11-04 时长&#xff1a;03分24秒 歌手&#xff1a;忍者神龟Kylie Minogue - Speakerphonewww.9ku.com 活在当下 制作LightsMindEyesHeartsLights (Flashin) Sound (Crashin)Minds (Blowin) Body (Rockin)Eyes (Lockin) Lips (Touchi…

除法上取整、下取整

C &#xff1d; A / B&#xff1b;// 默认就是下取整 C &#xff1d; (AB-1)/B; // 上取整算法

intellij idea

使用intellij idea的经验、会慢慢补全 目录 转载于:https://www.cnblogs.com/black-/p/9391846.html

ACM中Java使用总结

Java在ACM中的主要应用是大数类【个人见解】。做个小总结&#xff0c;留作模板用。 类名默认为Main。 输入&#xff1a; 声明一个输入对象cin;Scanner cinnew Scanner(System.in); 输入一个int值&#xff1a;Int acin.nextInt(); 输入一个大数&#xff1a;BigDecimal acin.next…

在分析了47,251个依赖关系之后,2016年排名前100的Java库

谁在上面&#xff0c;谁在后面&#xff1f; 我们分析了Github上的47,251个依赖关系&#xff0c;并抽取了前100个Java库 长周末我们最喜欢的消遣是浏览Github并搜索流行的Java库。 我们决定与您分享乐趣和信息。 我们分析了Github上前3,862个Java项目使用的12,059个独特Java库…

tensorflow源码编译教程_源码编译安装tensorflow 1.8

参考官方指南基本要求官网测试过的源代码配置如下&#xff1a;image也就是说&#xff0c;按照这个版本安装的话不应该再产生版本的问题了。我的配置ubuntu 16python 2.7nccl 2.3gcc 4.8.5cuda 7.1.4cudnn 9.0 (具体是9.0.176但是在./configure的那里不用输这么仔细&#xff0c;…

html2canvas关于图片不能正常截取

问题 首先说说遇到了什么问题。首先有这么一个需求。需要前端根据后端传过来数据&#xff0c;动态的生成图片。图片中的文案、背景图片、用户头像全部都是通过后端的接口获取。但是使用 html2canvas 生成的canvas有些图片成功的在canvas里生成了。但是有些图片无论如何都显示不…

tortoise清理本地分支_本地:延庆运污水环卫抽化粪池

北京兴百荣清洁公司是清理排水管道的技术服务中心。提供下水道疏通&#xff0c;化粪池清理&#xff0c;抽污水&#xff0c;化粪池清掏&#xff0c;管道清淤&#xff0c;下水道清洗&#xff0c;化粪池清理&#xff0c;抽粪&#xff0c;管道疏通&#xff0c;雨水管道清理&#xf…

C++矩阵优化算法

写在前面的话&#xff1a;此矩阵优化算法并非原创&#xff0c;笔者只是转述了一种智慧。 在C中&#xff0c;定义一个矩阵通常是这样的: class MyMatrix { ........ public: ........ float data[50000]; } 这里为了方便说明问题&#xff0c;使用固定大小的数…

win7(windows 7)系统下安装SQL2005(SQL Server 2005)图文教程

由于工作需要&#xff0c;今天要在电脑上安装SQL Server 2005。以往的项目都是使用Oracle&#xff0c;MS的数据库还真的没怎么用过&#xff0c;安装Oracle已经轻车熟路&#xff0c;但装SQL Server好像还有点小麻烦&#xff0c;所以记录下来&#xff0c;以留备用。 ------------…

tensorflow中的Supervisor

tf.train.Supervisor()可以帮我们简化一些事情&#xff0c;可以保存模型参数和Summary&#xff0c;它有以下的作用&#xff1a; 1&#xff09;自动去checkpoint加载数据或初始化数据 &#xff0c;因此我们就不需要手动初始化或者从checkpoint中加载数据 2&#xff09;自身有一个…