Java学习(一)
第1章 一种现代语言
Java是一种现代语言,其特性为可移植性、速度和安全性。
1.1 进入Java世界
1.1.1 Java的起源
Java的最初思想是在1990年有Sun Microsystems公司的创办人和首席研究院Bill Joy提出的。
James Gosling后来被称为Java之父。
Oak一种ITV机顶盒的编程语言是Java的雏形。
Jos 和 Gosing重新调整的实际了Oak即后来的Java。
1.1.2 成长
Java发展期间,遭遇了Microsoft 开发的C#(C-sharp)的狙击。但仍旧实现了其多平台的战略部署,在Android 的操做系统的基础上做出了重大贡献。
1.2 虚拟机
Java既是编译语言也是解释语言,其在执行时会在一个虚拟机中运行,可实现多平台运行。
Java代码的基本单位是类,由Java编译器编译,其主要Java编译器、网络、类库和GUI库均由Java编译。Java实现了即时编译(Just-In-Time,JIT)或是动态编译。已编译的Java代码由于安全性和虚拟机设计会导致运行时性能下降,只是性能下降的唯一内在因素。Java的编译技术(称为HotSpot)运用了自适应编译(adaptive comepilation)的技巧。
Java VM(虚拟机)可以以两种模式运行:客户端和服务器,这分别决定了重点究竟是快速的启动时间及节省内存还是最佳性能。Java 5.0 解决了应用程序关闭时会丢弃一部分好的探查信息的问题,实现思路是:优化程序中需要快速运行的部分,而不必担心其它部分。
1.3 Java与其他语言比较
Java在学习本书中作者阐述,其可移植性、速度和安全性达到了一个较为均衡发展的状态。开发速度虽然不如Python和Ruby等脚本语言,但其安全性俱佳。Java有强大的正则表达式(Regular Expression API)
1.4 设计安全
Java的目标是保持语言的简单性并提供展示有用性的工具,同时令用户可以在需要的时基于该语言构架更为复杂的功能。
1.4.1 语法简单
Java不需要沿用其它编程语言的某些源编译特性和关键操作符无法重新定义。其类的继承为单一的类继承层次体系。
1.4.2 类型安全和方法绑定
Java是一种静态类型(提前定义变量类型)、延迟绑定(late-binding)的语言
1.4.3 递增开发
Java的源代码类似于树状开发,只要保证“头部”的正确和稳定,对“根部”可以进行多次开发和修改。但是“根部”不会对“头部”造成过多的影响。
1.4.4 动态内存管理
Java内存管理按对象、类、变量来划分,可以划分为对象:动态内存分配和赋值;类:指针(只能指向类),指向方法是可以采用接口和适配器类;变量:引用(reference),是对象的一个强类型句柄,用于访问所有对象。特殊,“反射(reflection)”API。(注:此为编者自我认知,如有错误后期会更改)
1.4.5 错误处理
对编译错误会返回错误类型或指出错误位置。
1.4.6 线程
多任务、多数据同步进程及协调。
1.4.7 可伸缩性
关于包、类和作用域的初识。
1.5 实现安全
封装(encapsulation)是一种将数据和操做隐藏于类中的概念,避免违规访问。Java安全模型有三个保护层:安全性管理器、类加载器和校验器。
1.5.1 校验器
1.5.2 类加载器
1.5.3 安全管理器
1.6 应用和用户级安全性
主要应用有数字签名以及证书等技术。
1.7 Java路线图
1.7.1 过去:Java 1.1 到Java 1.6
Java 1.0为Java开发提供了基本框架,即语言本身以及允许编写applet和简单应用的包。尽管1.0已经正式废弃,但仍存在大量applet遵循其API。
Java 1.1取代了1.0,主要在以下方面有所改进:AWT包(Java最初的GUI功能)、一个新的事件模式、诸如反射和内部类等新的语言功能,以及许多其他关键特性。Java 1.1是Netscape Navigator和Microsoft Internet Explorer浏览器的大多数版本多年来都支持的版本。出于一些政治上的原因,浏览器领域可能还会在这种状态下停顿较长一段时间;Java 1.1这个版本仍然会被认为是applet的一种基础,尽管它会随着Microsoft在其平台中放弃对Java的支持而消失。
Java 1.2(即Sun所称的“Java 2”)是一个于1998年12月发布的主要版本。它提供了许多改进,并增加了大量内容,主要是将API集捆绑至标准发布版来实现的。所增加内容中,声名最为显赫的当属将Swing GUI包作为核心API,并且加入了全新的成熟2D绘制API。Swing是Java的高级用户界面工具包,其功能远远超出了原来的AWT(Swing、AWT和其他一些包有时被称为JFC,即Java基类(JavaFoundationClass))。Java 1.2还为Java增加了一个适当的集合(Collection)API。
Java 1.3于2000年初发布,其中仅增加了少许特性,但是将重点在性能上。利用1.3版本,在许多平台上,Java的速度都得到了显著提高,而且也修补了Swing的许多bug。在这一阶段,诸如Servlet和Enterprise JavaBeans(EJB)等Java企业API也日渐成熟。
Java 1.4于2002年发布,加入了一个重要的新的API集,以及很多人们期待已久的特性。这包括:语言断言、正则表达式、首选项和日志API、一个面向高容量应用的新的I/O系统、对XML的标准支持、AWT和Swing中的基本改进,以及针对Web应用的相当成熟的Java Servlets API。
Java 5发布于2004年。这是一次重要的发布,引入了很多期待已久的语言语法扩展,包括范型、类型安全、枚举、增强的for循环、可变的参数列表、静态导入、基本类型的自动装箱和拆箱,以及关于类的高级元数据。一个新的并发API提供了强大的线程功能,还有类似于C中所添加的那些用于格式化打印和解析的API。RMI也进行了彻底的修改,以不再需要编辑stub和skeleton。标准XML API中也有重要的增加。
Java 6于2006年发布,是一个相对较小的发布,没有给Java语言添加什么新的语法特性,但是,绑定了一些新的API,例如用于XML和Web Service的那些API。
1.7.2 如今:Java 7
本书包含了Java 7这一最新版本中的所有最新和最好的改进。这个发布版本添加了少许的语言功能的增强,例如,改进了异常处理和资源管理。它还包含了一些重要的API更新,例如,一个完整的新的文件系统API,还添加了很多其他的API。本书的这一版本是Java 5之后的第一次改版,因此,彻底地进行了修改,包含了Java 6和Java 7版本中进行的所有修改。以下对当前核心Java API的最为重要的特性提供一个概述:
JDBC(Java Database Connectivity,Java数据库互连)为了与数据库交互的一个通用功能(最早于Java 1.1中引入)。
RMI(Remote Method Invocation,远程方法调用)。Java的分布式对象系统。RMI允许调用某个服务器中的对象上的方法,而该服务器可能运行于网络上的另一位置(最早于Java 1.1中引入)。
Java Security(Java安全性)用于对访问系统资源加以控制的功能,并结合有一个统一的加密接口。Java安全性是签名类的基础,对此先前曾讨论过。
JFC(Java Foundation Classes,Java基类)包含大量新特性的完备集(catch-all),其中包括Swing用户界面组件;“可插拔感观”(pluggable look-and-feel),这表示用户界面能够自行调整以适应所用平台的观感;拖曳功能;以及可访问性(这意味着集成特定软件和硬件的能力以为残障人士服务)。
Java 2D JFC的一部分,支持高质量图形、字体管理和打印。
Internationalization(国际化)编写程序从而使之能够与用户希望使用的语言相适应的能力,程序可以自动地以适当的语言显示文本(最早于Java 1.1中引入)
JNDI(Java Naming and Directory Interface,Java命名与目录接口)查找资源的一个通用服务。JNDI统一了对诸如LDAP、Novell的NDS以及其他目录服务的访问。
以下“标准扩展”API并非核心Java发布版本中的一部分,可以单独下载。
JavaMail 编写E-mail软件的一个统一API。
Java 3D 此功能可以用于开发带有3D图形的应用。
Java Media 另一个完备集,其中包括Java 2D、Java 3D和Java媒体框架(Java MediaFramework,这是一种用于调整不同类型媒体显示的框架)、Java Speech(用于语音识别和合成)、Java Sound(高质量音频)、Java TV(用于交互式电视和同类应用)以及其他。
Java Servlets 允许用Java编写服务器端Web应用的功能。
Java Cryptography 密码算法的实际实现(出于法律的原因,这个包与Java Security是分离的)。
JavaHelp 编写帮助系统并将其结合到Java程序中的功能。
Enterprise JavaBeans 用于构建分布式服务器端应用的体系结构。
Jini 一个非常有趣的完备集,其设计目标是支持大范围分布式计算,包括查找各种设备并与之交互,这些设备从软件工具到硬件,甚至家用电器。
XML/XSL 一个工具,用来创建和操作XML文档、验证文档、将其与Java对象相互映射,并使用样式表传输XML。
Web services 创建并部署基于Java的SOAP Web Services的工具。
1.7.3 将来
Java可能会朝着轻量级、简单的商用框架发展,并且Java平台继承了动态语言以支持web叶敏脚本编程和扩展。
1.7.4 可用性
第2章 第一个应用
2.1 Java工具和环境
Eclipse 必须安装Java Runtime Environment (JRE) 。本次学习以Java 10 为主。
Oracle 可以下载 Java 7.
JRE 是Java程序运行环境,JDK是Java程序的开发环境,JDK 包括JRE.
javac 和java 测试是否配置好环境变量
java -version 查看Java版本
编译程序的命令是javac
运行编程的命令是java
编写代码时注意字母的大小写,java程序对大小写敏感