飘灵儿 发表于 2015-1-18 11:19:15

JAVA网站制作之Java 8那些被热闹的新特征仓酷云

多谢指点,其实我对.net网页编程和ruby也不是很了解,对与java也只是刚起步的阶段,只是在学习中有了点想法就写出来了,现在俺本科还没毕业,所以对大型项目基本上也没有什么经验。lambda表达式,lambda表达式,仍是lambda表达式。一提到Java8就只能听到这个,但这不外是个中的一个新功效罢了,Java8另有很多新的特征——有一些功效壮大的新类大概新的用法,另有一些功效则是早就应当加到Java里了。
这里我筹办先容它的10个我团体以为十分值得懂得的新特征。总会有一款合适你的,入手下手来看下吧。

[*]default办法
这是Java言语的一个新特征,如今接口类里能够包括办法体(这就是default办法)了。这些办法会隐式的增加到完成这个接口的每一个子类中。
这使得你能够在不损坏代码的条件下扩大原有库的功效。它相对是个利器。但从另外一个方面来讲,这使得接口作为协定,类作为详细完成的界线入手下手变得有点含混。但优点就是,它经由过程一个很文雅的体例使得接口变得更智能,同时还制止了代码冗余,而且扩大类库。欠好的中央就是,我估量很快就会看到有在接口办法里猎取this援用然后强迫转化成某个详细范例的写法了。

[*]停止历程
一旦启动内部历程的话,当这个历程溃散,挂起,大概CPU抵达100%的时分,你就得返来擦屁股了。Process类如今增添了两个新的办法,能够来教导下那些不听话的历程了。
第一个是isAlive()办法,有了它你能够判别历程是不是还在世。第二个办法则加倍壮大,它叫destroyForcibly(),你能够用它来强迫的杀失落一个已超时大概不再必要的历程。

[*]StampedLock
提到这个不由有点小冲动。没有人会喜好在代码中利用同步。用了它一定会下降程序的吞吐量,更糟的话还会招致历程挂起。只管如许,偶然候你却不能不选择它。
当多个历程会见一个资本的时分,有多种办法能够举行同步。个中用得最多的一种是ReadWriteLock和基于它的几种完成。它经由过程堵塞写线程的体例来同意多个线程并发的读,如许削减了线程之间的合作。听起来还不错,但实践上这个锁其实是太太太慢了,特别是当有很多写线程的时分。
因而Java8引进了一个新的读写锁,叫做StampedLock。它不但更快,同时还供应了一系列壮大的API来完成悲观锁,如许假如没有写操纵在会见临界地区的话,你只需很低的开支就可以猎取到一个读锁。会见停止后你能够查询锁来判别这时代是不是产生了写操纵,假如有的话再选择举行重试,晋级锁,大概保持这个操纵。
这切实其实是一个十分壮大的工具,它自己就值得专门花一篇文章来先容。这个新玩艺儿让我感应十分冲动和镇静,它真的是太棒了。
想懂得更多请点击这里。

[*]并发计数器
这是多线程程序会用到的另外一个小工具。它供应了复杂高效的新接口来完成多线程的并发读写计数器的功效,和AtomicInteger比起来,它要更快一些。相称赞的工具。

[*]Optional
欠好,又有空指针了,这是一切Java开辟职员的把柄。这估量是有史以来最多见的非常了,最少是1965年以来。
Java8自创了Scala和Haskell,供应了一个新的Optional模板,能够用它来封装大概为空的援用。这毫不是闭幕空指针的银弹,更多只是使API的计划者能够在代码层面声明一个办法大概会前往空值,挪用方应当注重这类情形。正由于这个,这只对新的API无效,条件是挪用方不要让援用逃逸出封装类,不然的话援用大概会在表面被不平安的放弃失落。
我对这个新的特征真的是又爱又恨。一方面,空指针是一个年夜成绩,只需能办理这个成绩的工具我都接待。但另外一方面,我对它是不是能担此重担执嫌疑的立场。这是因为利用它的话必要全公司的个人勉力,短时间内很难会有奏效。除非鼎力地推行,不然极可能会功败垂成。

[*]万物皆可注解
另有一个小的改善就是如今Java注解能够撑持恣意范例了。之前只要像类和办法声明之类的才干利用注解。在Java8内里,当范例转化乃至分派新对象的时分,都能够在声明变量大概参数的时分利用注解。这是Java为了更好地撑持静态剖析及检测工具(好比FireBug)而做的事情中的一部分。这是个很不错的特征,可是和Java7的invokeDynamic一样,它的真正代价取决于社区今后怎样往利用它。

[*]数值溢出
这些办法早就该呈现在Java的中心类库里了。我有个嗜好就是往测试整型超越2^32时溢出的情形,弄出一些恶心的随机BUG来(怎样会失掉这么奇异的一个值?)。
一样的,这也不是甚么银弹,只不外是供应了一组函数,如许你在利用+/*操纵符举行数值操纵的时分,假如呈现了溢出,会抛一个非常。假如我能够决意的话,我会把它作为JVM的默许形式,显式的标明函数会呈现数值溢出。

[*]目次遍历
遍历目次树这类事一般都得上Google搜下怎样完成(你极可能用的是Apache.FileUtils)。Java8给Files类做了一次整容手术,增添了十个新的办法。我最喜好的一个是walk()办法,它遍历目次后会创立出一个惰性的流(文件体系很年夜的情形下十分有效)。

[*]加强的随机数天生
如今常常都在会商暗码大概密钥简单蒙受打击的事。程序的平安性是项很庞大的工程,而且很简单堕落。这就是我为何喜好这个新的SecureRandom.getinstanceStrong()办法的缘故原由,它能主动选择出以后JVM可用的最好的随机数天生器。如许削减了猎取失利的机率,同时也制止了默许的弱随机数天生器大概会招致密钥大概加密值简单被黑客攻破的成绩。

在ruby里才是一切皆对象。当然我不并不是很了解ruby,但是ruby确实是将语法简化得很好。

乐观 发表于 2015-1-20 20:11:27

不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。

莫相离 发表于 2015-1-21 07:40:14

我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。

老尸 发表于 2015-1-24 21:05:25

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

柔情似水 发表于 2015-1-28 07:55:24

Java是一种计算机编程语言,拥有跨平台、面向对java

深爱那片海 发表于 2015-2-6 01:01:13

你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。

小妖女 发表于 2015-2-6 16:11:14

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

金色的骷髅 发表于 2015-2-8 08:57:06

科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

小女巫 发表于 2015-2-25 06:47:11

你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。

只想知道 发表于 2015-3-7 17:24:27

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

变相怪杰 发表于 2015-3-11 15:56:41

Java是一种计算机编程语言,拥有跨平台、面向对java

因胸联盟 发表于 2015-3-18 23:57:03

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

再现理想 发表于 2015-3-26 19:22:06

设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
页: [1]
查看完整版本: JAVA网站制作之Java 8那些被热闹的新特征仓酷云