Java学习笔记(一)Java的前世与今生

Java的前世与今生

目录
  1. 什么是Java(概述、应用特点)
  2. Java的发展过程
1. 什么是Java
  • 1.1 Java概述
  • 1.2 Java的应用
  • 1.3 Java的特点

1.1 Java概述

印度尼西亚有一个盛产咖啡的岛屿叫做Java,其中文译名为爪哇,SUN公司的开发人员为他们开发的一种新语言起名为Java,其寓意是“为世人端上一杯热咖啡”。

SUN公司的中文名称是太阳公司,其在2009年被Oracle(甲骨文)公司以56亿美元(74亿美元刨去SUN公司账上18亿美元的现金)收购。

Java具有面向对象、跨平台(操作系统)、安全、稳定和多线程等优良特性,是目前软件设计中优秀的编程语言。Java不仅可以用来开发大型的应用程序,而且特别适合于Internet应用的开发。Java确实具备了“一处编写,处处运行”第特点,这也是Java最初风靡全球的主要原因,并且时至今日仍为显露出将要衰退的征兆。

根据TIOBE排行榜在2019年11月份对语言流行指数的排名,Java再次蝉联了第一的位置。
在这里插入图片描述

《Java核心技术》在第一卷有过这样的描述:“作为一名程序设计人员,常常希望能够有一种语言,它具有令人赏心悦目的语法和易于理解的语义(C++不是这样的)。与许多其他的优秀语言一样,Java完全满足了这些要求。

Java是一个完整的平台,它有一个其他许多语言没有的庞大的库,其中包含了很多可重用的代码和一个提供诸如安全性、跨操作系统的可移植性以及自动垃圾回收集等服务,所以说Java是一种功能齐全的出色语言、是一个高质量的执行环境。

正是因为Java集多种优势于一身,所以对广大的程序设计人员有着不可抗拒的吸引力。

1.2 Java的应用

Java的应用非常广泛:

名称内容
Android开发Android手机上的APP几乎都是用Java开发的,例如微信、支付宝等。
桌面应用程序Java也可以用来开发电脑上的软件,例如Eclipse、Netbeans。
网站Java非常适合开发大型的企业网站,例如人人网、去哪儿网的后台都是Java。
嵌入式应用Java在嵌入式领域发展空间很大。在这个平台上,只需130KB就能够使用Java技术(在智能卡或者传感器上)。
在金融业应用的服务器程序Java在金融服务业的应用非常广泛,很多第三方交易系统、银行、金融机构都选择用Java开发,因为相对而言,Java较安全。
大数据技术Hadoop以及其他大数据处理技术很多都是用Java,例如Apache的基于Java的HBase和Accumulo以及 ElasticSearchas。
高频交易的空间Java平台提高了这个平台的特性和即使编译,他同时也能够像 C++ 一样传递数据。正是由于这个原因,Java成为的程序员编写交易平台的语言,因为虽然性能不比C++,但开发人员可以避开安全性,可移植性和可维护性等问题。
科学应用Java在科学应用中是很好选择,包括自然语言处理。最主要的原因是因为Java比C++或者其他语言相对其安全性、便携性、可维护性以及其他高级语言的并发性更好。

桌面应用程序、企业级应用(网站)和Android是目前Java的主要应用方向。

Java成功地推出后不久,微软就发布了一个叫做J++的产品,它与Java有几乎相同的编程语言以及虚拟机。现在,微软不再支持J++,取而代之的是另一种名为C#的语言。C#与Java有很多相似之处,然而使用的却是完全不同的虚拟机。

1.3 Java的特点

名称具体内容
简单性Java剔除了C++中许多很少使用、难以理解、易混淆的特性。在目前看来,这些特性(如头文件、指针、虚基类等)带来的麻烦远远多于其带来的好处。所以说Java语法是C++语法的一个“纯净”版本,我甚至见过有人把Java称为“C++ -(C++减)”。
面向对象开发Java时面向对象技术已经相当成熟。Java的面向对象特性与C++旗鼓相当。Java与C++的主要不同点在于多重继承,在Java中,取而代之的是更简单的接口概念。
分布式Java有一个丰富的例程库,用于处理像HTTP和FTP之类的TCP/IP协议。
健壮性Java编译器能够检测许多其他语言中仅在运行时才能够检测出来的问题。
安全性Java适用于网络/分布式环境。为了达到这个目标,在安全方面投入了很大精力。使用Java可以构建防病毒、防篡改的系统。然而现在看来,Java的安全模式并没有原先预想的那么成功,但是在之前的时代Java确实相当超前。
体系结构中立编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码,只要有Java运行时系统,这些编译后的代码可以在许多处理器上运行。(关于这一部分的详细内容可以查看我的另一篇博客《Java学习笔记(四)Java的编译运行过程》)
可移植性与C和C++不同,Java规范中没有“依赖具体实现”的地方。基本数据类型的大小以及有关运算都做了明确的规定。
解释型Java可以在任何移植了解释器的机器上执行Java字节码。
*高性能现在的即时编译器已经非常出色,以至于成了传统编译器的竞争对手。在某些情况下,甚至超越了传统编译器,原因是他们含有更多的可用信息。
多线程如今,我们非常关注并发性,因为摩尔定律的发展速度正在放缓。我们不仅再追求更快的处理器,同时着眼于获得更多的处理器,并且要让他们一直保持工作。而Java是第一个在语言级别提供内置多线程支持的高级语言,并且表现得非常出色。
动态性从各种角度看,Java与C或C++相比更加具有动态性。它能适应不断发展的环境。库中可以自由地添加新方法和实例变量,而对客户端却没有任何影响。在Java中找出运行时类型信息十分简单。
2. Java的发展过程
  • SUN公司成立
  • “Green”计划
  • “Oak”语言的诞生
  • Java面世及其在SUN公司的发展
  • SUN公司被收购及Java在Oracle公司的发展

在这里插入图片描述

20世纪八九十年代是科技工业史上群星闪耀的时代。在以前AT&T和IBM的时代需要半个世纪才能发生的事,可能在这里10年里一下子就发生并结束了。在这个大时代里,很多公司原本有可能成为信息工业的王者,却最终与机会失之交臂。这些公司,不论当初多么辉煌,当它开始走下坡路时,被人遗忘的速度比它衰落的速度更快。——《浪潮之巅(第三版·上册)》
而SUN公司(其中文名为太阳公司)显然是这样一位曾经在信息产业叱咤风云却最后消失于江湖的争霸者。

  1. SUN公司成立

Sun公司名称的由来是斯坦福大学校园网(Stanford University Network)的首字母缩写。当 Andy Bechtolsheim(安迪·贝克托森 )还是斯坦福大学研究生时,他设计出一种“三个百万”的小型图形计算机,这在当时已经是很先进的了。

贝克托森开发出原型机 Sun-1 后,便于 1982 年和斯科特·马可尼里(Scott McNealy)等斯坦福毕业生从学校出来创办了Sun公司。

从斯坦福大学孵化出的高科技公司首推太阳公司,它也是最早进入中国市场并直接与中国政府开展技术合作的计算机公司。在2000年的高峰期,太阳公司在全球拥有5万雇员,市值超过2000亿美元,是2009年被甲骨文收购时56亿美元(74亿美元刨去太阳公司账上的18亿美元的现金)的30多倍,而2000年排名第二的科技公司Google市值峰值才1700亿美元,排名第三的IBM市值峰值为1600亿美元。——《浪潮之巅(第三版上册)》

  1. “Green”计划

在上世纪90年代,硬件领域出现了单片式计算机系统,因为使用它可以大幅度提升消费类电子产品(如电视机顶盒、面包烤箱、移动电话等)的智能化程度,所以这种价格低廉的系统一出现就立即引起了自动控制领域人员的注意。

所以由Patrick Naughton(帕特里克·诺顿)和James Gosling(詹姆斯·高斯林)带领的Sun公司的工程小组便想要为这类消费设备设计一种小型计算机语言,主要用于像有线电视转换盒这类的消费设备。由于这些消费设备的处理能力和内存都很有限,所以语言必须非常小且能够生成非常紧凑的代码。另外,由于不同的厂商会选择不同的中央处理器(CPU),因此这种语言的关键是不与任何特定的体系结构捆绑在一起。最终这个项目被命名为“Green”(其中文名为“绿色计划”)。

开发目的使得这种语言不仅要代码短小、紧凑而且要与平台无关,这些要求就促使着开发团队设计一个可移植的语言,可以为虚拟机生成中间代码。

为“虚拟机”生成代码并不是一个新思路,诸如Lisp、Smalltalk和Pascal等编程语言多年前就已经采用了这种技术。

  1. “Oak”语言的诞生

在1992年的夏天,这种语言开发成功,Gosling将这种语言命名为“Oak”(这么起名的原因大概是因为他非常喜欢自己办公室外的橡树)。

由于在开发Oak语言时,尚且不存在运行字节码的硬件平台,所以为了在开发时可以对这种语言进行实验研究,他们就在已有的硬件和软件平台基础上,按照自己所指定的规范,用软件建设了一个运行平台,整个系统除了比C++更加简单之外,没有什么大的区别。当Oak语言开发成功后,Green项目发布了它的第一个产品“*7”。研究者们向硬件生产商进行演示了Green操作系统、Oak的程序设计语言、类库和其硬件,以说服他们使用Oak语言生产硬件芯片,但是,硬件生产商并未对此产生极大的热情。因为他们认为,在所有人对Oak语言还一无所知的情况下,就生产硬件产品的风险实在太大了,所以Oak语言也就因为缺乏硬件的支持而无法进入市场,从而被搁置了下来。

  1. Java面世及其在SUN公司的发展

Green项目后来更名为“First Person公司”,First Person公司花费了1993年整整一年的时间也没有找到一个其技术的买家。最终,在1994年First Person公司解散了。

1995年,互联网的蓬勃发展给了Oak机会。业界为了使死板、单调的静态网页能够“灵活”起来,急需一种软件技术来开发一种程序,这种程序可以通过网络传播并且能够跨平台运行。于是,世界各大IT企业为此纷纷投入了大量的人力、物力和财力。这个时候,Sun公司想起了那个被搁置起来很久的Oak,并且重新审视了那个用软件编写的试验平台,由于它是按照嵌入式系统硬件平台体系结构进行编写的,所以非常小,特别适用于网络上的传输系统,而Oak也是一种精简的语言,程序非常小,适合在网络上传输。Sun公司首先推出了可以嵌入网页并且可以随同网页在网络上传输的Applet(Applet是一种将小程序嵌入到网页中进行执行的技术),并将Oak更名为Java(在申请注册商标时,发现Oak已经是一种已有计算机语言的名字,再想了一系列名字之后,最终,使用了提议者在喝一杯Java咖啡时无意提到的Java词语,其寓意是“为世人端上一杯热咖啡”)。

5月23日,Sun公司在Sun world会议上正式发布Java和HotJava浏览器。IBM、Apple、DEC、Adobe、HP、Oracle、Netscape和微软等各大公司都纷纷停止了自己的相关开发项目,竞相购买了Java使用许可证,并为自己的产品开发了相应的Java平台。

1996年1月,Sun公司发布了Java的第一个开发工具包(JDK 1.0),这是Java发展历程中的重要里程碑,标志着Java成为一种独立的开发工具。而后Java得到不断的发展,在2006年11月13日,SUN公司宣布将Java技术作为免费软件对外发布。Sun公司正式发布了有关Java平台标准版的第一批源代码,以及Java迷你版的可执行源代码。从2007年3月起,全世界所有的开发人员均可对Java源代码进行修改。2009年,甲骨文公司宣布收购Sun 。2010年,Java编程语言的共同创始人之一James Gosling(詹姆斯·高斯林)从Oracle公司辞职。

Java在SUN公司发布的版本及其特性:

版本/年份/类与接口数量新版本特性
1.0 / 1996 / 211新语言发布
1.1 / 1997 / 477内部类
1.2 / 1998 / 1524strictfp修饰符
1.3 / 2000 / 1840
1.4 / 2002 / 2723断言
5.0 / 2004 / 3279泛型类、“for each”循环、可变元参数、自动装箱、元数据、枚举、静态导入
6 / 2006 / 3793
  1. SUN公司被收购及Java在Oracle公司的发展

SUN公司从1982年成立到2000年达到顶峰用了将近20年时间,而走下坡路只用了一年。

从1986—2001年,太阳公司的营业额从2.1亿美元增至183亿美元,平均每年增长率高达36%。但当2000年互联网泡沫破碎时,它以服务器和工作站为主的硬件业务便急转直下。2002年财政年度(到2002年6月),它的营业额就比前一年跌掉了三成,并且从前一年盈利9亿美元转为亏损5亿美元。由于太阳公司找不到稳定的利润来源和新的增长点,从此太阳公司便江河日下,一下从硅谷最值钱的公司沦为人均市值最低的公司。——《浪潮之巅(第三版上册)》

在Oracle公司收购SUN公司时,SUN公司不仅有开源语言Java,还拥有开源操作系统Solaris和开源数据库MySQL。

对于Solaris操作系统,Oracle公司不再支持;对于MySQL和Java,主要用来和Google公司打版权官司。因为Google不仅是MySQL最大的用户,而且其旗下Android应用平台用的是Java却没有付过钱。虽然最终Oracle公司赢了官司,但是从经济上考虑却是两败俱伤。

Java语言在Oracle公司也得到了非常好的发展,尤其是Java8。

Java在Oracle公司发布的版本及其特性:

版本/年份/类与接口数量新版本特性
7 / 2011 / 4024基于字符串的switch、钻石操作符、二进制字面量、异常处理改进
8 / 2014 / 4240lambda表达式,包含默认方法的接口,流和日期/时间库
9 / - / -——
10 / - / -——
11 / - / -——
12 / - / -——
Stkcd [股票代码] ShortName [股票简称] Accper [统计截止日期] Typrep [报表类型编码] Indcd [行业代码] Indnme [行业名称] Source [公告来源] F060101B [净利润现金净含量] F060101C [净利润现金净含量TTM] F060201B [营业收入现金含量] F060201C [营业收入现金含量TTM] F060301B [营业收入现金净含量] F060301C [营业收入现金净含量TTM] F060401B [营业利润现金净含量] F060401C [营业利润现金净含量TTM] F060901B [筹资活动债权人现金净流量] F060901C [筹资活动债权人现金净流量TTM] F061001B [筹资活动股东现金净流量] F061001C [筹资活动股东现金净流量TTM] F061201B [折旧摊销] F061201C [折旧摊销TTM] F061301B [公司现金流1] F061302B [公司现金流2] F061301C [公司现金流TTM1] F061302C [公司现金流TTM2] F061401B [股权现金流1] F061402B [股权现金流2] F061401C [股权现金流TTM1] F061402C [股权现金流TTM2] F061501B [公司自由现金流(原有)] F061601B [股权自由现金流(原有)] F061701B [全部现金回收率] F061801B [营运指数] F061901B [资本支出与折旧摊销比] F062001B [现金适合比率] F062101B [现金再投资比率] F062201B [现金满足投资比率] F062301B [股权自由现金流] F062401B [企业自由现金流] Indcd1 [行业代码1] Indnme1 [行业名称1] 季度数据,所有沪深北上市公司的 分别包含excel、dta数据文件格式及其说明,便于不同软件工具对数据的分析应用 数据来源:基于上市公司年报及公告数据整理,或相关证券交易所、各部委、省、市数据 数据范围:基于沪深北证上市公司 A股(主板、中小企业板、创业板、科创板等)数据整理计算
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值