Java介绍
# Java的出现
Java是在上世纪90年代,由高斯林(Java之父)开发的一门编程语言。
Java最初的名字叫Oak,目标是在家用电器等小型系统进行控制和通信,比如说电视机、电话、烤面包机。
高斯林万万想不到智能化家电的市场没有发展的很快,而Sun公司只能砍掉Oak的研发项目了。但是过了没多久,互联网就发展起来了,于是Sun公司改造了Oak,于1995年5月以Java的名称正式发布。
随着互联网和千禧年的到来,Java也成了千万平台的首选开发语言。
为什么有了C、C++还要用Java呢?
最初,高斯林试图修改和扩展C++的功能,但是后来他放弃了。
他发现C++缺少垃圾回收系统,还有可移植的安全性、分布程序设计、和多线程功能。最后,他想要一种易于移植到各种设备上的平台。
# Java版本
目前Java提供以下三个版本:
- Java Platform, Enterprise Edition(Java EE:Java平台企业版)
- Java Platform, Standard Edition(Java SE:Java平台标准版)
- Java Platform, Micro Edition(Java ME:Java平台微型版)
三者关系:
┌───────────────────────────┐
│Java EE │
│ ┌────────────────────┐ │
│ │Java SE │ │
│ │ ┌─────────────┐ │ │
│ │ │ Java ME │ │ │
│ │ └─────────────┘ │ │
│ └────────────────────┘ │
└───────────────────────────┘
Java ME的初衷轻量级的Java库,目的是针对小型的系统,但是现在都是Android的天下了。
Java SE就是标准版,也是我们学习的主要版本,可以开发一般的桌面程序(图形界面,如Swing、GUI、JFrame这些),部署在服务器、嵌入式环境,比如说eclipse就是SWT+JFace开发的,IDEA就是Swing开发的。主要的库是lang包、util包、io/nio包等14个包、包装类、collection、concurrent并发包、函数式接口、反射、注解等。
Java EE 就是企业版,是个大杂烩,包括Applet、EJB、JDBC、JNDI、Servlet、JSP等技术的标准,运行在一个完整的应用服务器上,可以理解为现在所说的JavaWeb。随着互联网的发展,衍生出spring、SpringBoot这些框架、中间件、JDBC、 Hibernate 等等,也是Java EE的一部分。特别是在找工作的时候,企业特别看重的能力。
# Java发展历程
- 1995年5月23日,Java语言诞生
- 1996年1月,第一个JDK (opens new window)-JDK1.0 (opens new window)诞生
- 1996年4月,10个最主要的操作系统 (opens new window)供应商申明将在其产品中嵌入JAVA技术
- 1996年9月,约8.3万个网页应用了JAVA技术来制作
- 1998年2月,JDK1.1被下载超过2,000,000次
- 1999年6月,SUN公司发布Java的三个版本:标准版(J2SE (opens new window))、企业版(J2EE (opens new window))和微型版(J2ME (opens new window))
- 2000年5月8日,JDK1.3发布
- 2000年5月29日,JDK1.4 (opens new window)发布
- 2001年6月5日,NOKIA (opens new window)宣布,到2003年将出售1亿部支持Java的手机(以前玩的手机游戏基本都是Java开发的)
- 2001年9月24日,J2EE1.3 (opens new window)发布
- 2002年2月26日,J2SE1.4 (opens new window)发布,自此Java的计算能力有了大幅提升
- 2004年9月30日18:00PM,J2SE1.5 (opens new window)发布,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE1.5 (opens new window)更名为Java SE 5.0
- 2005年6月,JavaOne大会 (opens new window)召开,SUN公司公开Java SE 6。此时,Java的各种版本已经更名,以取消其中的数字“2”:J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME
- 2006年12月,SUN公司发布JRE6.0
- 2009年12月,SUN公司发布Java EE 6
- 2010年11月,由于Oracle公司对于Java社区的不友善,因此Apache扬言将退出JCP[14] (opens new window)
- 2011年7月28日,Oracle公司发布Java SE 7
- 2014年3月18日,Oracle公司发表Java SE 8
- 2017年9月21日,Oracle公司发表Java SE 9
- 2018年3月21日,Oracle公司发表Java SE 10
- 2018年9月25日,Java SE 11发布
- 2019年3月19日,JDK 12 发布
- 2019年9月13日,JDK 13 发布
- 2020年3月17日,JDK 14 发布
一门语言是否会衰退,可以用更新频率来判断。
# Java的特点
# 1、面向对象
Java的特点之一就是面向对象,这也是封装的说法,同一类事物的共性(包括属性和方法)归到同一类中,方便使用。对对象进行操作而不是直接操作变量。
# 2、跨平台性
跨平台使得用Java语言编写的程序可以在编译后不用经过任何更改,就能在任何硬件设备条件下运行。这个特性经常被称为“一次编译,到处运行”。
这主要是依赖Java 运行时环境(Java Runtime Environment,JRE)实现的,通过JVM才能在电脑系统执行Java应用程序(Java Application),这与 .Net Framework
的情况一样,所以电脑上没有安装JVM,那么这些java程序将不能够执行。
简单的说就是你在本地开发打包,部署到服务器,只要服务器安装了JRE,你的代码就能在服务器运行了。成功地实现了“一次编译,到处运行”。
# 3、自动垃圾回收
C++语言被用户诟病的原因之一是大多数C++编译器不支持垃圾收集机制。通常使用C++编程的时候,程序员于程序中初始化对象时,会在主机存储器堆栈上分配一块存储器与地址,当不需要此对象时,进行析构或者删除的时候再释放分配的存储器地址。
Java语言则不同,上述的情况被自动垃圾收集功能自动处理。对象的创建和放置都是在存储器堆栈上面进行的。当一个对象没有任何引用的时候,Java的自动垃圾收集机制就发挥作用,自动删除这个对象所占用的空间,释放存储器以避免存储器泄漏。
总结Java特性就是:
面向对象(封装,继承,多态)
平台无关性(JVM运行.class文件)
语言(泛型,Lambda)
类库(集合,并发,网络,IO/NIO)
JRE(Java运行环境,JVM,类库)
JDK(Java开发工具,包括JRE,javac,诊断工具)