Well, Java 9 is available so let’s make modules!

模块化在Java9中是炒鸡炒鸡重要的!今后,模块将是应用程序的基础构建单位。无论是使用动态语言或静态语言编写,模块都是应用程序的一个重要组成部分,且模块遵循单一功能原则。你可以将任意方法称为模块,正如函数式编程也是基于模块一样。好了,总之,你get到这个点之后就记住:以后模块很重要很重要很重要 The important thing is need to be said 3 times!

步骤:

  • 步骤1:下载Java 9并安装
  • 步骤2:创建一个模块java文件
  • 步骤3:模块文件路径
  • 步骤4:编写一个模块
  • 步骤5:向我们的模块添加代码
  • 步骤6:编译我们的模块
  • 步骤7:运行我们的模块

1、下载Java 9并安装

下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html

下载后,只需点击它即可进行安装(如果您在MacOS上),并确认已安装:

tomerb@tomerb-mac.local:~$ java --version
java 9-ea
Java(TM) SE Runtime Environment (build 9-ea+164)
Java HotSpot(TM) 64-Bit Server VM (build 9-ea+164, mixed mode)
tomerb@tomerb-mac.local:~$ cd ~/tmp
tomerb@tomerb-mac.local:~$ mkdir -p ~/tmp/java9-modules
tomerb@tomerb-mac.local:~$ cd ~/tmp/java9-modules

2、创建一个模块java文件

在Java 9中,为了定义模块,需要为java文件设定一个特别的名字,建议为: module-info.java

3、模块文件路径

module-info.java 应该放在哪里呢?按照惯例,应该把它放在和模块名相同的目录下。

如果你的模块名称是com.me.mymodule那么你的模块  module-info.java 应该放在:src/com.me.mymodule这使您的  module-info.java 文件放在:src/com.me.mymodule/module-info.java 路径。得到它了? <module-path> == <module name> 

4、编写一个模块

现在我们知道我们的模块 filename 和我们的模块 filepath,我们来编写一个具有这个命名和文件夹约定的模块:

tomerb@tomerb-mac.local:~/tmp/java9-modules$ mkdir -p src/com.me.mymodule
tomerb@tomerb-mac.local:~/tmp/java9-modules$ vi src/com.me.mymodule/module-info.java
module com.me.mymodule { }

至此,我们就完成了一个模块的编写!

5、向我们的模块添加代码

在这一步中,我们将向我们的模块添加一些代码!在同一目录下创建一个新的java文件来作为我们的模块:

$ mkdir -p src/com.me.mymodule/com/me/mymodule
$ vi src/com.me.mymodule/com/me/mymodule/Main.java

注意我们代码中的目录名称。为什么这样做呢? 我们首先输入我们模块所在的路径,然后我们为源代码创建完整的包名称。在这种情况下, /com/me/mymodule/com.me.mymodule 的上层。只是我们的源文件属于我们的模块,并且模块已经在Java 9惯例的标准模块目录中。

所以,我们就在Main.java编写hello world:

package com.me.mymodule;
public class Main {public static void main(String[] args) {System.out.println("Hello World from Module! :)"); // nothing special here, standard java < 9 class.}
}

6、编译我们的模块

首先制作 mods 目录(我们将进一步传递给: java --module-path):

$ mkdir -p mods/com.me.mymodule
$ javac -d mods/com.me.mymodule \src/com.me.mymodule/module-info.java \src/com.me.mymodule/com/me/mymodule/Main.java

轻动你高贵的手指,让编译器再跑一会儿!

7、运行我们的模块

$ java --module-path mods -m com.me.mymodule/com.me.mymodule.Main
Hello World from Module! :)

总结

在这部分中,我们下载了Java 9,创建了一个模块,向其中添加了一个源文件,并运行它。我们看到在创建源代码时创建模块路径和类似的东西时,需要遵循一个命名约定。

原文:https://dzone.com/articles/java-9-tutorial-step-by-step-from-zero-to-modules

Java 9 : 从零开始实现模块化(一)相关推荐

  1. 使用Java语言从零开始创建区块链

    使用Java语言从零开始创建区块链 2018年04月01日 17:08:12 大侠区块链 阅读数:1312 标签: java区块链java区块链 更多 个人分类: 区块链 Java区块链开发与交流群: ...

  2. 使用Java语言从零开始创建区块连

    使用Java语言从零开始创建区块连: http://developer.51cto.com/art/201803/568032.htm

  3. java 模块设计模式_Java9模块化学习笔记二之模块设计模式

    模块设计的原则: 1.防止出现编译时循环依赖(主要是编译器不支持),但运行时是允许循环依赖的,比如GUI应用 2.明确模块的边界 几种模块设计: API模块,聚合模块(比如java.base) 可选依 ...

  4. java 模块开发_java模块化开发

    利用java默认作用域实现类限制访问 大多数开发者在创建java类时,往往不假思索就是public,这样意味着所有人都可以访问.这样在大型项目开发中往往造成混乱,导致代码难以维护. public 类 ...

  5. windows java eclipse_从零开始学 Java - Windows 下安装 Eclipse

    三观是什么鬼 当我们在讨论「三观一致」的时候是在讨论些什么? 我认为这个世界上本没有「三观」这一说法,说的人多了,也就有了「三观」这个词,当我们讨论「三观一致」其实并不是真的在说世界观.价值观.人生观 ...

  6. 【Java基础】JDK9 模块化

    本文所有内容均摘录自互联网,文末有参考文献,仅做整理和记录. 背景 本篇文章,我们将了解下 Java 9 带给我们的新特性-- Java 平台模块化系统(JPMS, Java Platform Mod ...

  7. (JAVA)从零开始之--打印流PrintStream记录日志文件

    这里的记录日志是利用打印流来实现的. 文本信息中的内容为String类型.而像文件中写入数据,我们经常用到的还有文件输出流对象FileOutputStream. 1 File file = new F ...

  8. 写给java初学者,从零开始学习java开发的完整学习路线

    要问编程王者是谁?自然是非java莫属!发展了20多年,学习java的人络绎不绝.不管是有计算机基础还是没有基础,都想学习这门前途无量的技术.这时候有人担心了,零基础该怎么学java呢?会不会困难重重 ...

  9. 挖矿区块链_使用Java语言从零开始创建区块链

    目前网络上关于区块链入门.科普的文章不少,本文就不再赘述区块链的基本概念了,如果对区块链不是很了解的话,可以看一下我之前收集的一些入门学习资源:http://blog.51cto.com/zero01 ...

  10. quartz java spring_从零开始学 Java - Spring 使用 Quartz 任务调度定时器

    生活的味道 睁开眼看一看窗外的阳光,伸一个懒腰,拿起放在床一旁的水白开水,甜甜的味道,晃着尾巴东张西望的猫猫,在窗台上舞蹈.你向生活微笑,生活也向你微笑. 请你不要询问我的未来,这有些可笑.你问我你是 ...

最新文章

  1. [20170622]传输表空间与dblink.txt
  2. 其他OJ 树型DP 选课
  3. java-------------华为-----------字符串链接最长路径查询
  4. 修改 class_带你探索JVM的Class文件结构
  5. 超适合新手的Oracle查询语句
  6. OpenCASCADE:调试工具和提示
  7. Java黑皮书课后题第10章:10.4(MyPoint类)设计一个名为MyPoint的类,代表一个以x坐标和y坐标表示的点
  8. Golang Hash MD4
  9. webpack入门+路由配置
  10. 在Linux上使用Qt编译WebKit
  11. 酷站60个漂亮可用的外文站点欣赏(经典推荐)
  12. python怎么打开h5文件_Python 操作 HDF5文件
  13. 文件监控脚本 -- Linux bash
  14. 东秦OJ_1841: 超级密码
  15. DDR4的特性与电气参数
  16. linux gadget 模拟鼠标,HID设备--开发板模拟鼠标
  17. OSI七层网络模型概念
  18. 不定积分——类似1/(1+e^x)的积分
  19. python怎么选取第几行第几列_python DataFrame获取行数、列数、索引及第几行第几列的值方法...
  20. 一键分享功能ShareSDK

热门文章

  1. LayoutInflater的使用
  2. 【渝粤题库】陕西师范大学164113 电子支付 作业(专升本)
  3. 一张图解释什么是遗传算法_什么是遗传算法?怎样绘制遗传算法流程图
  4. dx10游戏测试软件,GPU评测:3DMark与DX10/11游戏评测
  5. HealthKit详解
  6. hadoop FileSplit
  7. 华为设备MSTP配置命令
  8. 从巨潮资讯网获取数据
  9. 超全的网络安全精编自学资料合集(64份)
  10. AutoRunner不能录制脚本的解决办法