郑晔:这个话题大概与我团体的履历有关。我的职业生活是从Java起步的,两头各类机遇,我做了良多别的分歧范例的项目,打仗过林林总总的程序计划言语。比来几年又从头把一切的注重力放回Java,我很惊奇地发明,如今很多程序员会商的内容几近和我十多年前刚入手下手做Java时几近完整一样。要晓得,我们保存的这个行业号称是变更缓慢的。实在,这十几年工夫,在开辟范畴已有了十分多的新内容出现出来,即使是Java开辟这个范畴,也有了良多变更。我本人比来的几个Java项目,用到了很多十年前没有的工具。既然我有了如许的感到,为何不克不及实验着总结一下呢?因而,客岁我在本人的blog上写了一个系列的《你应当更新的Java常识》。我本人真正总结出来的内容要远比写上去的多,在公司外部,我做了一个有十几节的课程,给本人的同事分享过。此次的QCon分享的主题,就是基于这个系列课程第一讲的概述部分。以是,我在演讲上也提到,假如想懂得全体内容,就看今后另有没无机会在更多的年夜会上分享了,固然,假如想更完全地懂得,能够专门接洽我,呵呵。
郑晔:我保举的程序库有一个的准绳,它们必需有很易用的API,而不单单为了完成功效。上面是我在演讲里列出的几个我乐意保举给人人的程序库。
我对Guava的一个评价是,只需你做的是Java项目,就应当用Guava。Guava某种水平上是填补了JDK的不敷,我们都晓得,JDK是为了给Java开辟职员供应一个基本的开辟包,可是,JDK基础上定位于功效完成。这在10多年前,没有成绩,但如今,跟着人们关于代码编写熟悉的加深,仅唯一功效已不敷了,还要有一个易用的接口。举个复杂的例子,把文件读到一个字符串里,假如用JDK完成,光想着非常处置都回让人头疼不已。Guava是一个古代的程序库,它有着更容易用的API。固然,Guava也有一些新增功效,好比,一些汇合类、缓存等等。Guava做得怎样?看一下Java8的文档就能够晓得,有一些API几近就是一成不变地从Guava上自创来的。
JodaTime是我提到的另外一个程序库。它如今的地位很风趣,我们都晓得JDK华夏有的日期库计划的十分糟,JodaTime就是为了让我们躲开Java的日期库。可是,由于它计划得很好,它也被JDK自创了,因而有了JSR310,如今已是Java8的一部分。不外,从手艺开展来看,Java8普遍利用起来另有很长的路要走。年夜多半人还会持续与Java6做奋斗,以是,我仍是把它列了出来。
Hamcrest和Mockito,是两个用来测试的库。Hamcrest让我们更好地写断言,而Mockito让我们更好地编写Mock对象。
DropWizard,我们能够把它了解一个开辟REST服务的框架,但实在它甚么都没做,只是把一些已有框架集成到了一同。它同后面几个程序库有很年夜的分歧,它更多地是代表了一种的开放体例:轻量级部署作风,抛开极重的使用服务器。它一定会是将来的赢家,但值得懂得。
实在,另有一些不错的程序库值得保举,好比,像完成了Actor的Akka,但这些库常常是代表了一种特定的程序计划作风,以是,我没有特地列出。近年,Java天下里呈现的“新”工具“新”框架,在进修这些工具框架方面,您有甚么好的办法供应给人人?
郑晔:软件开辟行业是一个开展变更很快的行业,只管良多头脑层面的工具变化不年夜,但在详细操纵层面上,总会有新的工具层见叠出。作为一个程序员,假如不但愿为这个时期减少,一个开放的心态必不成少。就我团体而言,我会一向开着本人的雷达,懂得各类新手艺、新常识的。至于到详细的工具框架进修,没有甚么出格的,文档是最好的先生。基础上,文档会把功效性的工具都告知你。
郑晔:在功效相似的情形下,我会选择更切合手艺开展偏向、API计划更好的库。
举个例子,假如开辟一个Web使用,之前的做法是用SpringMVC一个一个页面写,但如今我不会这么做了。我会偏向于基于微服务的架构,这是一个切合手艺开展偏向的做法。更简单了解的说法是,背景供应基于REST的API,由前台页面举行会见。如许本来传统的体例就显得愚笨了,它们是为了由背景衬着页面筹办的,以是,背景框架我会选择一个更简单做RESTAPI的框架,好比用Jersey加上Jackson。
再举一个API影响选型的例子,我们经常使用的Log库,之前我们城市选择CommonsLogging,可是利用这个库,一般我们的代码都是在正式地写日记之前,先判别一下isXXXEnabled。由于这个库是Java5之前计划的,之以是这么做,有很多功能之类的考量。而如今,我的首选Log库是SLF4J,就省往了那些不用要的代码,十分清新。
郑晔:关于主动化,我的基础理念是,尽量主动化统统可以主动化的工具。十几年前,我们提到主动化,基础上就是编译、打包,而如今主动化的局限比之前年夜很多。我在2011年曾在InfoQ上宣布了一篇名为《软件开辟地基》的文章,内里谈到了我在项目里所做的一些基础的主动化事情。时隔三年再来看这篇文章,年夜部份内容仍然是合用的。而如今,当我们谈到主动化,应当比那篇文章的局限还年夜,在我本人的项目内里,我们会把一些情况部署的历程也主动化起来,依照如今盛行的说法,方针是要做延续托付。
在Java主动化范畴,比来几年一个对照年夜的变更产生在工具范畴。我在演讲中提到了,假如你如今还在用Ant和Maven,你就后进了,Ant做复杂的事不复杂,Maven做庞大的事变很坚苦。如今的趋向是,以全功效言语做主动化剧本。《软件开辟地基》那篇文章里,我用的工具是buildr,它依附于Ruby言语。比来几年Java范畴体现最活泼的主动化工具是Gradle,它如今几近是我做Java项目标默许之选,其基本是Groovy。
欢迎光临 仓酷云 (http://ckuyun.com/) | Powered by Discuz! X3.2 |