文章目录

  • 一、Java语言的出现
  • 二、Java语言的发展
  • 三、Java语言的概念
  • 四、Java"白皮书"的关键术语
    • 3.1简单性
    • 3.2面对对象(封装、继承、多态)
    • 3.3安全性
    • 3.4健壮性
    • 3.5可移植性
    • 3.6高性能
    • 3.7多线程
    • 3.8分布式
    • 3.9解释与编译并行
    • 3.10支持网络编程

“不学古人,无以明今;不学今人,无以立古。” —— 朱熹《诗言志林·诗学杂谈》。

一、Java语言的出现

1991年,成立了一个称为Green的项目小组,小组成员有:帕特里克、詹姆斯·高斯林、麦克·舍林丹和其他几个工程师

他们一起组成的工作小组在加利福尼亚州门洛帕克市沙丘路的一个小工作室里面研究开发新技术,专攻计算机—在家电产品上的嵌入式应用。

由于C++所具有的优势,该项目组的研究人员首先考虑采用C++来编写程序。但对于硬件资源极其匮乏的单片式系统来说,C++程序过于复杂和庞大。

为了解决困难,他们首先着眼于语言的开发,对于新语言的设计,Sun公司研发人员并没有开发一种全新的语言,而是根据嵌入式软件的要求,对C++进行了改造,去除了留在C++的一些不太实用及影响安全的成分,并结合嵌入式系统的实时性要求,开发了一种称为Oak的面向对象语言

1994年将Oak语言更名为Java

二、Java语言的发展

年份 说明
1994 Java语言诞生
1996.1 JDK 1.0 开发代号为 Oak ( 橡树 )。
1997.2 JDK1.1发布,引入JDBC(Java Database Connectivity)、支持内部类、引入Java Bean、 引入RMI(Remote Method Invocation)、引入反射(仅用于内省)。
1999.6 SUN公司发布Java的三个版本:标准版(J2SE)、企业版(J2EE)和微型版(J2ME)
2000.5 JDK1.3发布,JDK动态代理(常用)
2000.5 JDK1.4发布,引入了NIO(Non-Blocking IO)(常用)。
2001.9 J2EE1.3发布,引入的新特性包括、引入Java Sound API、jar文件索引;、对Java的各个方面都做了大量优化和增强。
2002.2 J2SE1.4发布,XML处理;Java打印服务;引入Logging API;引入Java Web Start;引入JDBC 3.0 API;引入断言;引入Preferences API;引入链式异常处理;支持IPv6;支持正则表达式;引入Image I/O slot machine API。
2004.9 JDK 1.5,自动拆箱/装箱(Auto Inbox/Outbox)(常用)、枚举(Enum)(常用)、静态导入 (static import)、可变参数列表 (var args)(常用)、范型(Generic)(常用)、增强for循环(for-each)(常用)、注解(Annotation)(常用)、协变返回类型:实际返回类型可以是要求返回类型的一个子类、concurrent并发包(Doug leg)(常用)
2006.12 JDK 1.6,支持脚本语言;引入JDBC 4.0 API;引入Java Compiler API;可插拔注解;增加对Native PKI(Public Key Infrastructure)、Java GSS(Generic Security Service)、Kerberos和LDAP(Lightweight Directory Access Protocol)的支持;继承Web Services;做了很多优化。
2011.7 JDK 1.7,Switch支持String(常用)、try … with … resource(常用)、范型类型自动推断(常用)、多重catch(常用)、数字可用下划线分割
2014.3 JDK 1.8,接口默认方法(常用)、lambda表达式(常用)、函数式接口(常用)、Stream API(常用)、新的日期工具类(常用)、Optional工具判断(常用)
2017.9 JDK 1.9,模块化、改进 Stream API、支持私有接口方法、多版本兼容、集合工厂方法,优化集合初始化(常用)
2018.03 JDK10,局部变量类型推断(常用)、并行full gc的G1、基于实验Java的JIT编译器
2018.09 JDK11,增加一些实用API(常用)、HttpClient增强(常用,已转换为正式版)、ZGC、完全支持Linux容器(常用)
2019.03 JDK12,Switch Expression优化、
2019.09 JDK13,字符串拼接优化
2020.03 JDK14,witch优化变为最终版、gc相关优化、instanceof 扩展 (preview)、
2020.09 JDK15,引入了Record类型,解决定义大量get/set方法的问题、
2021.03 JDK16,instanceof 增强确定为最终版本、Records确定为最终版本、将JDK移植到Windows/AArch64平台。提供用于打包独立的Java应用程序的jpackage工具。
2021.09 JDK17,JDK 内部的强封装、删除远程方法调用 (RMI) 激活机制、删除实验性 AOT 和 JIT 编译器、弃用 Applet API 以进行删除…等。

三、Java语言的概念

Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。

Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。

Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 。

Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等 。

四、Java"白皮书"的关键术语

3.1简单性

可以理解 Java 语法是 C++ 语法的一个“纯净版本”,它继承了 C++ 的优点,并去掉了 C++ 里难以理解的头文件、指针运算等概念,使 Java 语言学习起来更简单,使用起来也更方便(不过,如今的 Java 复杂程度,还是远远超过了一部分的编程语言);

简单性的另一方面提现是“小”,Java 的目标之一是支持开发能在小型机器独立运行的软件。基本的解释器以及类支持大约仅为 40KB,再加上基础的标准类库和对线程的支持(基本上是一个自包含的微内核),大约需要增加 175KB,在当时,这是一个了不起的成就(当然,由于不断地扩展,类库已经相当庞大了)。

3.2面对对象(封装、继承、多态)

面向对象: 万物皆对象的一个编程思想,生活中的任何一个物体都可以是一个对象。

对比面向过程: 面向对象不注重事情中的每一个步骤和顺序,它更注重于事情中的参与者(对象),和对象需要做什么。(面向过程直接和高效,面向对象更易于扩展、复用、维护)。例如洗衣服。

3.3安全性

Java 要适用于网络/分布式环境。为了实现这个目标,安全性颇受重视。使用 Java 可以构建防病毒、防篡改的系统。从一开始 Java 就设计成能够防范各种攻击 , 其中包括 :①运行时堆栈溢出(蠕虫和病毒常用的攻击手段)、②破坏自己的进程空间之外的内存、③未经授权读写文件 。

3.4健壮性

Java 非常强调进行早期的问题检测、后期动态的(运行时)检测,以及消除容易出错的情况 …

Java 编译器能够检测许多在其它语言中仅在运行时才能检测出来的问题。至于第二点,对于曾经花费几小时来检测由于指针 Bug 而引起内存冲突的人来说,一定很喜欢 Java 这一特性。目前许多第三方交易系统、银行平台的前台和后台电子交易系统等都会用 Java 语言开发。

3.5可移植性

Java 并不依赖平台,用 Java 编写的程序可以运用到任何操作系统上;一次编译,到处运行。(例如,Java 中的 int 永远为 32 位的整数,而在 C/C++ 中,int 可能是 16 位整数、32 位整数,也可能是编译器开放商指定的任何其他大小)。

3.6高性能

字节码可以 ( 在运行时刻 ) 动态地翻译成对应运行这个应用的特定 CPU的机器码。

3.7多线程

多线程可以带来更快的交互响应和实时行为。

3.8分布式

Java 有一个丰富的例程库,用于处理像 Http 和 Ftp 之类的 TCP/IP 协议。Java 应用程序能通过 URL 打开和访问网络上的对象,其便捷程度就好像访问本地文件一样。

3.9解释与编译并行

Java 程序(后缀名为 .java 的文件)在 Java 平台上被编译为体系结构中立的字节码格式(后缀名为 .class 的文件),然后可以在实现这个 Java 平台的任何系统中运行。精心设计的字节码不仅可以很容易的在任何机器上解释执行,而且还可以动态的转换为本地机器代码。

3.10支持网络编程

Java基础:Java语言简介相关推荐

  1. Java基础——Java多继承的三种实现方式

    Java基础--Java"多继承"的三种实现方式 Java语言本身只支持单继承(每个类只能有一个父类),但单继承的局限性很大,因此,可以通过以下的方式实现"多继承&quo ...

  2. Java基础----Java编程语言概述

    Java基础----Java编程语言概述 文章目录 Java基础----Java编程语言概述 Java编程语言概述 1-1 软件开发介绍 1.1软件开发介绍 1.2 常用命令 1-2 计算机编程语言介 ...

  3. Java基础-Java中的堆内存和离堆内存机制

    Java基础-Java中的堆内存和离堆内存机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 转载于:https://www.cnblogs.com/yinzhengjie/p/9 ...

  4. Java基础-JAVA中常见的数据结构介绍

    Java基础-JAVA中常见的数据结构介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是数据结构 答:数据结构是指数据存储的组织方式.大致上分为线性表.栈(Stack) ...

  5. Java基础-Java中的内存分配与回收机制

    Java基础-Java中的内存分配与回收机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一. 二. 转载于:https://www.cnblogs.com/yinzhengji ...

  6. [重学Java基础][Java IO流][Exter.2]IO流中几种不同的读写方法的区别

    [重学Java基础][Java IO流][Exter.2]IO流中几种不同的读写方法的区别 Read 读入方法 read(): 一般是这种形式 public int read() 1.从流数据中读取的 ...

  7. JAVA基础--JAVA SE(知识点总结 Ⅴ )

    前面内容请见: JAVA基础–JAVA SE(知识点总结 Ⅰ ) JAVA基础–JAVA SE(知识点总结 Ⅱ ) JAVA基础–JAVA SE(知识点总结 Ⅲ ) JAVA基础–JAVA SE(知识 ...

  8. Java基础-Java中常用的锁机制与使用

    Java基础-Java中常用的锁机制与使用 锁lock或互斥mutex是一种同步机制,主要用于在存在多线程的环境中强制对资源进行访问限制.锁的主要作用为强制实施互斥排他以及并发控制策略.锁一般需要硬件 ...

  9. Java基础----Java语言简介

    1.什么是Java语言 Java语言是SUN(Stanford University Network,斯坦福大学网络公司 ) 1995年推出的一门高级编程语言,是一种强类型语言. Java是一门面向对 ...

  10. Java基础----JAVA语言的概述和开发环境的搭配

    01 JAVA语言的概述和开发环境的搭配 JAVA语言简介 创始人:詹姆斯.高斯林 历史:起初属于sun公司,由高斯林与其合伙人研发而出,用于在各种移动设备上进行程序开发设计,初始起名为green,后 ...

最新文章

  1. javascript的原始类型(primitive type)之间的关系。
  2. andy the android ppt,新概念同步测试1.ppt
  3. 深入理解 Java G1 垃圾收集器--转
  4. 微软引入linux内核,微软内部已在讨论Linux内核中加入exFAT的可能性
  5. raspberry pi_我如何使用Raspberry Pi与孙辈联系
  6. (转) 淘淘商城系列——CMS内容管理系统工程搭建
  7. Android 功耗(10)---电流波形图(power monitor)
  8. linux shell tr,shell脚本 之 tee tr
  9. python维度不一样_numpy数组维度不匹配
  10. java 菜刀_Java中国菜刀(Cknife)的模拟终端乱码解决方法 | 【韩涛博客】
  11. 日常笔记-snownlp情感分析计算情感得分
  12. ipad4越狱显示服务器维修,iPad越狱后怎么恢复出厂设置及恢复中所出现问题的解决方法...
  13. 天工杂志天工杂志社天工编辑部2022年第25期目录
  14. C++类学习---------step1
  15. 织梦dedecms百度快照劫持注入代码防范与清除
  16. keil5黑色主题配色方案
  17. 时间记录APP———Time Meter
  18. File “C:\Users\hjl\AppData\Local\Programs\Python\Python38\lib\site-packages\pymysql\err.py“, line 1
  19. Objective-C学习资源
  20. katex常用公式符号一览表

热门文章

  1. 2021年中国电动剃须刀行业发展现状分析,行业高端化趋势明显「图」
  2. AutoCAD2006激活方法
  3. 多面张亚勤:导师、管理者和普通人
  4. Arrays.asList()
  5. 电池寿命问题 (贪心)
  6. html可以自学吗,javascript可以自学吗?
  7. 将一个实体类复制到另一个实体类
  8. python培训价格多少呢-python培训得花多少钱呢?
  9. Xamarin是无懈可击还是鸡肋?浅谈对Xamarin的学习
  10. 华为云-容器引擎CCE-部署Nginx应用