仓酷云

标题: 发布一篇浅谈Java 8的函数式编程 [打印本页]

作者: 变相怪杰    时间: 2015-1-18 10:59
标题: 发布一篇浅谈Java 8的函数式编程
首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。
关于“Java8为Java带来了函数式编程”已有了良多会商,但这句话的真正意义是甚么?
本文将会商函数式,它对一种言语或编程体例意味着甚么。在回覆“Java8的函数式编程怎样”之前,我们先看看Java的演化,出格是它的范例体系,我们将看到Java8的新特征,出格是Lambda表达式怎样改动Java的光景,并供应函数式编程作风的次要上风。
函数式编程言语是甚么?

函数式编程言语的中心是它以处置数据的体例处置代码。这意味着函数应当是第一品级(First-class)的值,而且可以被赋值给变量,传送给函数等等。
现实上,良多函数式言语比这走得更远,将盘算和算法看得比它们操纵的数据更主要。个中有些言语想分别程序形态和函数(以一种看起来有点对峙的体例,利用面向对象的言语,这一般会将它们接洽得更严密)。
Clojure编程言语就是一个如许的例子,只管它运转于基于类的Java假造机,Clojure的实质是函数式言语,而且在初级言语源程序中不间接发布类和对象(只管供应了与Java优秀的互操纵性)。
上面显现的是一个Clojure函数,用于处置日记,是一等国民(First-classcitizen),而且不必要绑定一个类而存在。
  1. (defnbuild-map-http-entries[log-file]
  2. (group-by:uri(scan-log-for-http-entrieslog-file)))
复制代码
当写在函数中的程序,对给定的输出(不管程序中的别的形态怎样)老是前往不异的输入,而且不会发生别的影响,大概改动任何程序形态,这时候候函数式编程是最有效的。它们的举动与数学函数不异,偶然候把遵守这个尺度的函数称为“纯”函数。
纯函数的伟大优点是它们更简单推论,由于它们的操纵不依附于内部形态。函数可以很简单地分离在一同,这在开辟者事情流作风中很罕见,比方Lisp方言和别的具有强函数传统的言语中很广泛的REPL(Read,Execute,Print,Loop)作风。
非函数式编程言语中的函数式编程

一种言语是否是函数式并非非此即彼的形态,实践上,言语存在于图谱上。在最末了,基础上是强迫函数式编程,一般克制可变的数据布局。Clojure就是一种不承受可变数据的言语。
不外,也有一些别的言语,一般以函数体例编程,但言语其实不强迫这一点。Scala就是一个例子,它混和了面向对象和函数式言语。同意函数作为值,比方:
  1. valsqFn=(x:Int)=>x*x
复制代码
同时保存与Java十分靠近的类和对象语法。
另外一个极度,固然,利用完整非函数式言语举行函数式编程是大概的,比方C言语,只需保持好符合的程序员原则和常规。
思索到这一点,函数式编程应当被看做是有两个要素的函数,个中一个与编程言语相干,另外一个是用该言语编写的程序:
1)底层编程言语在多年夜水平上撑持,大概强迫函数式编程?
2)这个特定的程序怎样利用言语供应的函数式特征?它是不是制止了非函数式特征,比方可变形态?
<p>
再举这样一个例子:如果你想对一个数字取绝对值,你会怎么做呢?java的做法是intc=Math.abs(-166);而ruby的做法是:c=-166.abs。呵呵,这就看出了java与ruby的区别。
作者: 再见西城    时间: 2015-1-20 12:30
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
作者: 海妖    时间: 2015-1-22 09:58
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
作者: 分手快乐    时间: 2015-1-25 22:57
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
作者: 兰色精灵    时间: 2015-1-28 09:59
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
作者: 小妖女    时间: 2015-2-5 14:04
是一种为 Internet发展的计算机语言
作者: 活着的死人    时间: 2015-2-12 00:19
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
作者: 深爱那片海    时间: 2015-3-2 20:37
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
作者: 山那边是海    时间: 2015-3-11 06:07
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
作者: 因胸联盟    时间: 2015-3-17 22:08
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
作者: 金色的骷髅    时间: 2015-3-17 22:08
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
作者: 变相怪杰    时间: 2015-3-17 22:08
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
作者: 仓酷云    时间: 2015-3-25 03:29
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2