JAVA的关键特性
Java团队对设计Java时的关键考虑因素进行了总结,关键特性包含以下列表:
- 简单性
- 安全性
- 可移植性
- 面向对象
- 健壮性
- 多线程
- 体系结构中立
- 解释执行
- 高性能
- 分布式
动态性
简单性
Java的设计目标之一是让专业程序员能够高效的学习和使用,如果了解了面向对象编程的基本概念,学习Java将会更容易,如果你是一位有经验的C++程序员,那么只需要非常少的努力就可以迁移到Java。因为Java继承了C/C++的语法以及许多面向对象特性,大部分程序员学习Java都不困难。
安全性
每次下载一个“正常的”程序时,都具有一定的风险,因为下载的代码可能包含病毒、木马或其他有害代码。而Java通过将应用程序限制在Java执行环境中,并且不允许访问计算机的其他部分来实现这种保护。下载程序并能确保不会造成危害,并且不会破坏安全性的能力,被认为是Java最重要的一个创新。
可移植性
不能移植是因为编译器变异成的可执行代码,针对不同CPU需要不同的指令集。而Java编译器输出的不是可执行代码,是字节码,字节码在Java虚拟机JVM中被解释执行,JVM提供了从字节码到各种平台的翻译。因此Java程序只需要一次编译,生成字节码,可以在各个系统中的JVM上运行。
面向对象
Java是从C/C++衍生而来,继承了C++面向对象的特性。Java中的对象模型既简单又易于扩展,而基本类型(如整型)仍然是高性能的非对象类型。
健壮性
为了活动可靠性,Java在一些关键领域进行了限制,从而使程序员在程序开发中及早的发现错误。因为Java是强类型化的语言,它在编译时检查代码。当然不管怎样,在运行时也检查代码,使编写好的程序在不同的条件下可以预见的方式运行是Java的关键特性之一。
多线程
Java支持多线程编程,允许编写同步执行许多工作的程序,能够创建运行平稳的交互式系统。Java提供了易用的多线程方法,使得只需要考虑程序的特定行为,而不需要考虑多任务子系统。
体系结构中立
对于开发人员来说,担心因为操作系统升级、处理器升级以及核心系统资源的变化,都可能导致程序出现故障。Java设计人员对Java语言做出了一些艰难的决策,Java虚拟机就是试图解决这个问题的。其目标是“编写一次,无论何时、何地都能永远运行”。
解释执行和高性能
Java通过编译生成字节码,在JVM上运行,JIT及时编译器将那些能从编译中受益的代码转换为高性能的本机代码,其他代码继续保持解释执行。
分布式
Java是针对Internet的分布式环境而设计的,能处理TCP/IP协议,使用URL访问资源与访问文件没有多大区别。Java还支持远程方法调用RMI,允许程序通过网络调用方法。
动态性
Java程序本身带有大量的运行时类型信息,这些信息可以用在运行时验证和解决对象访问问题。这使得以一种安全、方便额方式动态的链接代码成为可能。
JAVA的关键特性的更多相关文章
- JAVA语言对比C++语言的几个优点和自身的关键特性
之所以写这篇博客不是为了比较JAVA语言和C++语言到底孰优孰劣,而是从语言本身出发进行对比总结程序编码设计上的差别.因水平有限,某些内容可能太过片面,欢迎指正和讨论. JAVA语言在设计上很好地借鉴 ...
- Java 8 新特性终极版
声明:本文翻译自Java 8 Features Tutorial – The ULTIMATE Guide,翻译过程中发现并发编程网已经有同学翻译过了:Java 8 特性 – 终极手册,我还是坚持自己 ...
- Java 8 新特性——Lambdas 表达式
本文内容 引入 测试数据 collect(toList()) map filter flatMap max 和 min reduce 整合操作 参考资料 Java 8 对核心类库的改进主要包括集合类的 ...
- Lithium中关键特性更新
Lithium中关键特性更新 1. Lithium特性更新概述 Lithium相对于Helium更新特性共27项,其中原有特性提升或增强13项,新增特性14项,如下表所示 特性类型 相对于Helium ...
- Java 8 新特性终极指南
1.前言 毫无疑问,Java 8的发布是自从Java5以来Java世界中最重大的事件,它在编译器.工具类和Java虚拟机等方面为Java语言带来的很多新特性.在本文中我们將一起关注下这些新变化,使用实 ...
- Java 11 新特性介绍
Java 11 已于 2018 年 9 月 25 日正式发布,之前在Java 10 新特性介绍中介绍过,为了加快的版本迭代.跟进社区反馈,Java 的版本发布周期调整为每六个月一次——即每半年发布一个 ...
- Java 8 新特性——实践篇
Java 8 新特性--实践篇 参考 Java8新特性 重要更新:Lambda 表达式和Stream API Lambda 表达式 Lambda 表达式引入之前: 举个场景例子:当我们要对一个班级里的 ...
- Java 12 新特性介绍,快来补一补
Java 12 早在 2019 年 3 月 19 日发布,它不是一个长久支持(LTS)版本.在这之前我们已经介绍过其他版本的新特性,如果需要可以点击下面的链接进行阅读. Java 11 新特性介绍 J ...
- InnoDB关键特性学习笔记
插入缓存 Insert Buffer Insert Buffer是InnoDB存储引擎关键特性中最令人激动与兴奋的一个功能.不过这个名字可能会让人认为插入缓冲是缓冲池中的一个组成部分.其实不然,Inn ...
随机推荐
- python3: 字符串和文本(3)
11. 删除字符串中不需要的字符 strip() 方法能用于删除开始或结尾的字符: lstrip() 和 rstrip() 分别从左和从右执行删除操作 >>> s = ' hell ...
- You may experience an access violation when you access an STL object through a pointer or reference in a different DLL or EXE
Symptoms When accessing an STL object created in one DLL or EXE through a pointer or reference in a ...
- Eclipse插件安装方法大全
1. M2e maven2插件安装 参考地址:http://www.sonatype.com/books/m2eclipse-book/reference/install-sect-marketpla ...
- 【笔记】关于TCP三次握手和四次挥手的理解
1. 三次握手: 服务器一定处于Listen状态,否则客户端发过来的连接会被拒绝.注:服务器和客户端的角色是相对的. 客户端发送第一次握手(客户端发送连接请求(SYNC包)到服务器)之后由Closed ...
- dotnet core入门
dotnet 命令 C:\Users\yshuangj\Desktop\dotnet>dotnet Usage: dotnet [options]Usage: dotnet [path-to-a ...
- 1090. [SCOI2003]字符串折叠【区间DP】
Description 折叠的定义如下: 1. 一个字符串可以看成它自身的折叠.记作S S 2. X(S)是X(X>1)个S连接在一起的串的折叠.记作X(S) SSSS…S(X个S). ...
- Day4 数组
双重for循环 外循环控制行,内循环控制列. //乘法表 ; i <= ; i++) { ; j <= i ;j++) { System.out.print(j+"*" ...
- 【node.js】函数、路由
Node.js中函数的使用与Javascript类似,一个函数可以作为另一个函数的参数.我们可以先定义一个函数,然后传递,也可以在传递参数的地方直接定义函数. function say(word) { ...
- ethers.js-2-wallets and signers
Application Programming Interface (API) Wallets and Signers A Wallet manages a private/public key pa ...
- UNIX网络编程之旅-配置unp.h头文件环境
最近在学习Unix网络编程(UNP),书中steven在处理网络编程时只用了一个#include “unp.h” 相当有个性并且也很便捷 于是我把第三版的源代码编译实现了这个过程,算是一种个性化的开 ...