若是有同窗还想买书,请访问链接http://item.jd.com/11944458.htmlhtml
若是买了书,可是没有收到,请及时和咱们联系,站内信或QQ均可以。前端
======================================================================java
目录:
数据库
红薯的序我不明白为何相比于其余的编程语言,Java的世界充满了各类框架和架构。多是由于Java太过于灵活,或者是由于官方对Java EE规范所提供的 API 都是很是底层的东西,不多牵扯到具体的业务需求。虽然这样能够在必定程度上保证规范自己的兼容性和适应性,但也所以致使了用Java开发一些具体业务应用时显得过于繁琐,不够轻便和快捷。因而出现了Struts等开源框架,再就是后来Javaer们耳熟能详的SSH三大框架,直至今天琳琅满目的各类开发框架。全部的这些框架,其惟一的目的就是简化业务逻辑的开发,其手法无不是利用各类各样的设计模式对 API 的各类层次进行封装。设计模式 我曾经发文公开反对初学者在对 Java 知之甚少的状况下学习各类框架。主要缘由有两点:一是知其然而不知其因此然;二是更换框架后学习成本很高。由于这样先入为主的思想做怪,当本书做者(咱们姑且就叫他的网名悠然吧)第一次将他的Tiny框架提交到“开源中国”的时候,我并无过多的关注。哦,仅仅是又一个新的Java EE框架而已。缓存 Tiny 再次进入个人视线是在“开源中国”社区围绕该项目愈来愈多的关注和讨论,并且不断出如今咱们的各类开源项目榜单中。另外,Tiny开源框架不一样于其余开源框架的突出特色是代码提交很是活跃。能够绝不夸张地说是“开源中国”GIT库中Commits提交最多的开源者。固然还有另一个很是重要的缘由是悠然写了一篇很是专业的“喷文”,该文章很是专业地指出我本人一个开源项目J2Cache中存在的各类设计的不足,专业到让我无言以对,甚至很有“挑衅”的意味。如此专业的设计思路及对代码近乎完美的追求让我相信Tiny必然也会是在这种要求下的产物。此外,其团队利用该框架快速开发的几个应用类项目也证实了其在开发效率上的提高是很是显著的。安全 这本书主要是经过对比各类流行的框架和技术来展现Tiny框架强悍又便利的优势。从前端模板展示、数据库访问、缓存,再到文件系统、服务分层、流程引擎、元数据和RESTful,同时还延伸到了系统扩展,能够说是面面俱到。基本上你在开发Java EE应用时涉及的绝大多数技术层面上的内容本书都会详尽讲述。网络 前面我说过反对初学者一开始从框架入手进行学习。这本书在介绍Tiny框架的同时对与其对应的一些Java EE开源框架或技术也作了简单的讲解,同时包括对同类产品的分析。以悠然如此善于深刻分析各种产品的技术来看,可知对这些问题领域的分析及其解决方案即是本书的精华所在,不得不推荐!架构 最后我想提一下:没有最好的框架,只有最适合本身的框架。当你面对数百个Java框架一脸茫然的时候,考虑一下这么几个要素:是否打心眼里喜欢?是否足够简单和轻便,而不是充斥一堆你根本用不上的特性?项目自己在社区上是否足够活跃?做者本人长得帅不帅(开个玩笑)?……若是上面全部的答案都是否认的,那就本身造一个吧!
开源中国创始人 红薯 |
特赞CTO黄勇的序十年前,我上大学的时候,就据说Java这门计算机语言已经很流行了。Java分为J2SE、J2EE和J2ME这三大平台,分别对应桌面、Web和移动这三大领域。当年我为了找到一份高薪工做,放弃了本身所擅长的C++,也学着别人开始学习Java,尤为是学习当年市场需求量最大的J2EE技术。我学了JSP、Servlet和EJB这几种J2EE核心技术,也学了经典的MVC框架Struts和最流行的ORM框架Hibernate。想当年,我能够熟练地使用JSP+Struts+Hibernate开发一个小型Java Web应用程序,轻松地应对毕业设计,本身也能够接点私活赚点外快。但对于大型企业级应用而言,首选技术仍是EJB。所谓企业级就是一个既安全又复杂的技术,由于它须要考虑到多方面的问题,因此会带来一系列的复杂问题。但凡用过EJB的人,都会感觉到那是一场痛苦的经历。而Spring的到来,改变了这一切,给企业级J2EE带来了“春天”,Spring+Struts+Hibernate三个框架组合也被普遍地应用于Web开发,而且你们称其为SSH组合。 十年后,Java还能位居编程语言排行榜首,我真的庆幸本身当年的选择是正确的。之前的J2EE,已更名为Java EE,也许这样的命名会更加有意义。而之前的SSH,却显得有些重量级了。也许是由于它们自身的特性愈来愈多,或者是由于轻量级的框架愈来愈多,好比我开源的Smart框架,就是一款轻量级Java Web框架,为了讲明白该框架的开发过程,我也写过一本叫作《架构探险》的书(一不当心就为本身作了一个广告,仍是言归正传吧)。不少大型企业级应用会放弃掉一些技术,好比Struts、Hibernate和JSP等,但Spring目前仍然仍是主流,尤为是Spring MVC,足以取代Struts。此外,轻量级JDBC框架MyBatis(之前叫作iBatis)也能够取代Hibernate,因此如今企业级Java EE架构的首选变成了Spring+Spring MVC+MyBatis,简称SSM。 无论是SSH仍是SSM,这些都只是开发框架而已,并不是技术解决方案。你们知道,企业级应用是一个至关复杂的应用系统,须要的不只仅是一个开发框架,更是一系列的技术解决方案。这些解决方案包括虚拟文件系统、缓存、文件处理框架、模板语言、数据库访问层、数据库水平扩展、服务层、流程引擎、元数据、展示层、Web层、统一界面框架、RESTful和模块化等,这些才是企业级应用的核心需求。Tiny框架将这些需求迎刃而解,代码彻底开源,而且在国内有良好的技术社区网站(tinygroup.org)。更重要的是,Tiny框架的做者是一位乐于分享的技术专家,在开源中国网站(oschina.net)上分享了大量的技术文章。如今Tiny团队将他们几年的研究成果成书,并毫无保留地分享给各位技术爱好者。我也很是荣幸地提早看到了全书内容,相信本书必定会让您在架构和设计方面有所收获。 使用Tiny,可让开发者从复杂的技术细节跳出来,,而将精力集中到业务上,从而节省不少时间。热爱研究技术的朋友们也能够经过阅读本书获取技能上的提高,成为一名优秀的架构师。 祝愿Tiny的未来会愈来愈好!开源改变生活,开源改变世界!
特赞(tezign.com)CTO 黄勇 2016.1.31于上海 |
恒生电子CTO范径武的序
最近《三体》很是火,在书中说到了三体文明将质子作维护展开的情形,甚至展开的质子能够覆盖整个星球。 其实在软件应用实践过程当中,也存在多种不一样层次的维度。例如,从用户来看,主要是人机交互上的一些感观;从业务角度来看,主要是各类不一样的业务功能;从架构角度来看,软件又分属于不一样的独立的体系,这些体系的相互做用最终构成了整个软件;从机器执行过程来看,又都是一些0101的二进制代码流或数据流…… 若是直接使用基础开发语言和一些基础类库来进行开发,当软件比较小的时候没有任何问题。可是做为一个企业级应用来讲,若是仍是采用一样的模式,那么后果将会是不堪设想的。我见过许多业务上很是成功,可是因为没有良好的架构支撑而已经崩溃或走向崩溃的系统。真正优秀和成功的软件产品,必须有一个良好的架构支撑,才能够实现持续的发展和进步。 本书得益于做者的深厚功底及勇敢实践,并以企业应用中遇到的十多个真实应用场景做为主题进行架构实践,对这些主题按问题概述、分析问题、解决问题的过程进行了有益探索。虽然不能说全部的解决方案必定都是最优的,可是应该说都体现了做者在这方面所作的努力。“一花独放不是春,万紫千红春满园。” ,也欢迎有更多、更好的企业级架构方面的实践书籍涌现出来,促进企业级Java EE应用的发展。
恒生电子执行总裁/CTO 范径武 2016年1月25日于杭州 |
自序本书的书名是《企业级Java EE架构设计精深实践》。从书名能够看到几个关键词:企业级、Java EE、架构和实践。简单地说,本书是一本基于Java EE技术路线,面向企业级应用,解决企业级应用架构问题,并以实践为主的书籍。 目前市场上已经有了许多Java EE领域的书籍,涵盖了Java EE规范、Java EE的各类流行先后台框架等。这些书籍有一些写得很是好,比较全面地覆盖了企业级Java EE应用的方方面面。所以本书不会讲解Java相关的基础知识,不会讲解Java EE规范方面的知识,也不会花大量篇幅介绍流行框架的使用及技巧,而是把重点放在须要解决的一些企业应用中的问题及其解决方案和实践过程,让读者跟随笔者的思路一块儿实践。笔者不能保证书中全部的实践都是最优解,但必定是至关不错的解。 企业级应用是本书内容的核心,那么什么是企业级应用呢?这个问题自己就没有标准答案。可是企业级应用涉及的一些领域仍是能够列举的。 l 数据持久化:这里的数据泛指结构化和非结构化数据。这些数据从产生到消亡有着漫长的建立、更新、查询和删除的生命周期,有的数据甚至要存在许多年。这些数据须要为避免丢失而进行存储操做,为高效利用而进行缓存加载操做,再加上数据自身的CRUD等操做,在上述过程当中就须要解决各类各样的问题。 l 海量并发访问:对于小的应用系统,访问者可能就是一个或几我的,稍大点的系统访问者有上百人。可是对于企业级应用尤为是互联网级应用来讲,其注册用户、在线用户和并发请求都是巨大的。应用请求数较少和应用请求数巨大时的架构模式是有巨大差别的,由此也会引入许多的架构问题。 l 海量数据:对于企业级应用来讲,百万级数据只不过是起步,千万甚至数十亿条数据都是常见的。在数据规模比较小的时候不存在问题,而在数据规模比较大的时候就会出现严重的性能问题。为了保证在海量应用的情景下也可使用,这时原有的数据架构就须要进行重构。 l 应用规模庞大:应用的规模越大,开发、测试、集成和维护起来就越困难。笔者就亲眼见到过一个项目,业务方面是很是出色的,可是随着产品的规模愈来愈大,而项目的开发方式没法适应,致使整个项目没法继续进行,以失败而了结。因此如何让应用随着规模的变大,其开发、测试、集成和维护成本只是出现等比例增加,而不是随着应用规模的变大产生指数级增加,这就变得很是重要了。 l 界面需求复杂:随着应用规模的变大,企业级应用的界面也愈来愈多。而在企业级应用中,又须要对使用权限、界面一致性和界面的易集成性等有很是高的要求。因此在企业级应用中,界面层有一个良好解决方案是很是有挑战性的。 l 与第三方系统协做:与小的应用不一样,企业级应用它的生成周期比较长,一个企业当中又有多个不一样方面的系统同时存在,这些系统之间每每须要有数据或服务协做。可是因为不一样的应用多是来自于不一样厂商采用不一样开发语言和不一样数据库开发的,因此这就对它们协同运做产生了许多问题。 总之,企业级应用能够理解成业务复杂、规模巨大、数据种类多、数据量大、访问请求大、生命周期长和并发请求巨大的应用。正是因为上述特色而产生了许许多多的问题,而这些问题的解决方案每每是有冲突的,所以如何艺术性地解决这些问题就每每须要从架构上想办法。 本书重点介绍介绍的Tiny框架是Tiny开源小组历经5年业余时间,孜孜不倦地投入与坚持的产物。它是经过团队坚苦卓绝的努力所构建的体系完整、内容庞大的企业级开源框架。笔者和Tiny团队在解决这些问题时作了大量的尝试和实践,在诸多领域都有很是专业的解决方案,咱们很是愿意经过本书与读者分享。 本书特点1.基于原创,开拓思路 本书有大量的原创实践及原理性讲述,无论读者用不用本书中的框架,均可以对企业级Java EE架构中的一些技术及其解决方案有较为深刻的理解,这对于读者开拓思路,避免踩一样的“坑”有很是强的借鉴做用。 2.涵盖普遍,讲解深刻 本书介绍的内容都是当前主流框架和优秀技术,涵盖缓存、文件处理、模板语言、服务层、数据库架构、数据库水平扩展、元数据、Web架构和前端界面等Java EE领域常常用到的知识,涉及企业级应用架构开发的方方面面。这些内容的讲解不是泛泛而谈,而是有至关的深度。 3.内容实用,注重实践 本书内容很是注重知识的实用性和可操做性,这些内容都是做者多年以来构建Java EE开发框架实践过程当中的宝贵经验聚集而成。本书每章都给出了实践性很强的开发案例供读者理解。 4.思路清晰,文笔简练 本书每章按照问题背景、需求分析、解决思路、架构设计、实践示例和章节总结的顺序行文,丝丝入扣,符合人们的认知规律。并且本书行文风格朴实,文笔简练,知识的讲解由浅入深、按部就班,即使是初学者,只要肯用心也会有所收获。 5.不同凡响,切中要害 本书有至关多的实践具备“反模式”的待质,也就是说与常见的解法不同,再辅之以简单的示例,可让读者很是容易理解其设计精要,有脑洞大开之感受。 6.理论与实践齐抓,局部与总体并重 本书注重问题的解决思路和开发细节,既介绍了企业级Java EE架构的设计思想,也兼顾了应用的具体实践,避免了学习过程当中理论与实践的脱节,连贯而统一。本书每章都有独立的测试用例,最后还提供了完整的Web开发案例,这样经过先局部后总体的方式,可让读者更好地理解Java EE开发架构。 7.编排科学,适用面广 本书内容编排既可让初学者对Java EE架构有总体的认知,也可让那些学有余力、经验丰富的开发人员深刻钻研本身感兴趣的内容。不管是哪一个层次的读者,阅读完本书后都会有所收获,甚至对之前本身感受深不可测的问题有豁然开朗的感受。 本书内容本书正文共13章,采用问题背景、需求分析、解决思路、架构设计、实践示例和章节总结的顺序组织内容。下面简单介绍一下每章的内容。 第1章 虚拟文件系统实践 本章从Apache VFS框架存在的内存泄露Bug提及,引入企业级应用常见的虚拟文件系统的概念,并介绍了Apache VFS框架和Tiny VFS框架。另外,还讲解了VFS的设计思路,介绍了VFS管理器、虚拟文件接口和模式提供者等概念,并给出本地文件、JAR和FTP的实践用例。 第2章 缓存实践 本章以Java EE应用遇到的性能问题做为话题,引导读者了解缓存技术的重要性。在讲解一个实际项目缓存的代码变迁过程当中,天然而然地列举了对现有缓存方案的改进:业务代码与缓存框架分离;具体缓存实现的切换不影响业务开发;支持XML配置等。本章介绍了两种缓存架构:字节码缓存方案和动态代理缓存方案,并对比了二者的优缺点。但愿读者经过阅读本章内容,可以对开发企业级应用有新的心得体会。 第3章 文件处理框架实践 本章介绍了文件处理框架,能够有效地解决Java EE应用模块化致使的各类配置文件分散在不一样模块而带来的处理这些资源难度大的问题。在介绍Tiny文件处理框架的过程当中,请仔细阅读文件扫描器接口、文件扫描器主入口和定时扫描器的介绍,理解框架如何把文件的扫描、文件的变化、文件的遍历等与文件的实际处理分离,体会“开—闭”原则的具体运用。 第4章 模板语言实践 本章介绍了模板语言及其在Java EE领域的实践开发。为了便于读者理解,笔者先介绍模板语言的概念、原理和应用场景,并列举了常见的模板语言Velocity、FreeMarker和Tiny,比较了三者的优点和不足。特别是在设计开发的章节,按模板语言的架构、语法解析和渲染机制的顺序,从零开始讲解如何构建一种模板语言。经过对本章内容的学习,有能力的读者彻底能够尝试扩展模板语言。 第5章 数据库访问层实践 本章首先介绍了应用框架的三层架构,而后引入了数据库访问层的相关概念。为了便于读者理解数据库访问层,笔者讲解了业界经常使用的数据库访问层框架Hibernate、Ibatis和JPA,以及DSL风格的数据库访问层JEQUEL、JOOQ和Querydsl。经过比较它们的优缺点,分析了Tiny团队开发TinyDsl的缘由,而后详细说明TinyDsl的实践过程。最后经过具体示例说明各类数据库访问层框架的用法和配置。 第6章 数据库扩展实践 本章侧重介绍数据库水平扩展方案。首先从互联网的发展所致使的业务应用压力日益增长,从而让读者认识到数据库水平扩展方案对Java EE企业级应用是很是合理的需求。论证了水平扩展的合理性以后,列举了常见的扩展层次Dao层、DataSource层、JDBC层和Proxy层,重点讲解了Tiny分库分表的技术架构和设计思路,并讲解了分库分表、读写分离和集群事务的处理,还与开源软件Routing4DB作了详细对比。最后经过具体示例演示数据库水平扩展的配置和增删改查的结果。 第7章 服务层实践 本章首先介绍了传统的服务层定义,以及与表现层、业务逻辑层的关系,而后讲解了Tiny对服务层的改进,经过从新定义服务概念,引入服务定义、服务注册和服务中心的设计思路。基于Tiny服务体系,应用能够没必要关心服务提供方的具体信息。同时,因为远程调用与本地调用在代码层面并无区别,因此系统根据不一样场景进行多机部署或者单机部署时,无须对代码进行调整。远程调用体系由核心服务中心来组织整个调用网络,水平扩展极为容易。最后列举了本地场景、远程场景、单中心场景和多中心场景下,读者如何配置部署服务与服务中心。 第8章 流程引擎实践 本章介绍了面向对象编程的不足,引入了面向组件编程的概念。流程引擎框架(后文亦称之为Flow)是一款基于面向组件开发的组件流程执行框架。目前Flow支持两种流程:逻辑流程和页面流程。在设计部分,读者能够经过组件设计、流程管理、流程配置和流程执行了解流程引擎的强大。在实践部分笔者介绍了如何经过组件化开发算数表达式流程。 第9章 元数据实践 本章介绍的是基本的元数据元素,包含方言模板、标准数据类型、业务数据类型和标准字段这几类基础元数据。最后的示例演示使用Eclipse插件设计元数据,包括经过工具动态生成业务Java代码和SQL语句。 第10章 展示层开发实践 本章首先介绍了Java EE展示层的经常使用表明技术Servlet、JSP和模板语言,并详细分析了三者的特性及优缺点。接着讲解了展示层方案设计,列举了设计人员常见的作法和技巧。而后给出了Tiny框架的展示层架构思路:采用模板语言作前端展现,同时引入组件包的概念,经过资源合并和压缩等框架手段,提高展示层的性能。最后演示了Tiny展示层的告警框和文本输入框的示例。 第11章 Web扩展实践 本章主要讲解了Tiny Web层框架的实践过程。首先介绍了Tiny Web层框架的由来及设计思想与设计原理。而后详细介绍了框架内置过滤器与处理器的使用方式。最后经过具体示例讲解Tiny Web层框架的开发过程,从而增强对Tiny Web层框架的理解。 第12章 Tiny统一界面框架实践 本章重点介绍了Java EE领域的界面开发设计,并经过介绍问题由来,概括用户需求,提出UIML解决方案。本章的侧重点是介绍UIML设计思路和开发细节,让读者了解UI组件化开发带来的好处与便利。在实践小节中介绍了图形编辑器的使用,最后还列举了UIML配置开发示例,概括和总结了开发过程当中的常见问题。 第13章 RESTful实践 本章讲解了业界流行的RESTful的背景和开发方式。首先介绍了Spring RESTful的开发方式,这种方式比较适用于新项目开发,而不适用于已经开发完毕的项目。而后讲解了Tiny RESTful如何解决这个问题。本章详细介绍了Tiny RESTful的设计思想与实现过程,最后的Web层示例演示了RESTful风格配置Web映射。 本书读者对象l 有必定Java EE基础的编程人员; l 对Java EE架构设计感兴趣的开发人员; l 构建企业级应用的架构师; l 学有余力,乐于尝试新事物的初学者; l 想经过本书学习分析问题和解决问题思路的人员。 |