仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 740|回复: 12
打印 上一主题 下一主题

[学习教程] 发布一篇Java 下一代: Groovy、Scala 和 Clojure 中的配合点(一)

[复制链接]
简单生活 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:02:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
你总不能说你写框架吧,那无疑会加大工作量,现在大多企业采取的是折中的办法,就是改别人写好的框架,可要改框架,前提是你对这个框架足够的了解,这就更难了。
探求这些下一代JVM言语怎样处置操纵符重载
编程言语中的好理念能够持续并扩大到其他言语,就像琼浆一样耐久弥喷鼻。因而,不敷奇异的是,Java下一代言语—Groovy、Scala和Clojure—具有良多配合的特征。在本期和下一期Java下一代文章中,我将切磋每种言语语法中功能清单的分歧性。我从可以重载操纵符这个特征提及—克制了Java言语中临时存在的一个弱点。
操纵符重载
假如您改革过JavaBigDecimal类,大概看到过相似于清单1的代码:
清单1.Java代码中的LacklusterBigDecimal撑持
  1. BigDecimalop1=newBigDecimal(1e12);
  2. BigDecimalop2=newBigDecimal(2.2e9);
  3. //(op1+(op2*2))/(op1/(op1+(op2*1.5e2))
  4. BigDecimallhs=op1.add(op2.multiply(BigDecimal.valueOf(2)));
  5. BigDecimalrhs=op1.centeride(
  6. op1.add(op2.multiply(BigDecimal.valueOf(1.5e2))),
  7. RoundingMode.HALF_UP);
  8. BigDecimalresult=lhs.centeride(rhs);
  9. System.out.println(String.format("%,.2f",result));
复制代码
在清单1中,我试图完成正文中的这个公式。在Java编程中,因没法重载数学操纵符,使得我只能乞助于办法挪用。静态导进能够办理成绩,可是关于所选择的高低文,明显必要得当的操纵符重载。最后的Java工程师存心从言语上疏忽操纵符重载,不外这感到增添了太年夜的庞大性。但是履历标明,因缺少这一特征而强加给开辟职员的庞大性愈甚于潜伏的滥用时机。
用略微各不不异的体例,一切三种Java下一代言语都完成了操纵符重载。
Scala的操纵符
Scala经由过程保持操纵符与办法之间的区别而同意操纵符重载。操纵符只不外是具有特别称号的办法。比方,要重写乘法操纵符,能够重写*办法。[*是一个无效的办法称号,这就是Scala利用下划线(_)标记而不是Java星号(*)标记来代表导进的缘故原由之一。]
我利用单数来讲明重载。单数是一种数学暗示,包含实部和虚部,比方一般写作3+4i如许的情势。单数在良多迷信范畴都很罕见,包含工程学、物理学、电磁学和其他实际。清单2显现了单数的Scala完成:
清单2.Scala单数
  1. finalclassComplex(valreal:Int,valimaginary:Int){
  2. require(real!=0||imaginary!=0)
  3. def+(operand:Complex)=
  4. newComplex(real+operand.real,imaginary+operand.imaginary)
  5. def+(operand:Int)=
  6. newComplex(real+operand,imaginary)
  7. def-(operand:Complex)=
  8. newComplex(real-operand.real,imaginary-operand.imaginary)
  9. def-(operand:Int)=
  10. newComplex(real-operand,imaginary)
  11. def*(operand:Complex)=
  12. newComplex(real*operand.real-imaginary*operand.imaginary,
  13. real*operand.imaginary+imaginary*operand.real)
  14. overridedeftoString()=
  15. real+(if(imaginary<0)""else"+")+imaginary+"i"
  16. overridedefequals(that:Any)=thatmatch{
  17. caseother:Complex=>(real==other.real)&&(imaginary==other.imaginary)
  18. case_=>false
  19. }
  20. overridedefhashCode():Int=
  21. 41*((41+real)+imaginary)
  22. }
复制代码
Scala经由过程折叠不用要的脚手架代码,年夜年夜下降了Java言语的鲁潭取@纾清单2中,类中的机关函数参数和字段与类界说一同呈现。在本例中,类的主体充任机关函数,以是对require()办法的挪用在第一次实例化操纵过程当中考证值的存在。由于Scala主动供应字段,以是类的其他部分包括办法界说。关于+、-和*操纵符,我都声了然承受Complex数作为参数的同名办法。单数的乘法不及加法和减法那末直不雅。清单2中已重载的*办法完成公式:
(x+yi)(u+vi)=(xu-yv)+(xv+yu)i
<p>
如果你学习的是市场营销,是销售,也许参加大课堂的学习会更合适,因为你的工作能力中有个基础就是搭建自己的人脉,
不帅 该用户已被删除
沙发
发表于 2015-1-20 12:55:28 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
愤怒的大鸟 该用户已被删除
板凳
发表于 2015-1-20 22:38:36 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
冷月葬花魂 该用户已被删除
地板
发表于 2015-1-25 21:35:39 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
兰色精灵 该用户已被删除
5#
发表于 2015-1-26 17:02:32 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
谁可相欹 该用户已被删除
6#
发表于 2015-1-27 10:13:16 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
若天明 该用户已被删除
7#
发表于 2015-2-1 11:42:29 来自手机 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
金色的骷髅 该用户已被删除
8#
发表于 2015-2-2 13:26:08 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
蒙在股里 该用户已被删除
9#
发表于 2015-2-7 21:05:02 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
老尸 该用户已被删除
10#
发表于 2015-2-23 10:48:58 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
第二个灵魂 该用户已被删除
11#
发表于 2015-3-7 08:07:28 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
因胸联盟 该用户已被删除
12#
发表于 2015-3-14 15:06:29 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
分手快乐 该用户已被删除
13#
发表于 2015-3-21 10:56:14 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-1 12:27

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表