1.1 Java概述程序员
印度尼西亚有一个盛产咖啡的岛屿叫作Java,其中文译名为爪哇,SUN公司的开发人员为他们开发的一种新语言起名为Java,其寓意是“为世人端上一杯热咖啡”。web
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中找出运行时类型信息十分简单。 |
20世纪八九十年代是科技工业史上群星闪耀的时代。在之前AT&T和IBM的时代须要半个世纪才能发生的事,可能在这里10年里一会儿就发生并结束了。在这个大时代里,不少公司本来有可能成为信息工业的王者,却最终与机会失之交臂。这些公司,不论当初多么辉煌,当它开始走下坡路时,被人遗忘的速度比它衰落的速度更快。——《浪潮之巅(第三版·上册)》
而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亿美圆。——《浪潮之巅(第三版上册)》
在上世纪90年代,硬件领域出现了单片式计算机系统,由于使用它能够大幅度提高消费类电子产品(如电视机顶盒、面包烤箱、移动电话等)的智能化程度,因此这种价格低廉的系统一出现就当即引发了自动控制领域人员的注意。
因此由Patrick Naughton(帕特里克·诺顿)和James Gosling(詹姆斯·高斯林)带领的Sun公司的工程小组便想要为这类消费设备设计一种小型计算机语言,主要用于像有线电视转换盒这类的消费设备。因为这些消费设备的处理能力和内存都颇有限,因此语言必须很是小且可以生成很是紧凑的代码。另外,因为不一样的厂商会选择不一样的中央处理器(CPU),所以这种语言的关键是不与任何特定的体系结构捆绑在一块儿。最终这个项目被命名为“Green”(其中文名为“绿色计划”)。
开发目的使得这种语言不只要代码短小、紧凑并且要与平台无关,这些要求就促使着开发团队设计一个可移植的语言,能够为虚拟机生成中间代码。
为“虚拟机”生成代码并非一个新思路,诸如Lisp、Smalltalk和Pascal等编程语言多年前就已经采用了这种技术。
在1992年的夏天,这种语言开发成功,Gosling将这种语言命名为“Oak”(这么起名的缘由大概是由于他很是喜欢本身办公室外的橡树)。
因为在开发Oak语言时,尚且不存在运行字节码的硬件平台,因此为了在开发时能够对这种语言进行实验研究,他们就在已有的硬件和软件平台基础上,按照本身所指定的规范,用软件建设了一个运行平台,整个系统除了比C++更加简单以外,没有什么大的区别。当Oak语言开发成功后,Green项目发布了它的第一个产品“*7”。研究者们向硬件生产商进行演示了Green操做系统、Oak的程序设计语言、类库和其硬件,以说服他们使用Oak语言生产硬件芯片,可是,硬件生产商并未对此产生极大的热情。由于他们认为,在全部人对Oak语言还一无所知的状况下,就生产硬件产品的风险实在太大了,因此Oak语言也就由于缺少硬件的支持而没法进入市场,从而被搁置了下来。
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 / 1524 | strictfp修饰符 |
1.3 / 2000 / 1840 | 无 |
1.4 / 2002 / 2723 | 断言 |
5.0 / 2004 / 3279 | 泛型类、“for each”循环、可变元参数、自动装箱、元数据、枚举、静态导入 |
6 / 2006 / 3793 | 无 |
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 / 4240 | lambda表达式,包含默认方法的接口,流和日期/时间库 |
9 / - / - | —— |
10 / - / - | —— |
11 / - / - | —— |
12 / - / - | —— |