1、什么是Java?
Java是一个完整的平台,有一个庞大的库,其中包含了很多可重用的代码,以及一个提供诸如安全性、跨操作系统的可移植性以及自动垃圾收集等服务的执行环境。
2、Java白皮书的关键术语
1)、简单性
相对于C++来说,Java去除了C++中许多很少使用、难以理解、容易混淆的特性,比如指针运算、结构、联合、虚基类等,但是并没有清除C++中所有不适当的特性,比如switch。
简单的另一个点就是“小”,Java的目标之一是支持开发能够在小型机器上面独立运行的软件。
2)、面向对象
面向对象是一种程序设计技术,它将重点放在数据(即对象)和对象的接口上。在本质上来说,Java的面向对象的能力与C++是一样的,其不同点在于多重继承,在Java中取而代之的是更简单的接口概念。
3)、分布式
Java有一个丰富的例程库,用于处理像HTTP和FTP之类的TCP/IP协议。
Java应用程序能够通过URL打开和访问网络上的对象,其便捷程度就好像访问本地文件一样。
4)、健壮性
Java的设计目标之一在于使得Java编写的程序具有多方面的可靠性。Java非常强调进行早起的问题检测、后期动态的检测,以及消除容易出错的情况......
Java与C/C++最大的不同在于Java采用的指针模型可以消除重写内存和损坏数据的可能性。
5)、安全性
Java要适用于网络/分布式环境。为了实现这个目标,安全性颇受重视。使用Java可以构建防病毒、防篡改的系统。
6)、体系结构中立
编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码,只要有Java运行时系统,这些编译后的代码可以在许多处理器上运行。
Java编译器通过生成与特定的计算机体系结构无关的字节码指令来实现这一特性。精心设计的字节码不仅可以很容易的在任何机器上解释执行,而且还可以动态的转换成本地机器代码。
7)、可移植性
与C和C++不同,Java规范中没有“依赖具体实现”的地方。基本数据类型的大小以及有关运算的行为都有明确的说明。
作为系统组成部分的类库,定义了可移植的接口。
除了与用户界面有关的部分外,所有其他Java库确实可以很好的支持平台独立性,你可以处理文件、正则表达式、XML、日期和时间、数据库、网络连接、线程等,而不用操心底层操作系统。
8)、解释型
Java解释器可以在任何移植了解释器的机器上直接执行Java字节码。由于连接是一个增量式且轻量级的过程,所以,开发过程也变得更加快捷,更具有探索性。
你可以做一些常识,然后就能立即看到结果,在Java发展的前20年里,开发环境并没有把重点放到这种体验上。直到Java9才提供了jshell工具支持快捷而且具有探索性的编程。
JShell是Java 9新增的一个交互式的编程环境工具。它允许你无需使用类或者方法包装来执行 Java 语句。它与 Python 的解释器类似,可以直接输入表达式并查看其执行结果。
如以下为一个简单的jshell脚本使用:
| 欢迎使用 JShell -- 版本 11.0.6
| 要大致了解该版本, 请键入: /help intro
jshell>
jshell> String helloworld = "hello world"; //输入这一行之后回车可以查看执行结果。
helloworld ==> "hello world"
jshell>
9)、高性能
尽管对解释后的字节码性能已经比较满意,但在某些场合下还需要更高的性能。字节码可以在运行时动态转换成对应运行这个应用的特定CPU的机器码。
10)、多线程
多线程可以带来更快的交互响应和实时行为。
11)、动态性
从很多方面来看,Java与C或C++相比更加具有动态性。它能够适应不断发展的环境。库中可以自由地添加新方法和实例变量,而对客户端却没有任何影响。在Java中找出运行时类型信息十分简单。
3、Java发展简史
Java之父:James Gosling。
1991年:起源,开始叫Oak,后改名为Java。
1996年:第一个Java版本,Java 1.1。
1998年:Java 1.2 又称Java 2,分为标准版J2SE,企业版J2EE,微型版J2ME。
2014年:Java 8 发布,包含了一种函数式的编程方式,可以很容易的表述并发执行的计算。
2017年:Java 9 发布,提供了一些吸引人的特性。
从2018年开始,每6个月Java都会发布一个新的版本,用来支持更快的引入新特性。某些版本如Java11设计为长期支持的版本。
4、关于Java的常见误解
1)、Java是HTML的扩展。
Java是一种程序设计语言,HTML是一种描述网页结构的方式。除了用于在网页上放置Java applet的HTML扩展之外,两者没有任何共同之处。
2)、使用XML,所以不需要Java。
Java是一种程序设计语言,XML是一种描述数据的方式。可以使用任何一种程序设计语言处理XML数据,而JavaAPI对XML处理提供了很好的值,
此外,许多重要的XML工具都采用Java编写。
3)、Java是一种非常容易学习的程序设计语言。
像Java这种功能强大的语言都不太容易学习,Java基础语法很少,但是Java类库中包含数千个类和接口以及数万个函数,如果想要利用Java解决实际问题,还是需要了解不少内容的。
4)、Java将成为适用于所有平台的通用性编程语言。
从理论上讲,这个完全有可能,但在实际中,某些领域其他语言有更出色的表现。
如OC和Swift在iOS设备上有着无可取代的地位,浏览器中的处理几乎完全由JavaScript掌控,Windows程序通常用C++或C#编写。Java在服务器端编程和跨平台客户端领域则很有优势。
5)、Java只不过是另外一种程序设计语言。
Java是一种很好的程序设计语言,而一种程序设计语言的成功更多地取决于其支撑系统的能力,而不是语法的
6)、Java是专用的,应该避免使用。
最初创建时,Sun公司为发布者和最终用户提供了免费许可,虚拟机和类库的源代码可以免费获得,但仅限于查看,而不能修改和发布。
在2007年发生了戏剧性的变化,Oracle公司致力于保持Java开源,但有一点美中不足--专利,任何人都可以得到专利许可,允许其使用和修改Java,不过仅限于桌面和服务器平台,
如果想在嵌入式系统中使用Java,就需要另外一个不同的许可,很可能需要付费。
7)、Java是解释性的,因此对于关键的应用程序速度太慢了。
早期的Java是解释型的,现在Java虚拟机使用了即使编译器,因此采用Java编写的“热点”代码运行速度与C++相差无几,有些情况下甚至更快。
8)、所有的Java程序都是在网页中运行的。
所有的Java applet都在Web浏览器中运行。但大多数Java程序是运行在Web浏览器之外的独立应用程序。实际上,很多Java程序都在Web服务器上运行并生成用于网页的代码。
9)、Java程序存在重大安全风险。
对于早期的Java,有过关于Java安全系统失效的报告,曾经因此过公众关注。
客观的来说,针对Windows可执行文件存在更大量的病毒攻击,并造成了巨大的损害,不过奇怪的是却很少有人批评被攻击平台的弱性。
尽管距离Java诞生已经20年之久,与其他常用的执行平台相比,Java还是安全的多。
10)、JavaScript是Java的简易版。
JavaScript是一种可以在网页中使用的脚本语言,除了和Java名字有些相像,并无任何关系。