java模块化系统初探-java开发java经验技巧

java模块化系统初探-java开发java经验技巧

ID:30768796

大小:50.50 KB

页数:5页

时间:2019-01-03

java模块化系统初探-java开发java经验技巧_第1页
java模块化系统初探-java开发java经验技巧_第2页
java模块化系统初探-java开发java经验技巧_第3页
java模块化系统初探-java开发java经验技巧_第4页
java模块化系统初探-java开发java经验技巧_第5页
资源描述:

《java模块化系统初探-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Java模块化系统初探-编程开发技术Java模块化系统初探木文由ImportNew■闵大为翻译自dzone。欢迎加入翻译小组。转载请见文末要求。Java模块化系统自提出以來经历了很长的时间,直到2014年晩些时候才最终以JSR(JSR-376)定稿,而且这个部分有可能在Java9中出现。但是一直以来都没冇可以使用的原型。9月11日,OpenJDK发布的早期构建版本终于包含TJigsaw项目。咋天,我和同事PaulBakker在JavaZone上对丁Java模块化系统进行了讨论。整个讨论都建立在JSR-376需求文档以及身边一

2、些珍贵的信息上。在年初提岀举行这个报告的时候,我们曾深信不疑地认为在这个会上我们能够展示-•个原型,但是事情却没有按预想的那样发展。现在的情况是,这个原型将在我们的报告结束Z后发布。这也意味着,报告中的一些内容已经有点过时了,但是主要的思想还是很有新意的。如果你对Java模块化系统方案一无所知的话,建议你在阅读这篇文章之前先去看一下我们的报告。我们的报告介绍了现在的方案,并进一步与OSGi进行了比较。为什么要使用模块?什么是模块?我们为什乂需要它们?如果希望有一个深入的讨论,请阅读“Stateofthemodulesyste

3、m”或者看一下我们的报告。对这块还不是很了解的人來说,这里有Cliff的注释版本。我们都知道Java有jar文件。但是,事实上这些都只是包含一些class(类)的压缩文件,这些jar包内部都是一些package(包)。当你利用一些不同的jar包來运行应用程序的时候(复杂一点的程序也适用),你需要把它们放到指定的类路径中。然后默默祈祷。因为没有有效的工具来帮助你知道,你是否已经把应用所需要的jar包都放入类路径中了。或者有可能你在不经意间将同样的类文件(在不同的jar包屮)都放入了类路径屮。类路径灾难(类似于DLL灾难)是真实

4、存在的。这会导致运行时出现糟糕的状况。同时,在运行时我们也无法得知jar中包含哪些类。从JRE角度來说只知道有一堆类文件。事实上jar包之间是相互依赖的,但目前还不能把这种依赖关系记录到数据文件中去。理想的情况是,你可以隐藏jar包中类文件具体的实现,只是提供一些公共的API。在Java小提出模块化系统就是为了解决这些问题的:•模块成为首先要考虑的部分,它能够分装实现细节并且只暴露需要的接口。•模块准确地描述了他们能够提供的接口,以及他们的需要部分(依赖)。由此,我们可以在开发的过程中弄清和处理依赖关系。模块系统极大地提升了

5、大型系统的可维护性、可靠性、安全性。至少JDK本身述缺少这样的系统。通过这样的模块系统,模块图能够自动地构建。这个图只包描了你的应用程序运行时所须要的模块。安装JDK9预览版如果你想亲自尝试编写示例代码,你需要安装包含Jigsaw原型的JDK9早期构建版本。在OSX上,你需要解压文档,然后把解压出來的目录移动到Library/Java/JavaVirtuaIMachines/To然后你需要设置环境变量,将JAVAJ40ME环境变量指向JDK9的目录。我使用了非常好用的setjdk脚本,通过它帀以在命令窗口屮实现Java安装的

6、命令切换。你很有可能不愿意使用这个早期构建版本作为你的Java安装版本。你口J以通过java-version來确认安装完成。输出如下面所示:javaversion“1.9.0—ea〃Java(TM)SERuntimeEnvironment(build1.9.0-ea-jigsaw-nightly-h3337-20150908-b80)JavaHotSpot(TM)64~BitServerVM(build1.9.0-ca-jigsaw-nightly-h3337-20150908-b80,mixedmode)只要输岀中包含Ji

7、gsaw,你就可以继续了。文章后面的示例代码可以去https://github.com/sandermak/jigsaw-firstlook下载。一个简单的例子你仍旧可以通过类、jar包以及类路径这样“传统方式”的方式來使用JDK9。但是明显地我们想要采用模块的方式。所以我们将创建一个包含两个模块的工程:模块一使用了模块二屮的代码。首先要做的就是,构建我们的工程并把两个模块很好地区分开來。然后,模块中需耍以module-info,java文件的形式添加元数据。我们的示例构建如下:srcmodulclmodule-info.j

8、avacomtestTestClassModulel.javamodule2module_info.javacommorctcstTcstClassModulc2・java接着,我们将介绍package(包)层最顶上的一层(modulel、module2),这部分你在之前已经构建好了。在这

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。