Java,传奇的一生!

Wesley13
• 阅读 600

 如果说用“永存、曲折、已死、重生”来形容Java,笔者以为一点也不为过。

1991年,James Gosling带领着名为“Green Team”的团队着手研发一种新的语言以及专为下一代数字设备和计算机使用的网络系统。历时4年辛勤工作后,该项目最终修成正果并取名为Java。 

Java有着类似于C的语法并有“一次编译,随处运行”的灵便性。透过虚拟机机制,可以使代码在底层平台进行运行时编译。回首Java过去的20年,首先是经历了微机时代的兴与衰,然后进入服务器领域及智能电话领域,继而在DHS(美国土安全部)的“不安全”定义下艰难前行,最后投入甲骨文(Oracle)怀抱现正蓄势迸发第二春。难道还有别的语言有如此跌宕起伏的情节吗? 

Java推出后,Sun发现市场上存在着一个问题—计算机领域与非计算机领域彼此是隔断的。Sun认为这是一个机遇,如果能把两者连接起来将会带来一场计算机革命。“统一的主题是网络。”Gosling说,“放眼当时的市场,两个领域的厂家各自为政,没有形成统一的网络。因此很多时候不得不重复大量的实验,但这些其实早在30年前的计算机科学中已得到解决。”问题的所在是电子消费品制造者没有考虑使用网络,例如跨平台的公共APIs或者代码复用,“你几乎找不到任何的软件复用。所有软件都只能不断地被重复创建。我们提出的模块概念终将改变这一局面。” 

成功非坦途

Java面世的头五年,成为当之无愧的编译器高性能代言人。而过后五年,所有人都把重心转向了企业应用。Gosling说,“回首Java EE统治世界的场景至今仍历历在目。我们唯一的失误是把全部精力都集中于此,所有资源都被优先调配到EE,导致无法投入更多的精力去开拓桌面的世界。” 

Oracle Java平台开发副总裁Saab是这样说的,“在90年代,大多数开发者都把精力投入到桌面应用的编写之上。到了2000年,Pet.com的成功吸引了大批的跟风者。业界又把焦点从桌面转移到了HTML应用。随着智能电话和平板的到来,基于触摸屏的移动应用又站在了风口。所以对于下一个流行趋势是很难把握的,这涉及到天时、地利、人和。” 

Java 2 Micro Edition(J2ME)在1998年引入并把Java划分了三个平台:Java 2 Standard Edition(J2SE)、J2ME以及Java 2 Enterprise Edition(J2EE)。ME的意思是小型设备和嵌入系统。ME在翻盖手机上得到推广,成为当时的标配。Gosling说,“ME已经做得足够好了,在当时是最强大的智能电话开发平台。不过现在渐渐被遗忘,因为Android太耀眼了。” 

作为一个独立平台,Java  ME被边缘化了。Oracle开发部高级副总裁Cameron Purdy说在下一个版本Java 9中会把所有平台统一起来,“对比SE、ME被独立出来但发展缓慢。Java 9的模块化特性会使得Java ME的可复用性得到增强,这将是反击Android和iOS的有力武器。” 

陷入低谷

随着Sun在最近10年的低迷,Java也不能幸免地经历着蹉跎岁月。IBM报价65亿美元,Sun没答应,74亿美元,Oracle得到了Sun。 

在Oracle管理下,头几年Java表现良好,以0重大失误成为安全的代名词。不过在2013年1月情况开始变坏,美国土安全部(DHS)建议人们尽量不要使用Java。作为面向企业的软件公司,打补丁修复Bug的速度是Oracle的短板,根本无法与面向大众消费者的微软或Adobe相比。别人是以小时或天来计,而Oracle是以月为基本单位。 

Purdy认为Oracle已经尽了最大的努力去修补并清楚这个短板的重要性。问题的关键是如何打造一支在失去Gosling等干将后仍能独当一面的团队。他说,“我们听到了不少质疑之声,但其实我们一直都在不断加入投入的力度并努力寻求解决的方案。” 

浴火重生

DHS的公开声明不啻是压垮Java的最后一根稻草,很多人都预言Java将风光不再。然而事情慢慢得到转机,不少Java粉丝开始出来捍卫Java的名声。Dr. Dobb's Journal编辑Andrew Binstock曾发表一篇社论,其题目是:《即使面临死亡,Java看上去还是相当健康的》。 

对于Oracle的接管,Gosling表达了自己的喜悦之情,“得知这个消息后,我感到非常惊喜。Oracle是个非常优秀的监护人并大大超出了我的期望。一开始我还担心它会不会成为第二个Solaris,现在看来我是多虑了。” 

接管Java的头五年,Oracle不得不重新打造一支Java团队。“我们花了大量时间来审视整个过程以确定如何进行Bug修复,从输入到发布机制,我们回顾了大量的代码。最后列出了一个长长的错误修复表。”Purdy回忆说。 

安全曾让Java蒙羞,安全也让Java重获新生。在2014 Pwn20wn黑客大会上,Java成为唯一没有被攻破的平台。而在2015的会议中,Pwn20wn甚至没有把Java列在攻击名单上。

现在和未来

Java 9将是自被Oracle收购后发布的首个重大版本。Java 9的最主要目标是最大限度实现模块化以帮助人们实现积木式的应用编写。 

“我们的目的是帮助人们从JAR的束缚中解脱出来。”Saab说,“你将很轻松地处理在过去相当复杂的事情,例如打包。你可以只用到需要的模块,而把其它忽略。”Purdy补充道,“这开创了Java平台的先河。该特性将贯穿整个Java库,并以单依赖图的方式重新整理依赖。” 

谈及Java的未来,Eclipse基金会执行董事Mike Milinkovich的看法是,“我认为Java的未来在于物联网。我十分乐意看到Oracle及其合作伙伴能把精力放在完全点对点的Java存储方案上,透过网关实现设备到企业后台的连接。如果成功将能使Java在往后20年发展得更好走得更远。虽然这还有一段路要走,但我相信Java能够做到。” 

Gosling的看法是,“VM是它本身的生态,所有部分彼此相通。IT世界的未来是要实现互联互通。把边缘和核心有效地统一起来,可以省却内外分开管理的麻烦,从而得到更加强大的平台。” 

遍地开花

虽然很多人都曾预言Java将一蹶不振,但是现今在不少的重要项目中,Java仍扮演着极其重要的角色。 

Purdy指出,没有Java,甚至不会有大数据的大发展,“Hadoop本身就是用Java编写的。当你需要在运行MapReduce的服务器集群上发布新功能时,你需要进行动态的部署,而这正是Java所擅长的。” 

另一Java受惠者是Twitter。一开始Twitter是用Ruby on Rails编写的,但是随着用户数的增长RoR逐渐显得力不从心。Fail Whale(失败鲸)的宕机画面预示着瓶颈问题亟需解决。在2012年,Twitter从RoR转向了Java和Scala,而失败鲸从此灭绝了。 

可见Java不但没有成为昨日黄花,还重新焕发了新的生机。让我们共同期待Java 9,看看Oracle将为广大开发者带来什么样的惊喜。 

原文地址:http://www.pinhuba.com/other/101105.htm

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
Java爬虫之JSoup使用教程
title:Java爬虫之JSoup使用教程date:201812248:00:000800update:201812248:00:000800author:mecover:https://imgblog.csdnimg.cn/20181224144920712(https://www.oschin
Wesley13 Wesley13
3年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Java服务总在半夜挂,背后的真相竟然是... | 京东云技术团队
最近有用户反馈测试环境Java服务总在凌晨00:00左右挂掉,用户反馈Java服务没有定时任务,也没有流量突增的情况,Jvm配置也合理,莫名其妙就挂了
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这