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 ...
随机推荐
- September 17th 2017 Week 38th Sunday
Distance could make you forget about them, but the memories would always be there. 距离会让你遗忘,但是回忆却始终在那 ...
- ganache-cli
安装: npm install -g ganache-cli@6.1.8 使用: userdeMacBook-Pro:~ user$ ganache-cli -m "success rifl ...
- 网页里面出现"$#2342"类似这样 应该怎么转义过来?
Python2 from HTMLParser import HTMLParser print HTMLParser().unescape('【竞彩足球')
- Java反射学习二
利用反射进行对象拷贝的例子 如下例程ReflectTester类进一步演示了Reflection API的基本使用方法. ReflectTester类有一个copy(Object object)方法, ...
- Python基本知识3----序列
前言: 序列:列表/元组/字符串 3种序列的共同点: 都可以通过索引得到每一个元素 默认索引值从0开始(还支持负数) 都可以通过切片的方式得到范围内的元素的集合 有很多共同的操作符(重复操作符.拼接操 ...
- 用C++编写发布器和订阅器节点
1.转移到之前教程在catkin工作空间所创建的package路径下: $ roscd package_name/ 例子:$ roscd practice/2.在package路径下创建src目录: ...
- c模拟银行家资源分配算法
#include<stdio.h> #define PNUMBER 5//进程个数 #define SNUMBER 3//资源种类个数 //资源的种类,三种 char stype[SNUM ...
- [图解tensorflow源码] TF系统概述篇
Rendezvous 1. 定义在core/framework/rendezvous.h 2. A Rendezvous is an abstraction for passing a Tensor ...
- Object C学习笔记12-集合
这里讲到的集合是指Set集合,其实Array也是一种类型的集合.在Object C中提供了两个集合类NSSet和NSMutableSet.其实NSSet和NSArray性质一样,都是用于存储对象的. ...
- 关于安装时无法重启rabbitmq服务
如图重启时找不到rabbitmq, 解决办法: rabbitmqctl stop :停止rabbitmq rabbitmq-server restart : 重启rabbitmq 这两步就可以完成重 ...