Java 9模块系统(拼图)@ LJC的HackTheTower

今天,我们花了半天时间参加了第一次HackTheTower活动。 伦敦的Java用户组(aka LJC )的成员应伦敦市的邀请,聚集在伦敦市'SalesForceTower'(aka Heron Tower )26楼。

  • Heather VanCura是Java社区流程的主席
  • 马尼·萨卡 ( Mani Sarkar )
  • ZeroTurnaround开发人员关系总监Simon Maple

讨论和了解Java 9的模块化Jigsaw项目 。 活动组织得井井有条,从上方进行编码,可以欣赏伦敦市中心和摩天大楼的其余部分,真是一件好事!

该活动分为三个部分,向我们提供了有关Jigsaw的练习和材料(小示例,类似于您在OpenJDK页面上找到的示例),然后我们可以谈论或提出任何担忧或遗漏的感觉应当反馈给不断发展的Jigsaw的OpenJDK / Oracle开发人员。

您可以在以下链接上找到所有材料/幻灯片和我们的反馈

  • Github仓库: https : //git.io/v9UJ8
  • 此反馈表: https : //goo.gl/oytFzX
  • 幻灯片: http : //bit.ly/2pnPU1c

我对拼图的感觉如何

老实说,Jigsaw似乎是我最不喜欢的Java 9功能。这是我参加该活动的原因之一。 并不是因为它本身就是一个不好的功能,或是它背后的实际需求,尤其是使JDK / JRE的核心模块化或更物联网友好的功能。 但是由于对现有Java生态系统和应用程序有潜在的副作用。 最终,由于各种问题(而且我仍然遇到),我最终还是没有第一次尝试使用预发行版来测试个人或与工作相关的项目,以查看它们是否适用于新版本的Java。

我们是否错过了拼图之类的功能? 是。 我们有类似的尝试吗? 是的,我们有了OSGi (涵盖了许多部分),然后出现了JBoss Modules 。 我总是觉得OSGi是个好主意,但是太复杂了。 我有机会使用JBoss模块,我喜欢它,但这只是在基于它构建的产品Wildfly应用程序服务器上进行的,因此它就像一个完整的预言,因此我从未尝试将其应用于我的项目或我工作过的任何项目。

今天,看到Java代码示例以及伴随bash脚本调用诸如工具之类的jdk特定命令的我感到沮丧。 javac的旗子, JLINK或JMOD ,罐子是不是罐子,但是他们表现得像罐子。 我感觉我在uni的第一天是Java,但最终Ant仍然不是一回事,而Java是使用定制的make文件机制等进行编译的。我喜欢所有这些新工具吗? 没有为什么? 因为作为一名应用程序/业务开发人员,我依赖抽象的构建工具,而且我希望它们为我带来繁重的工作,所以我不想回去编辑模块描述符或在以Plain Old Jar为王的情况下与现有的构建工具抗衡。新的国王模块,反之亦然。

因此,目前我看不到现有的主流Java Built工具的明确路径。 是的,工作正在进行中,例如Maven编译器插件版本3.6.1与Jigsaw兼容。 顺便说一句,当前您似乎需要将JigSaw模块映射和打包为Maven模块,以便拥有2个世界中最好的。 我不知道这整个事情会让我有些困惑,除非我错过了什么。

看来我们正在朝着Java生态系统的方向发展,至少对于Java 9而言,您要么使用Jigsaw的规则,然后从头开始构建新的东西,引入与Jigsaw语义兼容的模块和项目结构,要么就闭上眼睛,添加“ kill switch ”或您的Java执行,然后继续探索新世界和旧世界。

最后但并非最不重要的一点是,我不能忽略,来自应用程序服务器的担忧和发布的数量越来越多,库开发人员对Java9可能会给他们的库带来的潜在问题表示怀疑。 我猜所有的Java应用程序开发人员都想使用Java 9,但是如果想引入1000个新问题,因为Spring类加载不再起作用,或者

CDI或其应用程序服务器的任何子模块将要中断,这是一种不必要的噪音。

所以暂时我对此持怀疑态度,但我将继续投入时间并学习更多或尝试使用它,很可能不是使用SpringBoot或WildflySwarm项目而是相当简单。

我真的很喜欢以下文章

  • https://blog.plan99.net/is-jigsaw-good-or-is-it-wack-ec634d36dd6f
  • https://developer.jboss.org/blogs/scott.stark

翻译自: https://www.javacodegeeks.com/2017/04/java-9-module-system-jigsaw-ljcs-hackthetower.html

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

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

相关文章

在命令行下对ntfs分区文件夹权限的设置

随着Windows XP/Server 2003的流行,越来越多的用户开始选择NTFS文件系统,NTFS的好处自然是大大增强了系统的安全性,在“安全”标签页下, 我们可以在这里为不同级别的用户设置相应的访问控制权限,包括完全控制、修改、读…

uglifyjs报错 webpack_webpack3里使用uglifyjs压缩js时打包报错的解决

环境&#xff1a;webpac<4的下&#xff0c;安装uglifyjs。cnpm install uglifyjs-webpack-plugin -D安装完毕后&#xff0c;去npm里查看uglifyjs的使用方法并添加到代码中&#xff1a;const UglifyJsPlugin require(uglifyjs-webpack-plugin)module.exports {//...optimiz…

描述一下JVM加载class文件的原理机制

Java中的所有类&#xff0c;都需要由类加载器装载到JVM中才能运行。类加载器本身也是一个类&#xff0c;而它的工作就是把class文件从硬盘读取到内存中。在写程序的时候&#xff0c;我们几乎不需要关心类的加载&#xff0c;因为这些都是隐式装载的&#xff0c;除非我们有特殊的…

xtend怎么使用_使用Xtend构建Vaadin UI

xtend怎么使用今天&#xff0c;我决定向Xtend打个招呼。 我希望学习一些新的编程语言。 选择一个标准的清单并不多。 它必须是在JVM上运行的编程语言&#xff0c; 如果我不需要学习用于建筑应用的全新生态系统&#xff0c;那就太好了。 我检查了几个选项。 JVM的编程语言列表…

linux mysql 写shell_Linux—编写shell脚本操作数据库执行sql

修改数据库数据在升级应用时&#xff0c;我们常常会遇到升级数据库的问题&#xff0c;这就涉及到sql脚本的编写。一般我们会通过写sql脚本&#xff0c;然后将xxx.sql脚本放到数据库中进行source xxx.sql执行。本篇文章&#xff0c;我们可以通过写shell脚本来执行数据库操作。配…

DMN 1.1 XML:使用Drools 7.0从建模到自动化

我是一名自由顾问&#xff0c;但今天我是一名博士生。 本文的全球背景是企业架构&#xff08;EA&#xff09;&#xff0c;它需要对企业进行建模。 由于EA的一个方面是业务流程建模&#xff0c;所以我使用BPMN已有数年之久&#xff0c;但是这种表示方式并不十分适合表示决策标准…

mysql安装模块解释_MySQL的模块不能安装的解决方法_MySQL

我们最常用的 DBD::mysql 模块,我发现是难住很多人的地方.因为安装老是失败,下面我介绍一下解决方法,比如我使用 cpanm 安装,有时就出 /home/nue2501j/work/DBD-mysql-4.010/blib/arch/auto/DBD/mysql/mysql.so: undefined symbol: DBIc_TRACE_LEVEL at /usr/lib/perl5/5.8.5/i…

nginx访问目录是没加/的重定向控制

static 模块提供了root与alias功能&#xff1b;发现目标是目录时&#xff1b;但URI末尾未加/时&#xff1b;会返回301重定向&#xff1b;重定向后会加/ 指令 Syntax: server_name_in_redirect on | off;# 控制返回那个域名 Default: server_name_in_redirect off; Context: ht…

oracle mysql 字段_Oracle和MySQL修改字段

一、修改字段名&#xff1a;Oracle&#xff1a;ALTER TABLE tableName RENAME COLUMN oldColumnName TO newColumnName;eg: ALTER TABLE web RENAME COLUMN wen_name TO web_name;MySQL&#xff1a;ALTER TABLE tableName CHANGE oldColumnName newColumnName newColumnDataTyp…

Kafka REST Proxy for MapR Streams入门

介绍 MapR生态系统软件包2.0&#xff08;MEP&#xff09;随附了一些与MapR流有关的新功能&#xff1a; MapR Streams的Kafka REST代理为MapR Streams和Kafka集群提供RESTful接口&#xff0c;以使用和生成消息并执行管理操作。 Kafka Connect for MapR Streams是一个实用程序&…

开张大吉

在Windows的天地中做了五年开发之后&#xff0c;又跑到了开源的Linux/Java世界遨游了五年&#xff0c;于最近半年&#xff0c;又重新回到M$阵营。这半年来&#xff0c;迫于项目进度的压力&#xff0c;较少与他人交流&#xff0c;项目中虽然采用了VS2003&#xff0c;但是运用的思…

mysql四种输入_mysql四种事务隔离级别

mysql事务并发问题ACID什么的就不啰嗦了。mysql多个事务并发的时候&#xff0c;可能会出现如下问题&#xff1a;1. 更新丢失即两个事务同时更新某一条数据&#xff0c;后执行的更新操作会覆盖先执行的更新操作&#xff0c;导致先执行的更新结果丢失。2. 脏读即一个事务会读到另…

apache hadoop_春天遇见Apache Hadoop

apache hadoopSpringSource 刚刚宣布了适用于Apache Hadoop的Spring的第一个GA版本 。 该项目的目的是简化基于Hadoop的应用程序的开发。 您可以下载该项目在这里 &#xff0c;并检查了Maven的文物在这里 。 Apache Hadoop的Spring诞生是为了解决Hadoop应用程序构建不良的问题…

sinacloud webpy mysql_Mysqldb和webpy的安装

1.首先安装mysqlsudo apt-get install mysql-server2.然后安装libmysqld-dev和libmysqlclient-dev&#xff0c;否则在安装Mysqldb的时候会报找不到mysql_config文件sudo apt-get install libmysqld-devsudo apt-get install libmysqlclient-dev修改site.cfg中的mysql_config的配…

消费者驱动的Pact和Spring Boot测试

最近&#xff0c;我的一位同事偶然发现了Pact.io &#xff0c;我们的当前应用程序已发展到50多种服务&#xff0c;并且我们开始出现一些集成测试失败和脆弱的开发/验收测试环境。 因此&#xff0c;我们决定研究尝试与此相关的方法。 我从阅读开始&#xff1a; https : //docs.…

python空格怎么加密_使用Python的RSA加密

如果您想使用python高效地编码RSA加密&#xff0c;我的github存储库肯定会理解和解释python中RSA的数学定义RSA密钥生成def keyGen(): Generate Keypair i_prandint(0,20)i_qrandint(0,20)# Instead of Asking the user for the prime Number which in case is not feasible,# …

MySQL中字符串函数详细介绍

MySQL字符串函数对于针对字符串位置的操作&#xff0c;第一个位置被标记为1。 ASCII(str)返回字符串str的 最左面字符的ASCII代码值。如果str是空字符串&#xff0c; 返回0。如果str是NULL&#xff0c;返回NULL。 mysql> select ASCII(2);-> 50mysql> select ASCII(2)…

java 转储快照分析_分析Java核心转储

java 转储快照分析在本文中&#xff0c;我将向您展示如何调试Java核心文件&#xff0c;以查看导致JVM崩溃的原因。 我将使用在上一篇文章&#xff1a; 生成Java Core Dump中生成的核心文件。 您可以通过以下几种方法来诊断JVM崩溃&#xff1a; hs_err_pid日志文件 当JVM中发生…

zbox mysql_20190213云服务器部署禅道

1.系统环境&#xff1a;腾讯云服务器&#xff1b;Centos 7.02.工具&#xff1a;禅道的压缩包(需要是tar.gz文件名的)、Xshell、Xftp&#xff1b;3.安全组规则的设置&#xff1b;4.端口号的设置以下为详细步骤&#xff1a;需要在空白的服务器上去进行操作。还需要再琢磨的。1、x…

Java编程语言的历史和未来

通过AppDynamics解决应用程序问题的速度提高了10倍–以最小的开销在代码级深度监视生产应用程序。 开始免费试用&#xff01; 作为Internet上著名的编程语言 &#xff0c;Java对人们如何浏览数字世界产生了深远的影响。 Java功能设置了用户对他们访问互联网的设备的性能期望的…