什么是Java?
可以把Java作为看起来很像C和C ++通用的面向对象的语言,但它更容易使用,并可以创建更健壮的程序。
Java是一种简单的,面向对象的,网络的悟性,理解,可靠,安全,结构中立的,可移植,高性能,多线程的,动态的计算机语言。
让我们考虑各自独立这些定义的:
• Java是一种简单的语言。Java的C和C ++,减去一些潜在的混乱后的功能最初模型。指针,实现多继承和操作符重载一些C / C ++功能,是Java的一部分。一个功能用C未被授权/ C ++,但重要的去渣,是一个垃圾收集设施,自动回收对象和数组。
• Java是一种面向对象的语言。Java的面向对象的聚焦让开发者对Java的调整来解决问题,而不是迫使我们操纵问题,满足语言的约束工作。这是和C的结构化语言不同。例如,而Java可以让你专注于储蓄账户对象,C需要你对储蓄账户分别认为状态(这种平衡)和行为(如存款和取款)。
• Java是一种网络语言的悟性。Java的广泛的网络库,可以轻松应付传输控制协议/ Internet协议(TCP / IP)网络协议,如HTTP(超文本传输协议)和FTP(文件传输协议),并简化了建立网络连接的任务。此外,Java程序可在一个TCP / IP网络访问的对象,通过统一资源定位器(URL),用相同的方便,你将有从本地文件系统访问它们。
• Java是一种解释型语言。在运行时,一个Java程序间接执行经由虚拟机的基础平台(如Windows或Linux)(这是一个假设的平台的软件表示)和相关的执行环境上。虚拟机转换Java程序的字节码通过解释(指令和相关的数据),以特定平台的说明。解释是搞清楚一个字节码指令的意思,然后选择相当于“固定的”特定于平台的指令来执行的行为。虚拟机然后执行这些特定平台的说明。
解读使得它更容易出现故障调试Java程序,因为更多的编译时间信息是在运行时可用。解读也使得它可以延迟到运行时,这将加快开发Java程序的部件之间的链接步骤。
• Java是一个健壮的语言。因为它们在消费者和任务关键型应用,从蓝光播放器到车载导航或空气控制系统,Java程序必须是可靠的。语言功能,帮助使Java健壮包括申报,重复的类型在编译时和运行时检查(防止版本不匹配的问题),具有自动边界检查真正的数组和指针的遗漏。(我们将讨论所有的在后面的系列详细介绍这些功能。)
Java的鲁棒性的另一个方面是,循环必须由布尔表达式,而不是整数表达式进行控制,其中0为假,非零值是true。例如,Java不允许C风格的循环,如while (x) x++;因为循环可能不会显示在预期的位置。相反,你必须明确提供一个布尔表达式,如while (x != 10) x++;(这意味着循环将运行,直到x等于10)。
• Java是一个安全的语言。Java程序在网络/分布式环境中使用。因为Java程序可以移植到和执行在网络上的各种平台,它以保护免受恶意代码的这些平台可能会传播病毒,盗取信用卡信息,或执行其他恶意行为是很重要的。支持鲁棒性(如指针的遗漏)Java语言特性与安全功能,如Java沙箱安全模型和公钥加密工作。这些功能共同阻止病毒和其他危险的代码从不知情的平台上肆虐。
在理论上,Java是安全的。在实践中,已经发现并利用各种安全漏洞。其结果是,Sun微系统则和Oracle现在继续发布安全更新。
• Java是一种体系结构中立的语言。网络连接基于各种微处理器和操作系统不同的架构平台。你不能指望Java来生成特定平台的说明,并有“理解”的是网络的一部分各类平台上这些指令。相反,Java的产生,很容易为每个平台来解释(通过其实施的JVM)与平台无关的字节码指令。
• Java是一种可移植的语言。体系结构中立利于便携。但是,还有更多的Java的可移植性不是独立于平台的字节码指令。考虑到整数类型大小必须不会改变。例如,32位整数类型必须始终进行签名和占用32位,而不管其中的32位整数进行处理(例如,用16位寄存器的平台,与32位寄存器的平台或平台的64位寄存器)。Java的库也有助于便携性。必要时,它们提供了在可能的最轻便的方式特定于平台的功能,连接Java代码的类型。
• Java是一个高性能的语言。解读产生的性能水平,通常是绰绰有余。对于非常高性能的应用场景Java使用即时编译,从而分析解释的字节码指令序列,并编译经常解释指令序列特定平台的说明。后续尝试解读这些字节代码指令序列产生的等效特定平台的指令,从而提高性能的执行。
• Java是一个多线程的语言。为了提高必须完成一次几项任务程序的性能,Java支持的概念线程执行。例如,管理在等待网络连接输入一个图形用户界面(GUI)程序使用另一个线程,而不是执行使用默认的GUI线程对于这两项任务的等待。这使GUI作出响应。Java的同步原语允许的线程安全地沟通彼此之间数据而不造成数据损坏。(见中的Java线程编程在Java 101系列其他地方讨论。)
• Java是一种动态语言。因为程序代码和代码库之间的互连在运行时动态地发生,这是没有必要明确链接它们。其结果是,当一个程序或它的库演变中的一个(例如,对于一个错误修复或性能改进),显影剂只需要分发更新的程序或库。虽然在以下代码动态行为的结果,当一个版本发生改变时分发,这种分布策略也可导致版本冲突。例如,开发人员从库中的类类型,或将其重命名。当一个公司分配更新的库,依赖于类的类型现有的计划将会失败。大大降低这一问题,Java支持的接口类型,这就好比双方之间的合同。(参见接口,类型和其它面向对象的语言功能在Java 101系列其他地方讨论。)