武汉北大青鸟中南软件学院
400-027-0822

Java 语言不同阶段的分析

2017-03-09供稿中心: 北大青鸟武汉中南软件学院

java作为最受欢迎的编程语言之一,Java已经走过了20个年头。从已经落寞的诺基亚到现在火热的电商系统,我们都能看到Java语言的身影。从1995年的第一个版本到现在的Java 1.8,我们甚至能从Java的版本迭代中看到不同时代编程语言关注的重点。经过了过去20年的发展,Java已经成为如今使用最为广泛的企业级语言。

Java发展到今天已经20年了,作为一个编程语言确实不简单,想当初人人受怀疑的慢语言到今天通用的健壮语言,真是大智若愚啊。Java代表的面向对象思想确实给工程领域带来了革命性的变化,当然思想是不断进化发展的,如今人们开始看好函数式编程语(FP)。尽管Java 8也加入了函数语言的特点,但是OOPFP两者到底是不同的编程范式,不过掌握FP有一定门槛,这也是造成很多人观望的一个原因。

Java在数据流处理方面还是很有竞争力的,而大数据实时流处理系统是Java的新领域,在这个领域有Apache KafkaApache SamzaApache StormApache SparkStreaming模块和最新的Apache FlinkSpark是基于JVM的函数语言Scala编写,其余都是Java编写。

Scala为代表的JVM语言发展迅速,Scala语言特性是首先区分不变性和可变性,当初使用EJB时首先要区分是无状态和有状态,这说明思路是一脉相承的。可变性的状态是造成副作用和各种Bug的罪魁祸首,可能我们如果只是把可变状态使用数据库实现时没有注意到这种问题。其实这个问题遍布在应用的每个角落,特别是使用类和对象这个OOP概念实现时最容易发生。一个类或对象包括字段和方法,如果这个字段值是可变的(可变状态),我们使用这个对象时如果不打开它的类代码是无法得知它有可变状态的,那么就会导致各种副作用发生。

而函数编程由于函数方法是第一公民,没有什么东西挡在它的前面,没有类或对象包裹着它们,因此,它们无法私藏可变状态字段,能够确保应用系统每行代码都是基于不可变的基础之上。

如果说Scala之类JVM的函数语言适合不断添加功能函数的应用场景,那么Java之类的OOP语言适合不断增加实体物体的应用场景。前者好动,后者好静。

Java在云时代面临以Go语言为主的容器(Docker等技术)生态圈的挑战。其实JVM也是一种容器,但是这种容器特性正在被Linux学习与赶超,那么,JVM的定位就可能比较尴尬。

Docker之类容器可以在本地笔记本或电脑上运行,然后同样可以部署到云上运行。当在云上运行时,Kubernetes能够以一种可控的方式升级容器从而实现运行管理一批容器,如同一个大型船队或舰队一样,你可以控制它们的流量访问量,可以指定多少个容器来扩展支撑一个服务的运行,随着访问量提升,你通过增加容器数量能够整个系统的负载能力。

当然,Java的大型分布式系统越来越多,Java在云计算与分布式系统中还是扮演主要角色,形成一个大型的生态圈。当我们站在泰山之上,一览众山小,当你在全球拥有多个数据中心时,语言已经变得不那么重要了,关键是架构设计。

现在的开发语言如雨后春笋,主要原因是CPU进入多核并发时代,以及大型架构进入分布式系统,如何使用一种语言从微观的CPU多核之间并发到数万台服务器之间的分布式计算处理,这种大一统的愿景促使人们在不断探索。

Java中,我们可以通过框架来实现这点,以我前几年研发Jdon框架为例,虽然能够勉强实现并发与分布式,但是这种实现需要很强的知识背景,不利于初学者上手。而要达到普及这个目标,必须从语言入手,让语言初学者在学习掌握语言以后,无形中就会实现了并发与分布式。

关于我们
首页
公司简介
课程专业
师资力量
高薪就业
青鸟课程
ACCP
学士后Java
基础教育
UI设计
回到首页