1.1 Java的基础特性
Java“ 白皮书” 的关键术语----主要语言特性
1 ) 简单性
-
Java 语法是 C++ 语法的一个 “纯净” 版本。
这里没有头文件、指针运算(甚至指 针语法、) 结构、联合、操作符重载、虚基类等。
-
简单的另一个方面是小。
Java 的目标之一是支持开发能够在小型机器上独立运行的软件。基本的解释器和基本的标准类库和对线程的支持,都加上也在KB级别内。现在有
一个独立的具有较小类库的Java微型版(JavaMicroEdition), 这个版本适用于嵌人式设备。
2 ) 面向对象
简单地讲,面向对象设计是一种程序设计技术。 它将重点放在数据 (即对象) 和对象的接口上。
开发 Java 时面向对象技术已经相当成熟。 Java 的面向对象特性与 C++ 旗鼓相当。 Java
与 C++ 的主要不同点在于多重继承, 在 Java 中, 取而代之的是更简单的接口概念。 与 C++ 相比, Java 提供了更丰富的运行时自省功能。
总之,Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。
3 ) 分布式
Java 有一个丰富的例程库, 用于处理像 HTTP 和 FIT 之类的 TCP/IP 协议。Java 应用 程序能够通过 URL 打开和访问网络上的对象, 其便捷程度就好像访问本地文件一样。
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
4 ) 健壮性
Java 的设计目标之一在于使得 Java 编写的程序具有多方面的可靠性。 Java 投入 了大量的精力进行早期的问题检测、后期动态的(运行时)检测, 并消除了容易出 错的情况......Java 和 C++ 最大的不同在于 Java 采用的指针模型可以消除重写内存
和损坏数据的可能性。
Java 编译器能够检测许多在其他语言中仅在运行时才能够检测出来的问题。
总之,Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。
5 ) 安全性
Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。
6 ) 体系结构中立
编译器生成一个体系结构中立的目标文件格式, 这是一种编译过的代码, 只要有 Java 运行时系统, 这些编译后的代码可以在许多处理器上运行。Java 编译器通过生成 与特定的计算机体系结构无关的字节码指令来实现这一特性。精心设计的字节码不仅 可以很容易地在任何机器上解释执行,而且还可以动态地翻译成本地机器代码
7 ) 可移植性
与 C 和 C++ 不同, Java 规范中没有“ 依赖具体实现” 的地方基本教据类型的 大小以及有关运算都做了明确的说明。
例如, Java 中的 int 永远为 32 位的整数, 而在 C/C++ 中, int 可能是 16 位整数、 32 位整数, 也可能是编译器提供商指定的其他大小。 唯一的限制只是 int 类型的大小不能低于 short int,并且不能高于 long int 在 Java 中 数据类型具有固定的大小 这消除了代码移植时令人头痛的主要问题。 二进制数据以固定的格式进行存储和传输, 消除了字节顺序的困扰。 字符串是用标准的 Unicode 格式存储的。
除了与用户界面有关的部分外,所有其他 Java 库都能很好地支持平台独立性。 你可以处理文件、正则表达式、XML、日期和时间、数据库、网络连接、线程等, 而不用操心 底层操作系统。 不仅程序是可移植的, Java API 往往也比原生 API 质量更高。
8 ) 解释型
Java 解释器可以在任何移植了解释器的机器上执行 Java 字节码。由于链接是 一 个增量式且轻量级的过程, 所以,开发过程也变得更加快捷,更加具有探索性。
9 ) 高性能
尽管对解释后的字节码性能已经比较满意,但在有些场合下还需要更加高效的 性能。字节码可以(在运行时刻)动态地翻译成对应运行这个应用的特定 CPU 的机器码。
在某些情况下,甚至超越了传统编译器,原因是它们含有更多的可用信息。例如,即时编译器可以监控经常执行哪 些代码并优化这些代码以提高速度。更为复杂的优化是消除函数调用(即“内联”)。即时编译器知道哪些类已经加载。基于当前加载的类集,如果特定的函数不会被覆盖,就可以使用 内联。必要时,还可以撤销优化。
10 ) 多线程
多线程可以带来更好的交互响应和实时行为。
Java 在当时很超前。 它是第一个支持并发程序设计的主流语言。因为摩尔定律行将完结。我们不再追求更快的处理器,而是着眼于获得更多的处理器,而且要让它们一直保持工作。所以Java本身非常关注并发性。而大多数编程语言对于这个问题并没有显示出足够的重视。
11 ) 动态性
从各种角度看, Java 与 C 或 C++ 相比更加具有动态性。 它能够适应不断发展 的环境库中可以自由地添加新方法和实例变量, 而对客户端却没有任何影响。在 Java 中找出运行时类型信息十分简单。
例如:从Internet下载代码,然后在浏览器上运行;如果使用C或C++, 这确实难度很大
Java语言的特点
-
特点一:面向对象
两个基本概念:类、对象
三大特性:封装、继承、多态 -
特点二:健壮性
吸收了C/C++语言的优点,但去掉了其影响程序健壮性的部分(如指针、内存的申请与释放等),提供了一个相对安全的内存管理和访问机制。
-
特点三:跨平台性
跨平台性:通过Java语言编写的应用程序在不同的系统平台上都可以运行。“Write once, Run Anywhere”
原理:只要在需要运行 java 应用程序的操作系统上,先安装一个Java虚拟机 (JVM Java Virtual Machine) 即可。由JVM来负责Java程序在该系统中的运行。
1.2 JAVA程序运行机制和运行过程
Java两种核心机制
-
Java虚拟机 (Java Virtual Machine)
因为有了JVM,同一个Java 程序在三个不同的操作系统中都可以执行。这样就实现了Java 程序的跨平台性。
垃圾收集机制 (Garbage Collection)
核心机制:JVM(Java虚拟机或Java Virtual Machine)
JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器。
- 对于不同的平台,有不同的虚拟机
- 只有某平台提供了对应的java虚拟机,java程序才可在此平台运行
- Java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”
核心机制:垃圾回收(Garbage Collection)
-
不再使用的内存空间应回收—— 垃圾回收。
在C/C++等语言中,由程序员负责回收无用内存。
Java 语言消除了程序员回收无用内存空间的责任:它提供一种系统级线程跟踪存储空间的分配情况。并在JVM空闲时,检查并释放那些可被释放的存储空间。
垃圾回收在Java程序运行过程中自动进行,程序员无法精确控制和干预。
Java程序还会出现内存泄漏和内存溢出问题吗?Yes!
1.3 JAVA运行环境搭建
- JDK、JRE
-
JDK(Java Development Kit) Java开发工具包
JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。
其中的开发工具:
- 编译工具(javac.exe)
- 打包工具(jar.exe)等
JRE(Java Runtime Environment) Java运行环境
包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等。如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。
JDK = JRE + 开发工具集(例如Javac编译工具等)
JRE = JVM + Java SE标准类库
所以:
JDK = JVM + Java SE标准类库 + 开发工具集
1.4运行:
- 编译
//生成fileName.class文件
javac fileName.java
- 运行
//在终端输出代码结果****
java fileName
1.5注释(comment)
- 单行注释
// 在此处添加注释
- 多行注释
/* 在此处添加注释 */
- 文档注释
/**
@author 指定java程序的作者
@version 指定源程序的版本
*/
注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档;
执行命令:
javadoc -d mydoc -author -version fileName.java
程序小结--hello world
1.6 程序入口 main()
public static void main(String[] args) {
/* 逻辑代码 */
}
- 一个源文件中最多只能有一个public类。其它类的个数不限,如果源文件包含一个public类,则文件名必须按该类名命名。
1.7 Java API的文档
API (Application Programming Interface,应用程序编程接口)
是 Java 提供的基本编程接口。
Java语言提供了大量的基础类,因此 Oracle 也为这些基础类提供了相应的API文档,用于告诉开发者如何使用这些类,以及这些类里包含的方法。
下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
1.8 Java开发工具
EditPlus:
如果正确配置Java的编译器“Javac”以及解释器“Java”后,可直接使用EditPlus编译执行Java程序
IntelliJ IDEA:
在代码自动提示、代码分析等方面的具有很好的功能。
IntelliJ IDEA被认为是目前Java开发效率最快的IDE工具。它整合了开发过程中实用的众多功能,智能提示错误,强大的调试工具,Ant,JavaEE支持,CVS整合,最大程度的加快开发的速度。简单而又功能强大。与其他的一些繁冗而复杂的IDE工具有鲜明的对比。
Eclipse:
一个开放源代码的、基于Java的可扩展开发平台。
Eclipse应该是大多数Java程序员使用的第一个IDE。众所周知的、最流行、也最受欢迎的Java开发工具。优点很多:免费、更新快、代码智能化、ANT构建等,拥有众多插件,完全免费、有中文版、上手比较快。缺点也非常明显,安装插件麻烦、插件对版本要求比较严格。
NetBeans:
开放源码的Java集成开发环境,适用于各种客户机和Web应用。
MyEclipse也是一款功能强大的J2EE集成开发环境,由Genuitec公司发布,提供免费版和收费版。但免费版,只能满足基本开发需求
MyEclipse:
由Genuitec公司开发的一款商业化软件,是应用比较广泛的Java应用程序集成开发环境。
MyEclipse也是一款功能强大的J2EE集成开发环境,由Genuitec公司发布,提供免费版和收费版。但免费版,只能满足基本开发需求