说明:重温Java系列是本人结合资料重新学习Java时整理的笔记,主要参考资料如下,如有侵权,请联系删除!
参考资料:
- 高淇 Java300集视频
- Java 核心卷一
- 码出高效Java开发手册
- 明解Java
- Oracle官方教程
说明:本系列以高淇Java300集视频为主线,形成整体的知识体系,然后通过所列资料对知识点补充、修改;如有遗漏,错误,请指正!
本章目录:
- Java版本介绍
- Java的特点
- Java运行机制
- JVM、JRE和JDK
- Java程序员入门仪式
正文
1.Java版本介绍
Java分为以下三个版本:
JavaSE(Java Standard Edition):标准版,定位于客户端,主要用于桌面或简单服务器的应用开发,这个版本是Java平台的核心,它提供了丰富的API(Application Program Interface, 应用程序接口)来开发相关应用,包括用户界面接口AWT及Swing、网络功能与国际化、图像处理以及输入输出等。
JavaEE(Java Enterprise Edition):企业版,定位于复杂服务器应用的开发,主要用于分布式网络程序开发,比如阿里巴巴的电子商务网站。
JavaME(Java Micro Edition):微型版,定位于手机和其他小型设备的应用开发。
三个版本之间的关系,如图所示:
2.Java的特点
Java是一种高级语言,具备以下特点:
- Simple 简单
- Object oriented 面向对象
- Distributed 分布式
- Multithreaded 多线程
- Dynamic 动态性
- Architecture neutral 体系结构中立
- Portable 可移植性
- High performance 高性能
- Robust 健壮性
- Secure 安全性
以上10个特点摘自Oracle官方教程,仅作了解即可。
3.Java运行机制
Java最大的优势就是跨平台,而跨平台主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行,Java虚拟机中的Java解释器负责将字节码文件解释成为特定的机器码进行运行。
跨平台其实是通过在不同的操作系统上安装相应的虚拟机实现。下面可以来看一下Java运行机制。
首先要知道目前编程语言主要分为:编译型和解释型,而Java则是两者的结合。
Java的源文件(Source File)的后缀名为.java;需要通过编译器(javac)将源文件编译(Compile)成以.class为后缀名的字节码文件;最后通过虚拟机(Java解释器)解释执行。
正是因为虚拟机可以安装在不同的操作系统中(操作系统的不同是因为计算机只认识二进制的机器语言,并且不同平台的计算机,其机器语言指令都是不同),通过虚拟机将Java源码编译成.class文件然后解释成对应平台认识的机器语言,所以Java程序可以在不同操作系统上运行。(.class二进制文件是平台独立的结构中立的)
Java跨平台的原理,简单总结一下:
- 一次编译,到处运行
- 编译器:将源码编译成class文件
- 虚拟机:将class文件的字节码解释成对应平台的机器语言并执行
- 解释器是虚拟机的一个重要组成部分
- Java语言的执行的需要经过编译和解释两个阶段。
4.JVM、JRE和JDK
JVM(Java Virtual Machine)就是一个虚拟的用于执行字节码的“虚拟计算机”。它定义了指令集、寄存器集、结构栈、垃圾收集堆、内存区域。JVM负责将Java字节码解释执行,边解释边运行,速度就会受到一定的影响。
不同的操作系统有不同的虚拟机。Java虚拟机机制屏蔽了底层运行平台的差异,实现了跨平台,也就是“一次编译,随处运行”。
JRE(Java Runtime Environment)就是Java运行环境,包含Java虚拟机(JVM)、库函数、运行Java应用程序所须的文件。
JDK(Java Development Kit)就是Java开发工具包,包含JRE以及编译器和调试器等用于程序开发的文件。
Java虚拟机总结:
• JVM是Java Virtual Machine(Java虚拟机)的缩写
• JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
• JVM就是一个虚拟的用于执行bytecodes字节码的计算机
• Java虚拟机是Java最核心技术,也是跨平台的基础。
• Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
• Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因
补充:
平台是程序运行的软硬件环境,前面说过Java也是一个平台,只不过Java是一个基于硬件基础上的纯软件平台。Java平台包括两部分:
- The Java Virtual Machine Java虚拟机
- The Java Application Programming Interface(API) Java应用程序接口
前面已经介绍了Java虚拟机,是Java语言的核心基础;
API是一个提供了大量现成软件组件的集合,提供了许多有用的功能。它被分为相关类和接口的库;这些库称为包。
Java虚拟机和API使Java程序和底层硬件相互隔离,所以Java程序可以不用过多的关注底层硬件;但是这也使Java语言运行会慢了一点。随着硬件性能提升和Java平台的不断优化,Java语言的速度不会成为限制其发展的瓶颈。
5.Java程序员入门仪式
Java开发的准备:
- 安装JDK
Java是一门面向对象的编程语言,其最大的优势就是“跨平台”,想要实现跨平台,必须安装Java必备的运行环境,而对于Java开发人员来说不但要安装运行环境,还要安装Java的开发工具,具体的安装过程参考:https://blog.youkuaiyun.com/u012187452/article/details/72595040#comments - 安装Java开发工具
常用Java开发工具
• 文本编辑器(选择任意一个)
• UltraEdit
• EditPlus
• notepad++
• 集成开发环境(IDE:Integrated Development Environment)
• JBuilder (http://www.borland.com)(基本淘汰)
• Eclipse (http://www.eclipse.org)****开源 解压即可(重点)
• MyEclipse:若进行J2EE开发,还要加MyEclipse插件。MyEclipse是Eclipse的插件,也是一款功能强大的J2EE集成开发环境。现在直接安装集成Eclipse的MyEclipse即可。商业软件
• NetBeans(http://java.sun.com)
• IntelliJ IDEA(https://www.jetbrains.com/idea/)(强烈推荐)
第一个Java程序
/**
* Created by lining on 2019/6/15.
*
* The HelloWorld class implements an application that
* simply prints "Hello World! I am Coming!" to standard output.
*/
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World! I am Coming!"); // Display the string.
}
}
运行结果:
我们来分析一下这个代码
我们可以发现这部分源码主要包括三部分:源码注释、类定义和Main方法。
第一部分:源码注释
/**
* Created by lining on 2019/6/15.
*
* The HelloWorld class implements an application that
* simply prints "Hello World! I am Coming!" to standard output.
*/
这部分就是源码的注释,用来说明源码的作用,可以提高源码的可读性。Java编译器在编译源码是会跳过注释,所以注释不会出现在字节码文件中。
Java提供了三种注释:
/* text */
多行注释 Java 编译器会忽略 /和/之间的内容,多行注释也叫作传统注释(traditional comment),这是因为其注释形式和C语言的注释形式相同
/** documentation */
文档注释(documentation comment) Java编译器同样会忽略/** 和*/之间的内容;可以通过JDK提供的Javadoc命令,生成程序的API文档。
// text
单行注释(end of line comment)注释内容从//到本行结尾
第二部分:类定义
// 这是程序的类定义
public class HelloWorld {
}
上面代码的意思就是名称为HelloWorld的类(class)的类定义或类声明(class declaration)。class关键字后面就是类名称,类名称后面会紧跟着一对大括号{},{}中间的代码就是Java源码。
第三部分:main方法
public static void main(String[] args) {
// java语句
}
这就是main方法的定义,每一个独立的Java应用程序都必须有main方法。
- 修饰符public和static的组合可以是public static或者static public,一般约定使用public static;方法的入参名称可以随意,但是一般都是args或者argv。
- Main方法和C、C++语言的Main方法相像,都是程序的入口,main方法可以调用其他方法。
- Main方法接受一个入参,类型是字符串数组