金色的骷髅 发表于 2015-1-18 11:17:02

JAVA编程:郑晔谈Java开辟:新工具、新框架、新头脑仓酷云

j2EE和asp比较,其实也没什么比的,原因和我上面说那些比较差不了多少,也是稳定性,安全性,J2EE比asp高,速度上比不过asp,asp也是延续着它的拖拽控件的方法,提高速度。1995年5月23日,Java言语正式出生,1996年1月,JDK1.0公布;2000年5月,JDK1.3、JDK1.4接踵公布;2004年9月,J2SE1.5公布;2009年12月,JavaEE6公布;2014年3月18日,JavaSE8公布。19年的汗青,Java已成为环球最盛行的开辟言语之一,也是利用最为普遍的企业级言语,没有之一。在软件开辟的天下里,两年一小变,三年一年夜变,QCon北京2014年夜会上,来自ThoughtWorks的首席征询师郑晔回忆了比来十多年软件开辟范畴的开展变更,偏重点先容了Java天下程序库、开辟体例、工具等的变更。会后,InfoQ对郑晔做了一次深切专访。
InfoQ:为何会在此次QCon演讲上选择“你应当更新的Java常识”如许一个话题?
郑晔:这个话题大概与我团体的履历有关。我的职业生活是从Java起步的,两头各类机遇,我做了良多别的分歧范例的项目,打仗过林林总总的程序计划言语。比来几年又从头把一切的注重力放回Java,我很惊奇地发明,如今很多程序员会商的内容几近和我十多年前刚入手下手做Java时几近完整一样。要晓得,我们保存的这个行业号称是变更缓慢的。实在,这十几年工夫,在开辟范畴已有了十分多的新内容出现出来,即使是Java开辟这个范畴,也有了良多变更。我本人比来的几个Java项目,用到了很多十年前没有的工具。既然我有了如许的感到,为何不克不及实验着总结一下呢?因而,客岁我在本人的blog上写了一个系列的《你应当更新的Java常识》。我本人真正总结出来的内容要远比写上去的多,在公司外部,我做了一个有十几节的课程,给本人的同事分享过。此次的QCon分享的主题,就是基于这个系列课程第一讲的概述部分。以是,我在演讲上也提到,假如想懂得全体内容,就看今后另有没无机会在更多的年夜会上分享了,固然,假如想更完全地懂得,能够专门接洽我,呵呵。
InfoQ:在演讲中您提到,您向人人保举了良多对照好用的Java开源软件,好比Guava,能具体说说吗?
郑晔:我保举的程序库有一个的准绳,它们必需有很易用的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天下里呈现的“新”工具“新”框架,在进修这些工具框架方面,您有甚么好的办法供应给人人?
InfoQ:关于这些新工具、新框架的进修,您有甚么好的办法分享给人人?
郑晔:软件开辟行业是一个开展变更很快的行业,只管良多头脑层面的工具变化不年夜,但在详细操纵层面上,总会有新的工具层见叠出。作为一个程序员,假如不但愿为这个时期减少,一个开放的心态必不成少。就我团体而言,我会一向开着本人的雷达,懂得各类新手艺、新常识的。至于到详细的工具框架进修,没有甚么出格的,文档是最好的先生。基础上,文档会把功效性的工具都告知你。
InfoQ:在实践的开辟中,统一个功效常常有分歧的框架做了完成,好比MVC的完成就有Struts、SpringMVC等。在碰到相似的情形时,您是怎样选择框架的?
郑晔:在功效相似的情形下,我会选择更切合手艺开展偏向、API计划更好的库。
举个例子,假如开辟一个Web使用,之前的做法是用SpringMVC一个一个页面写,但如今我不会这么做了。我会偏向于基于微服务的架构,这是一个切合手艺开展偏向的做法。更简单了解的说法是,背景供应基于REST的API,由前台页面举行会见。如许本来传统的体例就显得愚笨了,它们是为了由背景衬着页面筹办的,以是,背景框架我会选择一个更简单做RESTAPI的框架,好比用Jersey加上Jackson。
再举一个API影响选型的例子,我们经常使用的Log库,之前我们城市选择CommonsLogging,可是利用这个库,一般我们的代码都是在正式地写日记之前,先判别一下isXXXEnabled。由于这个库是Java5之前计划的,之以是这么做,有很多功能之类的考量。而如今,我的首选Log库是SLF4J,就省往了那些不用要的代码,十分清新。
InfoQ:在演讲中,你还重点讲了主动化。那末,在这方面您是怎样做的?
郑晔:关于主动化,我的基础理念是,尽量主动化统统可以主动化的工具。十几年前,我们提到主动化,基础上就是编译、打包,而如今主动化的局限比之前年夜很多。我在2011年曾在InfoQ上宣布了一篇名为《软件开辟地基》的文章,内里谈到了我在项目里所做的一些基础的主动化事情。时隔三年再来看这篇文章,年夜部份内容仍然是合用的。而如今,当我们谈到主动化,应当比那篇文章的局限还年夜,在我本人的项目内里,我们会把一些情况部署的历程也主动化起来,依照如今盛行的说法,方针是要做延续托付。
在Java主动化范畴,比来几年一个对照年夜的变更产生在工具范畴。我在演讲中提到了,假如你如今还在用Ant和Maven,你就后进了,Ant做复杂的事不复杂,Maven做庞大的事变很坚苦。如今的趋向是,以全功效言语做主动化剧本。《软件开辟地基》那篇文章里,我用的工具是buildr,它依附于Ruby言语。比来几年Java范畴体现最活泼的主动化工具是Gradle,它如今几近是我做Java项目标默许之选,其基本是Groovy。
InfoQ:您讲到轻量级部署相干的一些倡议,能具体说说吗?
郑晔:一提及Java使用的部署,人人直觉上就会想到“打个包,部署到使用服务器”。这也是几近十多年前就定型上去的开辟体例。但关于开辟职员来讲,这就几近就意味着各类开辟的恶梦。为了在开辟阶段定位一些成绩,我们就不能不在“当地”举行用上“远程”调试。
使用服务器是一个“老迈哥”年月的产品,当时候至公司要卖使用服务器,更要卖硬件,以是,它们炮制出庞大的营业场景。可是,关于很多团队来讲,你大概一生都碰不到如许庞大的情形。昔时,EJB的停业已让我们见地了这类虚幻的需求在程序员社区里是站不住脚的。如今,轮到使用服务器自己了。我在演讲里已经举过一个例子,申明这个使用服务器中一个虚幻的需求,在一台使用服务器上部署多个使用。如今我们看到,年夜多半使用多个使用服务器都不敷,一个使用服务器部署多个使用除测试玩玩,在实践的场景中,几近就是站不住脚的。开源社区的衰亡让一般程序员无机会晤到妙手是怎样事情的,高程度程序员总会寻求更“复杂”的事情体例,吸引更多程序员走进这类体例中。我很乐意地看到,我们的开辟体例不再是由老迈哥主导了。
比来几年,跟着云和挪动开辟的衰亡,微服务的观点渐渐进进了我们的视野,随之而来的就是社区关于开辟和部署的深思。后面提到的DropWizard的就是一个很好的例子,经由过程它,我们只需打出一个JAR包,和传统的体例分歧的是,这个JAR包间接就是一个可运转的使用。是的,它是有Main函数的。有Main函数就意味着,我们能够很便利地在IDE里做我们想做的统统,包含调试。如许一来,对照夙昔那种愚笨的体例,开辟职员能够做到“易者易为”。

最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。

再见西城 发表于 2015-1-20 16:32:14

其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。

简单生活 发表于 2015-1-29 12:57:03

是一种使用者不需花费很多时间学习的语言

冷月葬花魂 发表于 2015-2-6 01:06:41

http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。

第二个灵魂 发表于 2015-2-9 04:45:35

你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。

分手快乐 发表于 2015-2-25 19:18:29

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。

爱飞 发表于 2015-3-6 19:19:57

当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?

兰色精灵 发表于 2015-3-12 15:23:26

Java 编程语言的风格十分接近C、C++语言。

因胸联盟 发表于 2015-3-19 23:24:40

一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
页: [1]
查看完整版本: JAVA编程:郑晔谈Java开辟:新工具、新框架、新头脑仓酷云