Java概述
1.什么是Java
我先问大家一个问题,我们人和人沟通用什么语言?是不是用中文,英文,俄语,西班牙语等等。那么我们人和计算机可以用中文,英文等这些语言和计算机沟通吗?答案肯定是否定的,因为计算机根本不知道我们人类说的是什么。所以是不是要发明一种语言用于人和计算机沟通呢?
这个时候我们聪明的人类就发明了计算机编程语言Java,用于人和计算机沟通。
那么Java除了可以用来做人和计算机沟通的桥梁外还有什么其它功能呢?
1.开发桌面应用程序,比如QQ,微信
2.开发搭建Web应用程序,比如电商网站淘宝,京东
3.开发企业应用程序,比如银行的ATM系统,支付系统
4.Android移动端应用程序,比如手机端的QQ和微信
5.物联网系统,比如车联网和智能家居
6.游戏,比如王者荣耀
2.Java发展史
年份 | Java发展史 |
---|---|
1995 | Java语言诞生 |
1996 | JDK1.0发布,10个最主要的操作系统供应商声明将在其产品中支持Java |
1997 | JDK1.1发布 |
1998 | JDK1.1下载量超过200万次,JDK1.2发布,JFC/Swing技术发布,JFC/Swing被下载50万次 |
1999 | Java被分成J2SE,J2EE和J2ME,JSP/Servlet技术诞生 |
2000 | JDK1.3,JDK1.4发布 |
2001 | Nokia公司宣布到2003年将出售1亿部支持Java的手机,J2EE1.3发布 |
2002 | JDK1.4发布,自此Java的计算能力有了大幅度提升。J2EE SDK的下载量达到200万次 |
2003 | 5.5亿台桌面机上运行Java程序,75%的开发人员将Java作为首要开发工具 |
2004 | JDK1.5发布,只是Java语言发展史上的又一里程碑事件。为了表示这个版本的重要性,JDK1.5更名为JDK5.0 |
2005 | JavaOne大会召开,Java的各种版本被更名,取消其中的数字"2":J2EE更名为JavaEE,J2SE更名为JavaSE,J2ME更名为JavaME |
2006 | JDK6发布 |
2009 | Sun公司被Oracle公司收购 |
2011 | JDK7发布 |
2014 | JDK8发布,对Java语言特性做了重大改进,增加了Lambda表达式 |
2017 | 2017-9-22 JDK9发布 |
2018 | 2018-3-21 JDK10发布 |
2018 | 2018-09-25 JDK11发布 |
2019 | 2019-3-19 JDK12发布 |
2021 | 2021-9-14 JDK17发布, 按照发布规划,JDK/Java 17 属于长期支持版本 (LTS),将会获得 8 年的技术支持,直至 2029 年 9 年。 Spring 官方也宣布,Spring framework 6 和Spring Boot 3 都将基于JAVA 17 |
2022 | 2022-03-22 JDK18发布 |
2022 | 2022-09-20 JDK19发布,此版本为Java最新版本,将虚拟线程引入Java平台。虚拟线程是轻量级线程,可以大大减少编写、维护和观察高吞吐量并发应用程序的工作量,这是一个预览API。引入一个API,通过该API,Java程序可以与Java运行时之外的代码和数据进行互操作。通过有效地调用外部函数(即JVM外部的代码),并通过安全地访问外部内存(即不由JVM管理的内存),API使Java程序能够调用本机库并处理本机数据,而不会出现JNI的脆弱性和危险性,这是一个预览API。 |
3.Java的特点
很多大型的互联网公司和金融行业都在使用 Java,国内最有名的当属阿里巴巴,国外最有名的当属Google。那为什么 Java 如此流行呢?
1)简单性
Java 为开发者提供了简单易用的应用程序接口(API),与其他面向对象编程语言相比,Java 的设计和生态库具有巨大的优势。Java 剔除了 C++ 中很少使用、难以理解、易混淆的技术点,比如说指针运算、操作符重载,内存管理等。
Java 可以做到堆栈分配、垃圾回收和自动内存管理,在一定程度上为开发者减轻了入门的难度。
2)可移植性
如果 Java 直接编译成操作系统能识的机器码,可能一个标识在 Windows 操作系统下是1100,而 Linux 下是 1001,这样的话,在 Windows 操作系统下可以运行的程序到了 Linux 环境下就无法运行。
为了解决这个问题,Java 先编译生成字节码,再由 JVM(Java 虚拟机)来解释执行,目的就是将统一的字节码转成操作系统可以识别的二进制码,然后执行。而针对不同的操作系统,都有相应版本的 JVM,所以 Java 就实现了可移植性。
3)安全性
Java 适用于网络/分布式环境,为了达到这个目标,在安全方面投入了巨大的精力。使用 Java 可以构建防病毒、防篡改的程序。
从一开始,Java 就设计了很多可以防范攻击的机制,比如说:
- 运行时堆栈溢出,这是蠕虫病毒常用的攻击手段。
- 字节码验证,可以确保代码符合 JVM 规范并防止恶意代码破坏运行时环境。
- 安全的类加载,可以防止不受信任的代码干扰 Java 程序的运行。
- 全面的 API 支持广泛的加密服务,包括数字签名、消息摘要、(对称、非对称)密码、密钥生成器。
- 安全通信,支持 HTTPS、SSL,保护传输的数据完整性和隐私性。
4)并发性
Java 在多线程方面做得非常突出,Java语言内置了对多线程的支持,只要操作系统支持,Java 中的线程就可以利用多个处理器,带来了更好的交互响应和实时行为。
4.Java 程序从源代码到运行主要有三步
- 编译:将我们的代码(.java)编译成虚拟机可以识别理解的字节码(.class)
- 解释:虚拟机执行 Java 字节码,将字节码翻译成机器能识别的机器码
- 执行:对应的机器执行二进制机器码
5.JDK,JRE,JVM三者之间的关系
5.1 JDK
JDK(Java Development Kit)是Java开发工具包的英文简称,主要用于开发Java应用程序,里面包含运行时环境(JRE),和其他开发Java应用程序所需要的工具比如编译器(javac),解释器(java),和文档生成器(javadoc)。另外还包含了我们平时做开发用到各种类库,比如Socket,IO,多线程等等。
5.2 JRE
JRE(Java Runtime Environment)是Java运行时环境英文简称,使用于运行Java应用程序的环境。如果只想运行Java应用程序,不做程序开发只安装JRE即可。
5.3 JVM
JVM (Java Virtual Machine) ,也就是 Java
虚拟机,由一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域等组成,屏蔽了不同操作系统(macOS、Windows、Linux)的差异性,使得Java能够“一次编译,到处运行”。
5.4 JDK官方下载地址
https://www.oracle.com/java/technologies/downloads/
5.5 安装一个集成开发环境 IntelliJ IDEA
IntelliJ IDEA 简称 IDEA,是业界公认为最好的 Java 集成开发工具,尤其是在代码自动提示、代码重构、代码版本管理、单元测试、代码分析等方面有着亮眼的发挥。
IDEA 产于捷克,开发人员以严谨著称的东欧程序员为主,分为社区版和付费版两个版本。如果只是学习 Java SE 社区版就足够用了。想要更多功能的话,比如说 Spring initializr 功能,需要下载付费版。
大家也可以在记事本上敲代码,在命令行中编译和执行 Java 代码,此方法有利也有弊,好的一方面就是能清楚的知道java到编写最后到机器执行的详细流程及原理,不好的地方就是编写代码及整体编译到执行流程繁琐。
鉴于此,我强烈推荐大家使用集成开发工具,比如说 IntelliJ IDEA 来学习,这样能大大提高学习的效率。
IDEA下载地址
https://www.jetbrains.com/idea/download/
5.6 编写第一个Java程序
5.6.1 IDEA中创建Java项目的流程
第一步打开 IDEA 选择Projects->new project
第二步选择 new project 然后点击 create创建工程
最后一步创建Java Class
5.6.2 第一个 Java 程序非常简单,代码如下:
/**
* 第一个java程序
*/
public class Helloworld {
public static void main(String[] args) {
System.out.println("第一个Java程序!");
}
}
5.6.1 代码说明
class:Java中定义类的关键字,如果要定义一个类必须使用该关键字。
public:Java中的访问修饰符,public代表在任何地方都能访问该类。
static:静态的意思,用该关键字修饰的方法代表属于类方法,直接使用类名称即可访问。
void:返回值类型,代表该方法没有返回值。
String[] args:String是Java中的数据类型,args为参数的名称。