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;这种溶液可加工性可通过在柔性基底…

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

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

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

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

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

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

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

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

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

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

抓娃娃机爪不动怎么办_黄子韬吃娃娃菜能把临时牙咬断?种植牙到底结实不结实?...

黄子韬的临时牙上热搜了&#xff0c;最高排名热搜榜第四位。有关牙齿的事儿瞬间让我这个口腔医生来了八卦之心&#xff0c;在看了后面的各种评论之后&#xff0c;我大概梳理清楚这到底是怎么回事了&#xff1a;小时候因为调皮所以摔断了门牙&#xff0c;前些日子门牙做了种植牙…

抖音数据统计_26万条抖音数据背后的推荐逻辑以及严重失调的男女比例

本文作者&#xff1a;喜哥&#xff08;张佳&#xff09;易灵微课《数据分析-认知与实践》讲师新榜数据分析师人人都是产品经理、华尔街见闻专栏作家简书科技类优秀作者本文首发自公众号喜新&#xff08;noyanjiu&#xff09;,如需转载请注明出处这次是26W条数据&#xff0c;应该…

SQL SERVER 数据库主键和外键的思考

SQL SERVER 数据库主键和外键的思考 什么是主键&#xff1a; 主键是指表中一个列或者列的组合&#xff0c;其值能够唯一的标识表中的每一个行。这样的一列或者多列成为表的主键&#xff0c;通过它可以强制表的实体完整性。当创建或者更改表时可以通过定义PRIMARY KEY约束来创建…

2018/7/31 -zznu-oj -问题 C: 磨刀- 【扩展欧几里得算法的基本应用】

问题 C: 磨刀 时间限制: 1 Sec 内存限制: 128 MB提交: 190 解决: 39[提交] [状态] [讨论版] [命题人:admin]题目描述 磨刀是一个讲究的工作&#xff0c;只能在n℃下进行&#xff0c;所以我们首先要做的就是把刀的表面温度提升到n℃。处理刀身温度有两种方式&#xff1a;1.淬火…

统计各个函数的耗时_分享一次CMS GC耗时狠高优化过程全记录

1. 背景多个业务线的应用出现LongGC告警最近一段时间&#xff0c;经常收到CAT报出来的Long GC告警(配置为大于3秒的为Longgc)。2. 知识回顾2.1 JVM堆内存划分新生代(Young Generation)新生代内被划分为三个区&#xff1a;Eden&#xff0c;from survivor&#xff0c;to survivor…

string类有可以调换方向的函数吗_深度剖析C++中的inline函数

点蓝色字关注“CurryCoder”微信公众号&#xff1a;CurryCoder的程序人生 怕什么真理无穷&#xff0c;进一寸有一寸的欢喜1.inline函数的爱恨两难内联函数比宏优点好很多&#xff0c;详细原因请参见尽量以const、enum、inline替换#define 。调用内联函数不需要承受函数调用所导…

javafx基础教程_JavaFX教程–基础

javafx基础教程JavaFX似乎正在RIA领域获得发展。 有了正确的工具和开发支持&#xff0c;它肯定会成为下一个最佳技术“物”的代价。 我没有在这里写任何JavaFX评论&#xff0c;因为有很多技术评论可能对它进行了广泛的评论&#xff0c;但是&#xff0c;我将编写一个简单的教程&…

什么是Spring Boot以及为什么它是用于创建微服务的首选框架

为什么要使用Spring Boot创建微服务&#xff1f; Spring Boot是Java领域众所周知的首选框架&#xff0c;用于创建Micro Services。 使用Spring引导框架&#xff0c;可以非常轻松地创建Java应用程序。 现在&#xff0c;我们将看到Spring启动框架的一些功能&#xff0c;这使其成为…

嵌入式开发有年龄限制吗_什么?!考教资有年龄限制了?2020年我还能考吗?...

近几年教师资格证越来越火爆越来越多的人都想报考&#xff0c;却又担心年龄问题&#xff0c;那么考教师资格证有年龄限制吗&#xff1f;下面小编就给大家解答一下这个问题&#xff1a;报考教师资格证是没有年龄限制的&#xff0c;只有学历限制。报考幼师教师资格证的考生必须是…

Python3的bytes/str之别

Python 3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分。文本总是Unicode&#xff0c;由str类型表示&#xff0c;二进制数据则由bytes类型表示。Python 3不会以任意隐式的方式混用str和bytes&#xff0c;正是这使得两者的区分特别清晰。你不能拼接字符串和字节…

jframe透明_使JFrame透明

jframe透明首先创建一个带有滑块的框架&#xff0c;该滑块将用于设置透明度量。 import javax.swing.JFrame; import javax.swing.JSlider;public class TransparentFrame extends JFrame {public TransparentFrame() {setTitle(Transparent Frame);setSize(400,400);setDefaul…