仓酷云

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

[学习教程] 发布一篇浅谈Java 8的函数式编程

[复制链接]
变相怪杰 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 10:59:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
首先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:20 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
海妖 该用户已被删除
板凳
发表于 2015-1-22 09:58:14 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
分手快乐 该用户已被删除
地板
发表于 2015-1-25 22:57:49 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
兰色精灵 该用户已被删除
5#
发表于 2015-1-28 09:59:47 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
小妖女 该用户已被删除
6#
发表于 2015-2-5 14:04:32 | 只看该作者
是一种为 Internet发展的计算机语言
活着的死人 该用户已被删除
7#
发表于 2015-2-12 00:19:52 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
深爱那片海 该用户已被删除
8#
发表于 2015-3-2 20:37:21 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
山那边是海 该用户已被删除
9#
发表于 2015-3-11 06:07:09 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
因胸联盟 该用户已被删除
10#
发表于 2015-3-17 22:08:13 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
变相怪杰 该用户已被删除
11#
 楼主| 发表于 2015-3-17 22:08:14 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
金色的骷髅 该用户已被删除
12#
发表于 2015-3-17 22:08:13 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
13#
发表于 2015-3-25 03:29:01 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-24 01:10

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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