scala java 混合使用能使用 java9 的模块化吗

错误:您所请求的网址(URL)无法获取
您所请求的网址(URL)无法获取
当尝试读取以下网址(URL)时:
发生了下列的错误:
Connection Failed
系统返回以下内容:
(11) Resource temporarily unavailable
The remote host or network may be down.
Please try the request again.
您要连结的网络服务器或网络可能发生故障。请稍后再试。
本缓存服务器管理员:
Via:zhshx15:2 (Cdn Cache Server V2.0)
Generated Mon, 02 Oct :38 GMT by
(Cdn Cache Server V2.0)Java9正式版马上就要发布了,这里笔者先介绍下Java9 的模块化具体是怎么回事。
相比于Java,其实js领域很早就进行了模块化了。闲话少扯。今天我们来看看Java9是怎么做到模块化的。
熟悉Java的同学都知道,在Java(1---&8)之前,使用的都是一个很大的jar文件rt.jar 这个jar包在Java8 中有60多M.并且,在我们的Java代码运行时,还需要tools.jar这个jar,这个jar也不小。
也有十几M。这两个文件是运行一个Java程序最小的所需环境。也就是说运行一个Helloworld java程序也需要引入几十M的jar。
如果是在JavaEE的环境中。那么情况将变得更加复杂。
模块化可以让让JavaSE的程序更加轻量级更加容易部署。
模块就是代码和数据的封装体,代码是指一个packages,就是以前我们写的一个个的包。而模块是一个或者多个包的集合体。
我们这里可以看一下Java模块化的配置文件。
module module1 {
//间接引用了java.sql模块
requires transitive java.sql;
exports org.huluo.module1;
上面的配置文件只导出了一个包org.huluo.module1
也就是说该模块的org.huluo.module1包下的class可以被引用。模块下的其他包中的类就算是public 修饰的类其他模块也不能引用到。这个话题后面会讲述到。
上面的配置文件做了三件事情,定义了模块module1,间接引用了java.sql模块和将org.huluo.module1包导出。
还有,在Java9中,public 访问修饰符不再意味着可以访问了。
模块之间的关系被称作readability(可读性),代表一个模块是否可以找到这个模块文件,并且读入系统中(注意:并非代表可以访问其中的类型)。在实际的代码,一个类型对于另外一个类型的调用,我们称之为可访问性(Accessible),这意味着可以使用这个类型; 可访问性的前提是可读性,换句话说,现有模块可读,然后再进一步检测可访问性(安全)。
在介绍一下什么是模块的Transitive引用(间接引用)
当我们的模块2引用了模块1,如果模块1引用了java.sql模块。实际上模块2是引用不到java.sql模块的。
但是如果我们将模块1的引用申明为间接引用了java.sql模块,则模块2可以引用到java.sql模块。
这个跟maven的依赖传递有点类似。
下面是demo工程:http://download.csdn.net/download/u72059
参考自:/p/053a5ca89bbb
本文已收录于以下专栏:
相关文章推荐
Java 9 包含了丰富的特性集。虽然Java 9没有新的语言概念,但是有开发者感兴趣的新的API和诊断命令。
我们将快速的,着重的浏览其中的几个新特性:
模块化系统–Jigsaw 项目...
简介Java模块化一拖再拖,目前jdk9发布了包含jigsaw的先行版。本文为Project Jigsaw: Module System Quick-Start Guide的简译,及使用感受总结。翻译...
朋友们都十分羡慕你的工作,因为你工作在一个福利特别好的公司,不仅妹子多,而且有各种餐饮补助。这不,最近公司竟然准备弄一个内部餐饮,在公司的任何员工都可以直接点餐,由公司专门聘请的一级厨师来为大家做食物...
汪文君高并发编程第一阶段01讲-课程大纲及主要内容介绍
汪文君高并发编程第一阶段02讲-简单介绍什么是线程
汪文君高并发编程第一阶段03讲-创建并启动线程
汪文君高并发编程第一阶段04讲-线程生命周期...
一,前言卷积神经网络(Constitutional Neural Networks, CNN)是在多层神经网络的基础上发展起来的针对图像分类和识别而特别设计的一种深度学习方法。先回顾一下多层神经网络:...
在学习 Android 过程中,了解到 ScrollerView 中几个令人棘手的属性 – getX(), getY() ,getScrollX(), getScrollY()需要了解这几个属性先看一...
Java 8 发布三年多之后,即将快到2017年7月下一个版本发布的日期了。 你可能已经听说过 Java 9 的模块系统,但是这个新版本还有许多其它的更新。 这里有九个令人兴奋的新功能将与 Java ...
java也疯狂
: 功能开发完成
: 执行测试
: 开始减速
他的最新文章
讲师:王哲涵
讲师:王渊命
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)&& 您当前的位置:
【Java技术】Java9新特性
更新时间: 14:40 &来源:源码时代重庆校区
2017年,Java迎来了第22岁的生日,同时迎来了Java9,在Java9中迎来了新的特性。
平台级模块化(Modular)
在Java9中最大的一个特性就是模块化(Modular),为什么加入了模块化?
1、优化性能
在以前的版本中在JVM启动的时候,JVM需要加载rt.jar,这个庞然大物在JDK8中就有60MB以上,无论是否需要用到其中所有的类都需要先将这60M通过类加载器加载到内存,非常霸道的吃掉内存。新的特性模块化可以根据实际的模块需要加载指定的class。
重构和安全性
当系统足够的庞大和代码量足够大的情况下,无法清晰的梳理系统整体结构以及代码权限上的控制,引入了模块化后,将从更高的高度和深度上对系统和平台进行有效的重构和安全性的控制。
以后的安装部署是按照模块的按需定制,使部署更加的轻量级和优雅。
具体模块化的使用通过模块之间的相互依赖进行共建,通过exports和requires进行导出和依赖别的模块,这些内容将会被写入到一个文件&module-info.java&中:
代码清单1:
module myapp{
requires java.
exports cn.itsources.
JLink工具是为第一个特性模块化而服务的,使用了模块化后在安装部署应用的时候通过JLink工具进行打包安装到目标服务器,这样打包的应用结果非常清晰,而且体积小,按需加载JDK相关资源而不是全部加载实现最小化运行。
JShell/Kulla
JShell/Kulla项目是第一个官方的Java REPL (Read-Eval-Print-Loop的缩写,即交互式编程环境),是一种命令行工具,它允许你无需使用类或者方法包装来执行Java语句,可以直接通过命令行启动、输入、执行Java代码。
改进的Javadoc
改进的Javadoc可以直接在每个页面中直接使用搜索功能,并且搜索到的内容都包含有关JDK模块类或接口来源的信息,同时输出的内容还兼容HTML5标准。
集合工厂方法
在JDK9以前对集合的操作,通常是先实例化集合容器,然后通过add方法添加元素对象,添加多个元素对象需要执行多次add方法。在新的Java9中添加了新的集合工厂方法,通过调用提供的静态方法可以快速高效的操作容器:
改进的Stream
Stream 接口中添加了 4 个新的方法:dropWhile, takeWhile, ofNullable。还有个 iterate 方法的新重载方法,
可以让你提供一个 Predicate (判断条件)来指定什么时候结束迭代:
第二个参数是一个Lambda,它会在当前IntStream中的元素到达100的时候返回 true。因此这个简单的示例是向控制台打印 1到 99。除了对Stream本身的扩展,Optional和Stream之间的结合也得到了改进。现在可以通过Optional的新方法stream()将一个Optional对象转换为一个(可能是空的) Stream对象。
私有接口方法
Java 8为我们带来了接口的默认方法。接口现在也可以包含行为,而不仅仅是方法签名。但是,如果在接口上有几个默认方法,代码几乎相同,会发生什么情况?通常,将重构这些方法,调用一个可复用的私有方法。但默认方法不能是私有的。将复用代码创建为一个默认方法不是一个解决方案,因为该辅助方法会成为公共API的一部分。使用 Java 9,可以向接口添加私有辅助方法来解决此问题:
多版本兼容JAR
当在项目中需要对多JAR版本支持的时候,在后期是一件很不好操作的一件事情,在Java9中多版本兼容 JAR功能允许在特定版本的Java环境中运行库程序时选择使用的class 版本。
简化进程API
Java控制与管理系统进程的能力是有限的。举个例子,Java9之前为了简便获取程序的进程PID,你要么调用本地程序要么使用一些变通方案,在Java9中可以直接:
钱和货币的API
在Java 8引进了日期和时间的API之后, Java 9引入了新的货币API,用以表示货币,支持币种之间的转换和各种复杂运算。
轻量化JSON API
在Java9中将直接提供对JSON数据处理的API。
HTTP/2和WebSocket的支持
Java 9中有新的方式来处理HTTP调用。这个迟到的特性用于代替老旧的HttpURLConnection API,并提供对 WebSocket和HTTP/2 的支持。注意:新的 HttpClient API在Java 9 中以所谓的孵化器模块交付。
成都源代码教育咨询有限公司拒绝访问 |
| 百度云加速
请打开cookies.
此网站 () 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(3a75b1c9a221436a-ua98).
重新安装浏览器,或使用别的浏览器

我要回帖

更多关于 scala java 混合使用 的文章

 

随机推荐