|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
学习JAVA的目的更多的是培养自身的工作能力,我觉得工作能力的一个核心就是:独立思考能力,因为只有独立思考后,才会有自己的见解
JamesGosling在“TheFeelofJava”中说到:
Java是一种蓝领言语,它并不是博士的论文素材而是用于完成事情的言语。形形色色的程序员都十分熟悉Java,由于在计划Java之初我就保持如许一种概念:选择久经磨练的工具而非仅仅是听起来很美。
Java所取得的伟大乐成证实了这类计划体例是准确的,但假如这仍然是现今Java的主要方针的话,那么其了局就是言语的演进将变得十分迟缓。除此之外,Java是一门成熟、利用普遍的言语这个现实也将导致其演进历程充斥了坚苦。一方面,增加到言语中的每一个特征都大概在必定水平上形成不成意料的了局,这么做会冷淡那些已利用了该言语的开辟者。另外一方面,自己很完善的特征大概在同言语中的其他特征举行交互时发生不成意料的了局。更糟的是,一旦增添了某个言语特征,几近就不成能再将其移除,即即是该特征会对全部言语发生倒霉影响也没举措。为了证实某个新特征是准确的,言语计划者必需确信从久远来看,该特征会给言语带来优点,而不是短时间效益或是针对某个成绩的疾速办理计划,以后就变得可有可无了。为了下降风险,言语计划者一般城市创立独自的一种言语或是分支来举行实验,好比Pizza语言就是在完成前用来测试Java泛型的。这类体例的成绩在于实验的介入者十分小众而且都是本人想介入进来的;明显他们对言语特征很感乐趣,良多人都是学者或研讨员。可是,在一般的程序员入手下手利用这些特性时,那些学者或是研讨员以为很棒的特征大概会变得很糟。
为了直不雅感觉一下这类情形,请思索关于Java7闭包特征的剧烈争辩。一段工夫以来,有人在提案中给出了闭包的完成,但终极却仍是没有告竣共鸣。随后,Sun决意不盘算在JDK7中增加完全的闭包撑持。这时候争辩的核心转向为Java是不是变得愈来愈庞大了,在Java5中增加泛型(特别是通配符语法)时就已呈现了这类争辩;在Java已经由过程匿名外部类部分完成该功效的情形下,完全的闭包撑持是不是是准确的呢。必要完全闭包撑持的两个主要场景是简化fork/joinAPI(增加到了JDK7中以改善多核编程)的利用以及帮助资本的清算。JoshBloch的ARMblock提案(希冀经由过程ProjectCoin到场到JDK7中)就第二个成绩给出了另外一种办理计划。CliffClick博士在面向Java的可扩大、非堵塞编程作风的研讨中给出了关于fork/join的另外一种计划,跟着处置器中心数的不休增加,这类计划看起来更公道。假如这统统都成为可能的话,那末Java中利用闭包的中央将变得十分少了,言语基本没需要供应这个特征。
话虽云云,但关于编程言语来讲,延续不休地安稳开展仍是十分主要的。因而本文探求了以下3种手艺以向Java中增添新的言语特征而又不改动言语自己,他们是客户化范畴特定言语(DSL)、Java6的注解处置器(经由过程库来增添可选的言语特征)和将语法糖从言语迁徙到IDE中。每项手艺都可让浩瀚的主流开辟者以非侵进的体例体验这些新特征,最棒的设法则能够融进到言语中心傍边。
客户化DSL
在这3项手艺中,人们议论最多的仍是DSL。该术语切实其实切寄义至今还没有一致,但出于会商的目标,我们在这里复杂地把它看做是用于办理特定成绩、使用局限很窄的一种言语而非用于办理一切盘算成绩的通用言语。如许,DSL就并不是是图灵完整(non-Turingcomplete)的。固然了,仍是会有一些边沿情形存在的,好比说Postscript是一种图灵完整的言语,但依据我们刚刚的界说,它也是一种DSL。
如上所述,DSL并不是新观点。其他相似的DSL另有正则表达式、XSLT、Ant和JSP等等,一切这些都需要某种客户化的剖析器对其举行处置。MartinFowler还说fluentinterfaces/API也能够看做是另外一种DSL,称之为外部DSL。他说外部DSL是间接在宿主言语中开辟出来的。这关于Lisp和Smalltalk开辟者来说很简单了解,而比来Ruby社区也入手下手对外部DSL情有独钟了。
<p>
但是我同意你的观点,对于大型项目来说,应该是采用框架的一部分,根据功能的不同而改进,欢迎你能再提出些宝贵意见,我会多多学习的。说到jbuilder,我可能是个人感觉,用的时候确实没有vs爽,我最喜欢的IDE是netbeans,谢谢。 |
|