专访林昊:一步一步了解Java模块化

专访林昊:一步一步了解Java模块化,第1张

很多Java开发者对模块化编程仍然接触不多 对Java的模块化的进展也不甚了解 多方观望 年将是Java模块化的一年 因此 CTO编辑希望能在这一年中让更多的开发者了解模块化编程的概念 它的学习 实现方式以及它的好处 为此 我们请来了一位国内的OSGi布道者为大家进行一次简单的普及介绍

有请China OSGi User Group Director 淘宝网平台架构部架构师——林昊(@BlueDavy) 林昊是《OSGi原理与最佳实践》一书的作者

此次采访模式为邮件采访 林昊对 CTO编辑提出的 个问题一一进行了回复 内容如下

模块的实现和传统编程方法有何不同?开发者需要学习哪些知识(比如版本控制 依赖性管理 规范的接口设计等)?

林昊 模块的实现和传统的编程方法确实有一些差别 主要体现在模块之间类访问的隔离 版本选择这两个方面 如希望更好的设计模块化的系统 开发者需要学习ClassLoader机制 模块之间类的交互方法(这包括了模块怎么样对外提供可访问的package 怎么样访问其他模块提供的package 如何选择适合版本的package等)

对模块化的形容 我们往往使用 高内聚 低耦合/松散耦合 这样的用语 您是如何理解这两个概念的?

林昊 高内聚 低耦合更多程度是指让模块之间的依赖是清晰的 内聚体现在内部对功能实现的封装 而低耦合体现在模块对外提供的接口是可控的 在模块化之前 在Java体系中更多的是通过public protected private这样的作用域来保证依赖清晰(参考阅读 模块化概念解惑) 但事实证明 这样的方法来保证不是非常有效 而在模块化的体系中 则会有明确的模块之间接口暴露以及依赖的定义 因此能够更好的实现高内聚和低耦合

模块化编程的好处有哪些?它解决了原来那种紧密耦合式编程中存在的哪些问题?

林昊 模块化编程最大的好处在于有效的控制和避免了模块被外部误用 其他方面的好处在于各模块可以方便的做到引用自己所需要依赖的包 避免产生包冲突现象 对于现有java体系而言 另外一个好处则是可以做到多版本的共存

您觉得模块化编程最大的难点在哪里?在您的模块化开发过程中 理清逻辑和层次所花的时间和编写代码花费的时间大致是怎样的比例?

林昊 模块化编程最大的难点一方面是设计方面的挑战 在没有实际隔离情况下模块化的设计其实并不会真正做到有效的模块隔离的设计 另一方面是在开发过程中 以前的开发习惯都需要改变 例如以前需要依赖其他模块时 可以采用直接依赖工程或依赖jar的方式 但在模块化的系统中则不行

在实际的模块化开发过程中 更多的时间仍然会花费在设计阶段

我们来谈谈OSGi规范 OSGi模块化规范有什么特点?

林昊 OSGi是Java中目前唯一的一个模块化 动态化的规范 在模块化方面OSGi联盟已经研究了很多年了 因此OSGi规范对于模块的物理隔离 模块的交互 多版本这些方面都有了非常完善的机制 并且也得到了现在几乎所有的App Server厂商或开源社区的认可

虽然OSGi已经是有十多年发展的成熟的模块化标准 但Sun在对Java进行模块化的时候却选择采用JSR 并在Java 当中开展Jigsaw项目 您对此有什么看法?

林昊 JCP在关于Java 纳入模块化后到底采用什么标准争论了非常久 JSR 是个研讨了多年的规范 但最后不了了之 Sun现在另起炉灶做Jigsaw 但其实并没有得到多大的拥护 各App Server仍然采用OSGi作为其基础平台就是最好的证明(参考阅读 JSR 被叫停 应用服务器押宝OSGi) 可以说现在OSGi已经是Java领域模块化 动态化的事实性标准

您认为理想的Java模块化标准应该具备怎样的特点?您对Java模块化的发展有怎样的期待?

林昊 Java模块化标准应有明确的模块定义 模块之间隔离机制的定义 模块交互机制的定义 个人认为在模块化这一方面OSGi已经做到非常好了 当然 如果是语言级能支持就更完美了

lishixinzhi/Article/program/Java/hx/201311/27136

其实,阿里巴巴不乏技术大牛,而且整个阿里巴巴帝国拥有25万名工程师和科学家。
阿里巴巴的技术大牛一般也都是比较低调的,网上也很少爆料他们的情况。
下面w3cschool就带小伙伴们了解一下阿里巴巴的5大技术大牛。
1、多隆—蔡景现
蔡景现可是名震江湖的“阿里巴巴30合伙人”之一。为人低调,不喜交际,因此在阿里巴巴里有少林扫地神僧的称号。
从03年到07年,淘宝搜索引擎就是他一个人在写,一个人在维护,如文件系统 tfs、key-value 系统 tair,cache、搜索、通讯框架等。
比如文件系统,有时候需要一个项目组,但是他就是一个人有时候就完成了。
所以,有人常说,多隆一个人做事相当于一个团队。
2、阿里云—吴翰清
15岁,从湖南考入西安交大少年班。在他23岁的那一年,加入阿里云,成为阿里巴巴最年轻的高级技术专家。
32岁吴翰清,被《麻省理工学院科技评论》评选为2017年度全球35位35岁以下的青年科技创新人才。
吴翰清可以说是开了挂的天才技术人员。
3、林昊,花名毕玄
他是中国OSGi第一人,创办了中国OSGi网站,出过相关书籍。他又是淘宝网的系统架构工程师,维护万台服务器。
他曾经有一句话非常霸气:“在国内,能与淘宝网相提并论的网站还没看到。”
4、行癫—张建峰
近期阿里巴巴宣布成立达摩院,达摩院首任院长就是张建峰。
他在2004年加入淘宝,担任首席架构师,此后一直在淘宝工作,是阿里巴巴集团合伙人之一。
5、吴咏铭:东邪
吴咏铭是阿里巴巴十八罗汉之一。他是中国比较早期的程序员,加入当时的中国黄页。
在1997年,和马云一起在北京做外经贸部的网站,那时候的网站还是他一个人搞

《大型网站系统与Java中间件开发实践》(曾宪杰)电子书网盘下载免费在线阅读

链接:> 密码:v3ey

书名:大型网站系统与Java中间件开发实践

作者:曾宪杰

豆瓣评分:79

出版社:电子工业出版社

出版年份:2014-4-24

页数:360

内容简介:

本书围绕大型网站和支撑大型网站架构的 Java 中间件的实践展开介绍。从分布式系统的知识切入,让读者对分布式系统有基本的了解;然后介绍大型网站随着数据量、访问量增长而发生的架构变迁;接着讲述构建 Java 中间件的相关知识;之后的几章都是根据笔者的经验来介绍支撑大型网站架构的 Java 中间件系统的设计和实践。希望读者通过本书可以了解大型网站架构变迁过程中的较为通用的问题和解法,并了解构建支撑大型网站的 Java 中间件的实践经验。对于有一定网站开发、设计经验,并想了解大型网站架构和支撑这种架构的系统的开发、测试等的相关工程人员,本书有很大的参考意义;对于没有网站开发设计经验的人员,通过本书也能宏观了解大型网站的架构及相关问题的解决思路和方案。

作者简介:

曾宪杰,淘宝花名华黎,现任淘宝技术部总监。2002年毕业于浙江大学计算机系。2007年加入淘宝网平台架构团队,负责构建淘宝自主的消息中间件系统,同期主导了淘宝数据层的创建,这两个产品也是淘宝中间件中较为重要的两个。2010年下半年起开始负责整个淘宝中间件团队,帮助团队成为业内知名的Java技术团队。2012年开始从中间件走向应用系统的研发工作,2013年初负责新组建的淘宝技术部。熟悉C++和Java,在多线程、并发、网络通信及支撑大型网站的中间件领域有较多经验,对新技术有浓厚的兴趣。致力于带领团队在无线、数据、业务 平台和组件化开发方面取得突破。与林昊合著有《OSGi原理与最佳实践》一书。

分布式概念还是简单的吧,主要是理解为什么要分布式,和分布式主要做什么。
首先分布式的主要作用有以下几点:
1、提高应用的可用性:服务器要保持长时间能够有效的使用,但是现实情况又是很不稳定的,例如电脑会死机,会断电,硬件设备会损坏,使用分布式可以一定程度的解决这些问题。
2、分散服务器运行压力,这本身也是提高应用可用性的一个方面,例如你的应用功能很多,逻辑很复杂,或者 *** 作的数据量较大,单个应用或者机器难以甚至无法处理你的业务,那么就需要使用分布式。
分布式的概念其实也很简单,就是一个应用做不了或者难以做的事情,让多个应用去做,这就好比让一个人去完成的事情让多个人去完成,举个现实中很简单的例子,例如造车,造车这个工作本身一个造车厂可以完成这个任务,只是一个工厂造车,成本、技术、人员等等都会提高制作成本,而且因为技术过于驳杂,一个厂能造,但是成本和难度都会增加,但是拆分给多个厂来造车,例如一个厂造发动机,一个厂造底盘,一个厂造外壳,一个厂做电子仪表盘等等,把各个配件分散给不同的厂制作,这样每个厂专心做自己更专业的事情,这样既降低了成本,有提高了工作效率。
回到我们的web应用,一般来说,一个系统就是一个应用,系统里面有各种功能,例如学生信息管理系统,系统里面包含各种功能,例如用户登录和认证、权限配置和授权、学生信息的管理、学生的入学管理、学生的毕业管理、校友信息管理等等各种功能,但是当学生的数量特别多,内部业务逻辑特别复杂的时候,一个应用可能不能够承担起这个系统的正常运转,那么就可以考虑分布式,来使用多个应用完成这个系统的功能,例如做一个应用负责登录认证模块,一个应用处理授权的功能,另外一个应用处理学生信息的内容等等。
总结分布式,其实就是一个应用的事情让多个应用来解决,分布式是应用级别的分工,在一台机器的多个应用,我们叫垂直分布式,在多台机器上的分布式叫水平分布式,在一台机器的分布式实现起来比较简单,只需要实现应用之间的内存数据共享即可,内存数据共享方式很多,可以使用共享文件等等方式,多台机器的分布式就需要借助网络通信来共享数据,如果是通语言同技术的应用,可以直接共享内存数据,如果是不同语言的分布式应用,就需要参照一些通用传输协议的数据,例如xml json。


DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
乐在赚 » 专访林昊:一步一步了解Java模块化

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情