仓酷云
标题:
了解下JAVA的Java 下一代: Groovy、Scala 和 Clojure 中的配合点(二)
[打印本页]
作者:
海妖
时间:
2015-1-18 11:02
标题:
了解下JAVA的Java 下一代: Groovy、Scala 和 Clojure 中的配合点(二)
最后我再次声明,我并没有说不看好java,实际上我对java很乐观的,毕竟她正在不断改进中,我相信她总有一天会和.net并驾齐驱的
懂得Java下一代言语怎样削减榜样代码和下降庞大性
Java编程言语出生时所面对的限定与现在的开辟职员所面对的前提有所分歧。详细来说,因为上世纪90年月中期的硬件的功能和内存限定,Java言语中存在原语范例。从当时起,Java言语不休在演变,经由过程主动装箱(autobox)打消了许多贫苦操纵,而下一代言语(Groovy、Scala和Clojure)更进一步,打消了每种言语中的纷歧致性和抵触。
在这一期的文章中,我将展现下一代言语怎样打消一些罕见的Java限定,不管是语法上仍是默许举动上。第一个限定是原语数据范例的存在。
原语的灭亡
Java言语最入手下手有8对原语和响应的范例包装器类(最后用于办理功能和内存限定),并经由过程主动装箱慢慢地淡化了它们之间的区分。Java下一代言语更进一步,闪开发职员以为仿佛基本不存在不同。
Groovy完整埋没了原语范例。比方,int一直暗示Integer,Groovy主动处置数字范例的上变更,避免呈现数值溢堕落误。比方,请检察清单1中的Groovyshell交互:
清单1.Groovy对原语的主动处置
groovy:000>1.class
===>classjava.lang.Integer
groovy:000>1e12.class
===>classjava.math.BigDecimal
复制代码
在清单1中,Groovyshell显现,即便是常量也是经由过程底层的类来暗示的。由于一切数字(和其他假装的原语)都是真实的类,以是可使用元编程手艺。这些手艺包含将办法增加到数字中(这一般用于构建特定范畴的言语,即DSL),撑持3.cm如许的表达式。在前面先容可扩大性的那期文章中,我会更周全地介绍此功效。
与Groovy中一样,Clojure主动屏障原语与包装器之间的区分,同意对一切范例实行办法挪用,主动处置容量的范例转换。Clojure封装了大批底层优化,这已在言语文档中具体申明。在很多情形下,可供应范例hints,使编译器可以天生更快的代码。比方,无需利用(defnsum[x]...)界说办法,能够增加一个范例提醒,好比(defnsum[^floatx]...),它会为临界区(criticalsection)天生更高效的代码。
Scala也屏障了原语之间的区分,通常对代码的时效性部件利用底层原语。它还同意在常量上挪用办法,就像2.toString中一样。借助其混搭原语和包装器的才能,好比Integer,Scala比Java主动装箱加倍通明。比方,Scala中的==运算符可在原语和对象援用上准确运转(对照值,而不是援用),而分歧于不异运算符的Java版本。Scala还包括一个eq办法(和一个对称的ne办法),它一直对照底层援用范例是不是等效。基础而言,Scala会智能地切换默许举动。在Java言语中,==会对援用数据举行对照,您几近不必要这么做,可使用不太直不雅的equals()对照值。在Scala中,==能准确运转(对照值),不管底层完成是甚么,它还供应了一个办法来实行不太罕见的援用相称性反省(referenceequalitycheck)。
Scala的这一特征标明,Java下一代言语的一个主要上风在于:将初级细节卸载到言语和运转时,开辟职员可以有更多的工夫思索更初级的成绩。
简化默许举动
人们的意见高度分歧,年夜部分Java开辟职员都以为,在Java言语中罕见的操纵必要太多的语法。比方,属性界说和其他榜样代码使类界说变得很混乱,掩饰了主要的办法。一切Java下一代言语都供应了简化创立和会见历程的路子。
Scala中的类和case类
Scala已简化了类界说,可为您主动创立存取函数、赋值函数和机关函数。比方,请检察清单2中的Java类:
清单2.Java中复杂的Person类
class
Person{
privateStringname;
privateintage;
Person(Stringname,intage){
this.name=name;
this.age=age;
}
publicStringgetName(){
returnname;
}
publicintgetAge(){
returnage;
}
publicvoidsetAge(intage){
this.age=age;
}
@Override
publicStringtoString(){
returnname+"is"+age+"yearsold.";
}
}
复制代码
清单2中唯一的非榜样代码是改写的toString()办法。机关函数和一切办法都由IDE天生。比拟疾速天生代码,在今后轻松了解它更加主要。无用的语法增添了您在了解底层寄义之前必需利用的代码量。
<p>
j2EE和asp比较,其实也没什么比的,原因和我上面说那些比较差不了多少,也是稳定性,安全性,J2EE比asp高,速度上比不过asp,asp也是延续着它的拖拽控件的方法,提高速度。
作者:
因胸联盟
时间:
2015-1-20 12:55
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.ckuyun.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
作者:
精灵巫婆
时间:
2015-1-20 22:38
Java是一种计算机编程语言,拥有跨平台、面向对java
作者:
第二个灵魂
时间:
2015-1-25 21:35
是一种为 Internet发展的计算机语言
作者:
简单生活
时间:
2015-1-27 10:13
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
作者:
老尸
时间:
2015-2-1 11:42
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
作者:
若天明
时间:
2015-2-2 13:26
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
作者:
再现理想
时间:
2015-2-9 03:33
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
作者:
再见西城
时间:
2015-2-26 20:43
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
作者:
爱飞
时间:
2015-3-8 17:26
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
作者:
乐观
时间:
2015-3-16 07:50
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
作者:
深爱那片海
时间:
2015-3-22 21:10
是一种使用者不需花费很多时间学习的语言
作者:
小妖女
时间:
2015-3-22 21:10
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2